If Tim is correct and you are looking for an application managed JPA example you can take a look at the AriesTrader sample which supports both Container Managed and Application Managed JPA persistence as well as straight jdbc persistence.

Specifically you can look at the bundle generated under
samples/ariestrader/modules/ariestrader-persist-jpa-am/
for the application managed bits.

Likewise the container managed portion is under
samples/ariestrader/modules/ariestrader-persist-jpa-cm/
and straight jdbc in
samples/ariestrader/modules/ariestrader-persist-jdbc/

Joe


On 11/8/10 9:17 AM, 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.

<bean id="persistenceBean" class="org.apache.Foo">
   <jpa:unit unitname="camel" property="enitityManagerFactory"/>
</bean>

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.

<bean id="transacted" class="org.apache.Bar">
   <tx:transaction/>
</bean>

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.

<bean id="persistenceBean" class="org.apache.Foo">
   <tx:transaction/>

   <jpa:context unitname="camel" property="enitityManager"/>
</bean>


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

<bean id="transactionTemplate"
class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager">
<bean class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
</property>
</bean>

<bean id="jpaTemplate" class="org.springframework.orm.jpa.JpaTemplate">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>

<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="camel"/>
</bean>

but using Aries JPA and Aries Transaction now ?

Regards,

Charles M.
Apache ServiceMix, Camel and Karaf committer                                    


--
Joe

Reply via email to