I'm developing a web-application and I'm going to use docrine framework to manage, concurrent requests and transactional queries (like inserting or updating head and rows records).
For web necessities I thought to split operations in different steps: First step: I have a page that allows the user for inserting a HeadTable record and after that I send the information to the server, create a Entity and store it in a EntityManager with a persist function.
Second step: The user will edit and insert all the RowsTable records. When it's all done, like before, I send all the data to the server, create Entities and Associate them to the HeadTable record.
The final step: When the user confirm all he has done, I trigger the flush operation of the EntityManager and commit all to DataBase in a single atomic transaction. To keep all this steps toghether I put the EntityManager in a session variable and I remove it after the flush operation.
All seems to be fine but i would like to know if it's the correct way to resolve the problem or if there's a better way.