Thanks for your reply! I am not sure wether I made my point clear. Request 1 of me I want to save a new document assigned to the enabled user A. Before calling the document save method of the dao, user A is fetched and checked wether he is enabled in the service layer. Since request 1 isnt finished yet, user A is still enabled.
Request 2 of some other guy He wants to disable user A. Before calling the user save method of the dao, in the service layer it is checked wether any documents are assigned to the user. Since request 1 isnt finished yet, no documents can be found. Now both requests are successfull and in the database there is now a document assigned to a disabled user. So I had the permission to assign the document at the start of my request, but I hadnt at the end of my request when the table update is taking place. Id like to lock user A after he is being fetched in the service layer to check wether he is enabled until the new document is saved. Id like to lock user A before I check for assigned documents until the disabled user A is updated. Thats why I want to begin the transaction in the service layer. Regards René PS: I am still looking for something what is nicely done in a SAP based enviroment. There you can lock business objects. There can only be one lock on a business object at the same time. This locking is not done by the database, it is done by a lock server. http://help.sap.com/saphelp_nw70/helpdata/en/7b/f9813712f7434be10000009b38f8 cf/frameset.htm Von: Michael Horwitz [mailto:[EMAIL PROTECTED] Gesendet: Donnerstag, 31. Mai 2007 19:44 An: [email protected] Betreff: Re: [appfuse-user] DB Transactions in Service Layer? Is there any specific reason you want to disable the user mid-action? Presumably user actions are short lived, so if user A has the necessary permissions at the start of the request, it should stay that way until the next user request? Mike On 5/31/07, René Günther <[EMAIL PROTECTED]> wrote: If I call document.getUser().setVersion(null) Hibernate throws org.hibernate.StaleObjectStateException if the other guy disables User A. This could be a solution. But maybe this is the wrong approach? -----Ursprüngliche Nachricht----- Von: René Günther [mailto:[EMAIL PROTECTED] Gesendet: Donnerstag, 31. Mai 2007 17:57 An: [email protected] Betreff: [appfuse-user] DB Transactions in Service Layer? Hello, assume I got a webapp where documents are assigned to users. The user must be an enabled user. I want to assign a document to user A who is enabled when the service layer is processed: if (document.getUser.getEnabled()) dao.save(document); But it the very short time between the check in the service layer and the real table update in the database layer, some other guy disables user A. The update of the document should fail! So do I have to implement the check in database layer? What do you suggest? Can I lock the User instance in short time between document.getUser().getEnabled() and SQL statement to update the document? Thanks René --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
