What is the difference between a session and a transaction in JPA 2.0?

user645579 picture user645579 · Mar 23, 2011 · Viewed 29.4k times · Source

I just begin my JPA 2.0 studies, and I have this piece of code:

em = SessionFactory.startSession();
tx = em.getTransaction();

My problem is: I'm not sure if I completly understand the difference between the use of a session and the use of a transaction. In a few lines, can anyone please tell me the biggest differences between them ? Thanks !

Answer

asawyer picture asawyer · Mar 23, 2011

You go to the bank to deposit 2 checks, and withdraw a small sum.

So you stand in line until a teller opens.

You make your first deposit.
Then your second.
Then you make your withdrawal.

Now you're done, you leave the teller line.

Getting to the teller is like creating your session, now you're in the bank, ready to work.

Each deposit and withdrawal are their own contained set of work, these are your transactions.

When you're done with your work and leave, you're closing or abandoning your session.


So, in essence, a session contains your transactions, after all you can't make a bank deposit if you never go to the bank right?