From reading the transaction section of the trailblazer on ejb 3
(
http://trailblazer.demo.jboss.com/EJB3Trail/services/transaction/index.html) I get the
impression that transactions are always enabled, and that I don't have to write any
code or use any transaction annotations at all, and still know that transactions are used.
Am I right, or am I wrong?
It is the following words that make me assume this (from the trailblazer):anonymous wrote
: If a method does not have a transaction annotation, it is assigned the default
transaction property REQUIRED by the EJB 3.0 container.
But it also says: anonymous wrote : In EJB 3.0, the EntityManager must run in a
transactional context to ensure the database integrity.
So, does that mean, in my session bean, that I have to obtain the transaction manager from
the entity manager and use it to ensure that transactions are used? Like in the following
example:
@PersistenceContext
| private EntityManager em;
| ...
| EntityTransaction tx = em.getTransaction();
| tx.begin();
|
| CD cd = new CD( "The Beatles", "Rubber Soul" );
| cd.addTrack( new Track( 220, "Norwegian Wood" ) );
| cd.addTrack( new Track( 180, "Drive My Car" ) );
| em.persist( cd );
|
| cd = new CD( "Deep Purple", "Machine Head" );
| cd.addTrack( new Track( 200, "Smoke On The Water" ) );
| cd.addTrack( new Track( 480, "Lazy" ) );
| em.persist( cd ) ;
|
| tx.commit();
| em.close();
|
Or could I simply remove the 3 lines using tx as well as remove all transation annotations
from the entity bean, and still be sure that transactions are used?
Another wondering about the code above; if I only created one CD (and not two as above),
would it be even relevant to talk about transactions?
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3957985#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...