aspose file tools*
The moose likes EJB Certification (SCBCD/OCPJBCD) and the fly likes [SCBCD] quick question on flush() Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Spring in Action this week in the Spring forum!
JavaRanch » Java Forums » Certification » EJB Certification (SCBCD/OCPJBCD)
Bookmark "[SCBCD] quick question on flush()" Watch "[SCBCD] quick question on flush()" New topic
Author

[SCBCD] quick question on flush()

Laurent Lj
Greenhorn

Joined: Jul 06, 2011
Posts: 3
Hi all,

I wonder if an EntityManager.flush() causes always a TransactionRequiredException, while executed in no transactional context :

By example, in an extended persistence context that is supposed to queued all EntityManagers operations, what happened ?

Thanks by advance
Regards
Tamas Polgar
Greenhorn

Joined: Apr 27, 2011
Posts: 13
Hi,
you need a transaction to flush your changes you made during the transaction
so throwing a TransactionRequiredException makes a lot of sense.

if you use extended persistence context (with container managed transaction), it commits (flushes) after all business method (which uses transaction) invocation.
but it doesnt close (clear) the persistence context after the transaction. so you can use managed entities during the lifetime of the stateful session bean.

did I answer you question? or could you be more specific?
Tamas Polgar
Greenhorn

Joined: Apr 27, 2011
Posts: 13
Sorry
you need a transaction to flush your changes you made during the transaction

is not properly right. It syncronizes the persistence context with the db.

so if you queue your modifications by using business methods without transaction, you can explicitly flush at the remove method (with transaction)
(but flush can happen anytime!)

check this out:
http://thatjavathing.blogspot.com/2009/04/extended-persistence-context.html
Laurent Lj
Greenhorn

Joined: Jul 06, 2011
Posts: 3
Tamas Polgar wrote:Sorry
you need a transaction to flush your changes you made during the transaction

is not properly right. It syncronizes the persistence context with the db.

so if you queue your modifications by using business methods without transaction, you can explicitly flush at the remove method (with transaction)
(but flush can happen anytime!)

check this out:
http://thatjavathing.blogspot.com/2009/04/extended-persistence-context.html



thanks a lot for your answer.

In fact, an extended persistence context queued operations, until it enters in a transaction context. My question is, can I queued a flush() operation ?

By example I call an EntityManager.flush() method with NOT_SUPPORTED transaction attribute, and next, this method calls another method with a REQUIRED transaction.

Does the flush queued until the extended persistence context entered in a transaction context, or does it just throw a TransactionRequiredException when invoked ?

Thanks

Tamas Polgar
Greenhorn

Joined: Apr 27, 2011
Posts: 13
ok, I get it.

No, you can not queue it. It immediatelly starts to synchronize the pc with the db. And for this you need a transaction.

But why would you like to queue the flush operation?
Laurent Lj
Greenhorn

Joined: Jul 06, 2011
Posts: 3
Tamas Polgar wrote:ok, I get it.

No, you can not queue it. It immediatelly starts to synchronize the pc with the db. And for this you need a transaction.

But why would you like to queue the flush operation?


Oh, I just wonder how it works cause I'm soon passing the SCBCD5 exam, so it could be a question...

So it always immediately throw a TransactionRequiredException when no transaction context is active, and this, whatever the persistent context (extended or not).


Thanks a lot
Tamas Polgar
Greenhorn

Joined: Apr 27, 2011
Posts: 13
yes
good luck for it.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: [SCBCD] quick question on flush()