Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/10/2011, 09:15
davidcarman
 
Fecha de Ingreso: octubre-2011
Mensajes: 1
Antigüedad: 12 años, 6 meses
Puntos: 0
multiples unidades de persistencia en jpa

No se si es correcto crear este tema aqui
Hola os expongo mi caso:

tengo una aplicacion basada en jpa. Quiero hacer referencia a 2 bbdd distintas con lo que he editado dos entityManagerFactory distintos haciendo referencia a 2 datasource de las bbdd.

Aqui esta mi fichero de configuracion:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

<context:annotation-config />
<tx:annotation-driven transaction-manager="transactionManagerPersonal" />
<tx:annotation-driven transaction-manager="transactionManagerProductividad" />


<bean id="datasourceProductividad"
class="org.springframework.jdbc.datasource.DriverM anagerDataSource"
p:driverClassName="${jdbc.productividad.driverClas sName}" p:url="${jdbc.productividad.url}"
p:username="${jdbc.productividad.username}" p:password="${jdbc.productividad.password}" />
<alias name="datasourceProductividad" alias="dataSourceProductividad"/>

<bean id="datasourcePersonal"
class="org.springframework.jdbc.datasource.DriverM anagerDataSource"
p:driverClassName="${jdbc.personal.driverClassName }" p:url="${jdbc.personal.url}"
p:username="${jdbc.personal.username}" p:password="${jdbc.personal.password}" />
<alias name="datasourcePersonal" alias="dataSourcePersonal"/>


<bean id="transactionManagerPersonal" class="org.springframework.orm.jpa.JpaTransactionM anager">
<property name="entityManagerFactory" ref="entityManagerFactoryPersonal" />
</bean>

<bean id="transactionManagerProductividad" class="org.springframework.orm.jpa.JpaTransactionM anager">
<property name="entityManagerFactory" ref="entityManagerFactoryProductividad" />
</bean>


<bean id="entityManagerFactoryPersonal"
class="org.springframework.orm.jpa.LocalContainerE ntityManagerFactoryBean"
p:dataSource-ref="datasourcePersonal" p:jpaVendorAdapter-ref="jpaAdapter"
p:persistenceUnitName="procesosDesatendidosPersona l">
<property name="loadTimeWeaver">
<bean class="org.springframework.instrument.classloading .InstrumentationLoadTimeWeaver" />
</property>
</bean>

<bean id="entityManagerFactoryProductividad"
class="org.springframework.orm.jpa.LocalContainerE ntityManagerFactoryBean"
p:dataSource-ref="datasourceProductividad" p:jpaVendorAdapter-ref="jpaAdapter"
p:persistenceUnitName="procesosDesatendidosProduct ividad">
<property name="loadTimeWeaver">
<bean class="org.springframework.instrument.classloading .InstrumentationLoadTimeWeaver" />
</property>
</bean>

<bean id="jpaAdapter" class="org.springframework.orm.jpa.vendor.Hibernat eJpaVendorAdapter"/>

</beans>


Y tambien he definido en persistence.xml las unidades correspondientes.


En los DAO´S que estoy utilizando he aplicado :

@PersistenceContext(unitName="procesosDesatendidos Personal")
public void setEntityManager(final EntityManager entityManager) {
this.entityManager = entityManager;
}

@PersistenceContext(unitName="procesosDesatendidos Productividad")
public void setEntityManager(final EntityManager entityManager) {
this.entityManager = entityManager;
}

El caso es que la aplicacion no esta funcionando correctamente ya que si quiero insertar o actualizar datos en alguna de las bbdd no realiza estas operaciones

¿Seria posible realizar transacciones?
¿Tendria que utilizar JTA?

Gracias