Hi Charles, It is absolutely possible to do that with Aries JPA/Transactions. If the transaction is started by a component that makes multiple calls to the DAO then that DOA will use the same persistence context for each invocation.
A good way to ensure this sort of behaviour is to mark the DAO methods as having a mandatory transaction requirement. That way you ensure that a transaction context is set up by the caller, rather than the DAO. The default required behaviour will also allow transactions to propagate from the caller, but it will obviously create a new one if none exists, rather than throwing an exception. Regards, Tim ---------------------------------------- > Date: Mon, 15 Nov 2010 09:41:19 +0100 > From: [email protected] > To: [email protected] > Subject: Re: How to translate Spring JPA into Aries JPA > > Hi Timothy, > > I have checked the content of the Aries Blog example. The example shows > How to inject transaction at the level of the DAO layer (= layer where > we define the mapping between the model and the Database). > > My question is very simple : With Spring, it is possible to define > transactions at the Service layer instead of the DAO. In this case, it > is possible to initiate a transaction from a service to by example > insert address of a person (by calling the AddressDAO interface) AND > next inserting also the person in the DB (by calling the PersonDAO > interface). So, we use the same transaction to calls two different DAO > and entities. Is it possible to do that with Aries Transaction ? > > Regards, > > Charles > > On 08/11/10 15:17, Timothy Ward wrote: > > Hi, > > > > It looks like you're trying to do Application-Managed JPA rather than > > container-managed JPA with this example (i.e. you want to have an > > EntityManagerFactory and manage the EntityManager lifecycle yourself). > > > > In this case you can just inject the persistence unit directly into the > > bean that wants it with e.g. > > > > > > > > > > > > This encompasses all of the integration with global transactions as well as > > the JPA injection via the setEntityManagerFactory method. > > > > > > > > Managed transactions can be configured using the transactions namespace e.g. > > > > > > > > > > > > This bean will have a "Required" transaction attribute for all public > > methods invoked from outside the bean. > > > > > > > > These two concepts are often used together with container-managed > > persistence contexts (i.e you let the container manage the EntityManager > > lifecycle). There are examples of this in the Blog sample. > > > > > > > > > > > > > > > > > > I hope this helps. If you'd like to put any of your experiences together it > > would be great to start building some better documentation for the Aries > > JPA component. > > > > Regards, > > > > Tim > > > > ---------------------------------------- > >> Hi, > >> > >> Do we have an example showing what we define like this in spring > >> > >> > >> class="org.springframework.transaction.support.TransactionTemplate"> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean"> > >> > >> > >> > >> but using Aries JPA and Aries Transaction now ? > >> > >> Regards, > >> > >> Charles M. > >> Apache ServiceMix, Camel and Karaf committer
