aries-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Charles Moulliard <cmoulli...@gmail.com>
Subject Re: How to translate Spring JPA into Aries JPA
Date Wed, 17 Nov 2010 17:17:20 GMT
How can I achieve that in the DAO layer ?
By adding that line --> <tx:transaction method="*" value="Mandatory" />

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: cmoulliard@gmail.com
>> To: aries-dev@incubator.apache.org
>> 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
>   		 	   		

Mime
View raw message