> Well, @PersistenceUnit annotation has unitName attribute, which is used to > idenity the unit specified in persistence.xml.
Ah. I don't use JPA. > But the current > questions is not how to identify the units but whether we want to commit all > transactions at once. Perhaps by default @CommitAfter should commit everything, and if you want to limit it you provide appropriate @PersistenceUnit on the onSuccess method. How are you going to deal with failures when doing a multi-unit commit? Josh On Wed, Feb 16, 2011 at 10:02 AM, Igor Drobiazko <[email protected]> wrote: > Well, @PersistenceUnit annotation has unitName attribute, which is used to > idenity the unit specified in persistence.xml. > > http://download.oracle.com/javaee/6/api/javax/persistence/PersistenceUnit.html > > First I would concentrate on the standard way to indentify the units; namely > by string names. Later we can think about using annotations. But the current > questions is not how to identify the units but whether we want to commit all > transactions at once. > > On Wed, Feb 16, 2011 at 6:02 PM, Josh Canfield <[email protected]>wrote: > >> Can you do this with marker annotations instead? >> @PersistenceUnit >> @MyTestUnit >> private EntityManager em; >> >> @PersistenceUnit >> @MyOtherUnit >> private EntityManager em2; >> >> @CommitAfter >> @MyOtherUnit >> @MyTestUnit // commit them both >> void onSuccess() {...} >> >> If you recall Tom van Dijk did a lot of work getting multiple >> hibernate sessions to work. Have you looked at his additions? >> http://codereview.appspot.com/2896041/ >> >> There is an email floating around with access to his git repository >> and discussing issues of CommitAfter, etc. >> >> Josh >> >> On Wed, Feb 16, 2011 at 8:44 AM, Igor Drobiazko >> <[email protected]> wrote: >> > Hi all, >> > >> > as you probably know I'm working on the Tapestry/JPA integration. In >> > contrast to Tynamo's integration, Tapestry's built-in JPA support will >> allow >> > having several persistence units in an application. This way you can >> inject >> > several EntityManagers into a single page, which are connected to >> different >> > databases. >> > >> > public class PersistEntity >> > { >> > @PersistenceUnit(unitName = "TestUnit") >> > private EntityManager em; >> > >> > @PersistenceUnit(unitName = "AnotherUnit") >> > private EntityManager em2; >> > >> > >> > @CommitAfter >> > void onSuccess() { >> > >> > ..... >> > } >> > } >> > >> > Now I have some issues to apply Tapestry's @CommitAfter semantics to JPA >> > resource-local transactions. With Hibernate you have a single Session, so >> it >> > is clear what to commit when @CommitAfter annotation is present: the >> active >> > transaction of the single session. With JPA you can have several >> > EntityManagers and so several transactions. When @CommitAfter is present, >> > you don't know which of the active transactions to commit. >> > >> > So, the questions is what would be the best solution? Committing all the >> > active transactions? Maybe we could add a new attribute to @CommitAfter >> > annotations, which expects a list of persistence unit names to commit the >> > transactions of? >> > >> > @CommitAfter( { "TestUnit", "AnotherUnit" } ) >> > void onSuccess() { >> > >> > ..... >> > } >> > >> > >> > Any thoughts or ideas`? >> > >> > -- >> > Best regards, >> > >> > Igor Drobiazko >> > http://tapestry5.de >> > >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> >> > > > -- > Best regards, > > Igor Drobiazko > http://tapestry5.de > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
