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
                                          

Reply via email to