JPA的EntityManager或Hibernate的HibernateTemplate与Spring

时间:2012-09-23 18:28:30

标签: spring hibernate jpa

我决定使用Spring,Hibernate和Restlet来创建一个Web服务。我是所有这三种技术的新手。我的问题是:我如何决定是使用JPA的EntityManager还是Hibernate的HibernateTemplate

JPA的EntityManager代码片段:

protected EntityManager entityManager;

@PersistenceContext
public void setEngityManager(EntityManager entityManger) {
    this.entityManager = entityManager;
}

Hibernate的HibernateTemplate的代码片段:

private SessionFactory sessionFactory;
private HibernateTemplate hibernateTemplate;

@Autowired
public void setSessionFactory(SessionFactory sessionFactory) {
    this.sessionFactory = sessionFactory;
    this.hibernateTemplate = new HibernateTemplate(sessionFactory);
}

2 个答案:

答案 0 :(得分:1)

如果您是喜欢interface-based-implementation的人,则JPA是接口定义,Hibernate是其中一个实现。我们决定在我们的项目中使用JPA语义(有一个非常长期的计划,用类似的东西取代Hibernate,可能很轻)。

答案 1 :(得分:0)

如果您希望将来坚持hibernate,那么使用EntityManagerFactory毫无意义,您可以继续使用SessionFactory。并使用基于java的配置或xml为此注入定义。它必须在application context中可用。 但是将来如果你想转移到不同的jpa提供者,比如toplink等,那么你应该使用EntityManagerFactory,因为它允许你从各种提供者那里获得实现。因为提供者实现了jpa规范。因此,将来您只需要在应用程序上下文中使用不同的配置,并且您应该能够使用它。