Spring + JPA (Hibernate) com 2 banco de dados

0 respostas
G

Boa tarde,

Tenho uma aplicação utilizando Spring e JPA (Hibernate) e a mesma deve se conectar a 2 banco de dados.

Abaixo segue os arquivos de configuração da aplicação de teste que fiz, é isso mesmo que deve ser feito? Algo deve ser alterado?

Desta forma as conexões são retiradas do pool do Tomcat e depois devolvidas?

De maneira geral, utilizar Spring e JPA (Hibernate) desta forma está correto? Algum comentário?

Agradeço pela atenção.

Abraço,
Gustavo.

<Context path="/teste-spring">
	<Resource name="jdbc/test" auth="Container"
		type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver"
		url="jdbc:mysql://localhost:3306/test" username="test" password="test"
		maxActive="2" maxIdle="1" maxWait="1000" />
	<Resource name="jdbc/test2" auth="Container"
		type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver"
		url="jdbc:mysql://localhost:3306/test" username="test" password="test"
		maxActive="2" maxIdle="1" maxWait="1000" />
</Context>
<?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:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
	<bean
		class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

	<bean id="userDao" class="testespring.dao.jpa.JpaUserDao" />

	<bean id="entityManagerFactory"
		class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="persistenceUnitName" value="punit" />
		<property name="jpaVendorAdapter">
			<bean
				class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
				<property name="database" value="MYSQL" />
				<property name="showSql" value="true" />
			</bean>
		</property>
	</bean>
	<bean id="entityManagerFactory2"
		class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="persistenceUnitName" value="punit2" />
		<property name="jpaVendorAdapter">
			<bean
				class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
				<property name="database" value="MYSQL" />
				<property name="showSql" value="true" />
			</bean>
		</property>
	</bean>

	<bean id="dataSource" destroy-method="close"
		class="org.springframework.jndi.JndiObjectFactoryBean">
		<property name="jndiName" value="java:/comp/env/jdbc/test" />
	</bean>
	<bean id="dataSource2" destroy-method="close"
		class="org.springframework.jndi.JndiObjectFactoryBean">
		<property name="jndiName" value="java:/comp/env/jdbc/test2" />
	</bean>

	<bean id="transactionManager"
		class="org.springframework.orm.jpa.JpaTransactionManager">
		<property name="entityManagerFactory"
			ref="entityManagerFactory" />
	</bean>
	<bean id="transactionManager2"
		class="org.springframework.orm.jpa.JpaTransactionManager">
		<property name="entityManagerFactory"
			ref="entityManagerFactory2" />
	</bean>

	<tx:annotation-driven transaction-manager="transactionManager" />
	<tx:annotation-driven transaction-manager="transactionManager2" />
</beans>
@Transactional
public class JpaUserDao implements UserDao {
    @PersistenceContext(unitName = "punit")
    private EntityManager entityManager;

    @PersistenceContext(unitName = "punit2")
    private EntityManager entityManager2;

    @SuppressWarnings("unchecked")
    @Override
    public List<User> findAll() {
	return entityManager.createQuery("select user from User user")
		.getResultList();
    }

    @SuppressWarnings("unchecked")
    @Override
    public List<User> findAll2() {
	return entityManager2.createQuery("select user from User user")
		.getResultList();
    }

    @Override
    public void save(User user) {
	if (user.getId() == null) {
	    entityManager.persist(user);
	} else {
	    entityManager.merge(user);
	}
    }

    @Override
    public void save2(User user) {
	if (user.getId() == null) {
	    entityManager2.persist(user);
	} else {
	    entityManager2.merge(user);
	}
    }
}
Criado 24 de junho de 2008
Respostas 0
Participantes 1