Se supone que debe hacer algo para poder hacer eso, pero no es mucho. Supuestamente, usará JPA para elegir su propio proveedor, p. Hibernar. Luego hay que colocar persistence.xml que define la unidad de persistencia en la carpeta META-INF:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="YourDatabasePersistenceUnitName" transaction-type="RESOURCE_LOCAL"/>
</persistence>
A continuación, defina todo lo necesario para la conexión de base de datos en el contexto de aplicación de primavera que utiliza, como mínimo, debe contener los siguientes:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>/WEB-INF/jdbc.properties</value>
</property>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close" scope="singleton">
<property name="driverClassName" value="org.postgresql.Driver"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="YourDatabasePersistenceUnitName"/>
<property name="dataSource" ref="dataSource"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="database" value="POSTGRESQL" />
<property name="databasePlatform" value="org.hibernate.dialect.PostgreSQLDialect"/>
<property name="showSql" value="true"/>
<property name="generateDdl" value="false"/>
</bean>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
Algunas propiedades arriba pueden ser modificadas o agregadas dependiendo de sus necesidades. El ejemplo es para JPA con la base de datos Hibernate y PostgreSQL como ya habrás adivinado.
Ahora simplemente puede definir sus métodos de acceso de datos como esta:
@Repository
@Transactional
public class UserJpaDAO {
protected EntityManager entityManager;
@PersistenceContext
public void setEntityManager(EntityManager entityManager) {
this.entityManager = entityManager;
}
public void save(User theUser) {
entityManager.persist(theUser);
}
public User update(User theUser) {
return entityManager.merge(theUser);
}
}
donde usuario es una entidad JPA definido por la aplicación. Puede gestionar transacciones en la capa de administrador/controlador que llama a sus DAO, de hecho lo hago de esa manera, pero lo puse aquí para no complicar mucho el ejemplo.
referencias agradable que es posible que desee ir directamente al lugar de mis ejemplos es http://icoloma.blogspot.com/2006/11/jpa-and-spring-fucking-cooltm_26.html los 3 primeros enlaces son los que hace referencia la pena ir también.
Gracias por la respuesta, jugaré con esto mañana en el trabajo. Sin embargo, ambos enlaces al final son los mismos. –
lo siento, pero el enlace que proporcioné contiene 3 enlaces más, incluido el otro que tenía en mente ... – topchef
Ahora parece que el enlace está abajo ... –