Hi,

By adding that line to your blueprint (depending on the level you add it) you 
will make either:

a) All of the methods on all of the beans in your blueprint
or
b) All of the methods on a single bean in your blueprint

throw an exception if there is no global transaction context when they are 
called. 

Assuming you only ever acess the DAO from within a global transaction this 
should enforce exactly the behaviour you want. It will also protect your DAO 
from being used by someone without an over-arching transaction context.

Regards,

Tim

----------------------------------------
> Date: Wed, 17 Nov 2010 18:17:20 +0100
> From: [email protected]
> To: [email protected]
> Subject: Re: How to translate Spring JPA into Aries JPA
>
> How can I achieve that in the DAO layer ?
> By adding that line --> 
>
> On 17/11/10 13:05, Timothy Ward wrote:
> > 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