I am writing a web based application with hibernate and jsp / servlet. I have read about the sessionFactory.getCurrentSession and sessionFactory.openSession methods. I know the basic difference between them (you do not have to close the connection using getCurrentSession and when you do a transaction, your session will automatically close). According to my understanding, we should choose the option for getCurrentSession and it should be done through a session-per-request
Consider this scenario:
- Method used to call a call
getCurrentSessionand the current session
- In Law A, using session from step 1 has started .
- Method A call method B, which also includes
getCurrentSessionand initiate the transaction - Method B reduces its transaction
- Returns on method A and also controls this transaction
Now my questions are
- Will the session be held in phase 1 and step 3 in the same session?
- If the answer to Question 1 is yes, how can I handle it in step 4? Ideally it should close its session and throw an exception in step 5.
- If question 1 is not answered, how do you want to handle this kind of scenario?
What sessions will be in session 1 and phase 3 in session? ?
They should be identical, which is part of the contract for getCurrentSession () and you will be bound with the session thread Unless the unit of work is completed (i.e. a transaction has been committed or refunded) Hibernate with Java compulsion This is how it is called (p.481):
All data-access codes that are
getCurrentSession ()Global sharedSansfinifierreaches the same currentsession- if it is said in the same thread when the work unit is completedtransactionis committed (or rolled back). Hibernation also stops flushes and currentsessionsand its persistence context. If you return or roll back the transaction here, the implication here is thatgetCurrentSession ()After a call or rollback, a newsessionand generates a fresh persistence reference.
And you can also read what the answer is.
If the answer to Question 1 is yes, then how will it be committed in step 4? Ideally this session should be closed, the error should be made in step 5.
Step 4 should not be a problem, session will be flushed, transaction will be committed and sessions will stop but I hope that to fail Phase 5 (this is my condition). But let me refer to this javadoc:
A transaction is associated with one session and usually for a call by
session.beginTransaction ()Is done immediately. Perception of any one session (an interaction between an application and a datastore) Percentage of transactions may be due to thick granularity due to the perception of a transaction. However, it is intended that at any time the most unearned transaction associated with a particular session .
As we have been underlined above, we are discussing something around this should not happen (i.e. a design problem).
Comments
Post a Comment