java - 如何使用 Spring 3 配置 JPA?

标签 java hibernate spring jpa

我一直在阅读 Spring 的文档,但我必须说它有点令人困惑,提供了几种不同的 JPA 配置选项。

使用 spring 3 配置 JPA 2(带 hibernate )的最佳方式是什么,以及如何配置?如果您有 pom、web.xml、applicationContext.xml 和任何需要的 java 代码的示例,请您也将其发布。

谢谢!

最佳答案

我使用 EclipseLink,但配置必须非常相似。这里有最重要的部分。

pom.xml:

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>eclipselink</artifactId>
        <version>2.0.1</version> 
    </dependency>
    <dependency> 
        <groupId>javax.persistence</groupId>
        <artifactId>javax.persistence</artifactId>
        <version>2.0.0</version>
    </dependency>

persistence.xml:

    <?xml version="1.0" encoding="UTF-8" ?>
    <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_2_0.xsd"
    version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">

    <persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL" />

</persistence>

applicationContext-dao.xml:

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceXmlLocation" value="classpath:persistence.xml" />
    <property name="persistenceUnitName" value="persistenceUnit" /> 
    <property name="dataSource" ref="dataSource"/>
    <property name="jpaPropertyMap">
        <props>
            <prop key="eclipselink.weaving">false</prop>
        </props>
    </property>
</bean>

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />

用户.java:

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private Integer id;

    private String name;

    // Getters and setters

}

UserDao.java:

@Repository
public class JpaUserDao implements UserDao {

    @PersistenceContext
    private EntityManager em;

    @Override
    public Item get(Integer id) {
        return em.find(User.class, id);
    }
}

UserService.java:

@Service 
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;

    @Transactional
    @Override
    public User getUser(Integer id) {
        return userDao.get(id);
    }

}

希望对你有帮助。

关于java - 如何使用 Spring 3 配置 JPA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5373035/

相关文章:

java - LOG4j Spring AOP

java - 从属性/XML 文件中设置 web.xml 中的上下文参数

java - Hibernate - 如何映射表示集合的对象

java - 如何在 Java 中将日期/时间从长(毫秒)转换为 RFC-822 格式

java - 如何使用@Valid来验证局部变量?

java - 如何使用 Hibernate for PostgreSQL 创建索引

java - 如何配置 Jetspeed 用户密码验证

java - 三元运算符无法识别 Eclipse 中的编译错误

java - JPA + Hibernate 中的日期前缀自动递增 id

java - Spring Data JPA 分页 - 从方法名称创建查询