Il y a du travail que vous êtes censé faire pour être capable de faire exactement cela, mais ce n'est pas grand chose. Supposément, vous utiliserez JPA avec votre propre fournisseur, par exemple. Hiberner. Ensuite, vous devez placer persistence.xml qui définit l'unité de persistance dans le dossier 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>
Ensuite, définir tout le nécessaire pour la connexion de base de données dans le contexte d'application Spring que vous utilisez, au minimum, il doit contenir celles-ci:
<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"/>
Certaines propriétés ci-dessus peuvent être modifiées ou ajoutées en fonction de vos besoins. L'exemple est pour JPA avec la base de données Hibernate et PostgreSQL comme vous l'avez deviné.
Maintenant, vous pouvez simplement définir vos méthodes d'accès aux données comme ceci:
@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);
}
}
où l'utilisateur est une entité JPA définie par votre application. Vous pouvez gérer les transactions au niveau de la couche gestionnaire/contrôleur qui appelle vos DAO - en fait, je le fais de cette façon - mais je l'ai placé ici pour ne pas trop encombrer l'exemple.
références de Nice que vous pouvez aller directement à la place de mes exemples est http://icoloma.blogspot.com/2006/11/jpa-and-spring-fucking-cooltm_26.html Les 3 liens haut il fait référence sont la peine d'aller aussi bien.
Merci pour la réponse, je vais jouer avec ça demain au travail. Cependant, vos deux liens à la fin sont les mêmes. –
désolé, mais le lien que j'ai fourni contient 3 liens de plus dont l'autre que j'avais en tête ... – topchef
Maintenant, le lien semble être en panne ... –