Существует некоторая работа, которую вы должны сделать, чтобы иметь возможность сделать это, но это совсем не так. Предположительно, вы будете использовать JPA, чтобы выбрать своего собственного поставщика, например. Hibernate. Тогда вам необходимо поместить persistence.xml, которая определяет единицы сохранения в папке 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>
Далее, определить все необходимое для подключения к базе данных в контексте Spring приложения вы используете, как минимум, он должен содержать следующие:
<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"/>
Некоторые свойства, указанные выше, могут быть изменены или добавлены в зависимости от ваших потребностей. Например, для JPA с базой данных Hibernate и PostgreSQL, как вы, возможно, догадались.
Теперь вы можете просто определить свои методы доступа к данным, как это:
@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);
}
}
где пользователь является объектом JPA определяется приложением. Вы можете управлять транзакциями на уровне менеджера/контроллера, который называет ваши DAO - на самом деле я делаю это именно так, но я поместил его вместе, чтобы не слишком много загромождать пример.
Хорошие ссылки, которые вы можете пойти прямо к вместо моих примеров http://icoloma.blogspot.com/2006/11/jpa-and-spring-fucking-cooltm_26.html Верхние 3 ссылки это ссылки на которые стоит пойти, а также.
Спасибо за ответ, я буду играть с этим завтра на работе. Тем не менее, обе ваши ссылки в конце совпадают. –
извините, но ссылка, которую я поставил, содержит еще 3 ссылки, включая другой, который я имел в виду ... – topchef
Теперь ссылка не работает ... –