我决定使用Spring,Hibernate和Restlet来创建Web服务。我对这三种技术都很陌生。我的问题是:如何决定是使用JPA的EntityManager
还是Hibernate的HibernateTemplate
?JPA的EntityManager或Spring的HibernateTemplate
为JPA的EntityManager的代码片段:对Hibernate的HibernateTemplate的
protected EntityManager entityManager;
@PersistenceContext
public void setEngityManager(EntityManager entityManger) {
this.entityManager = entityManager;
}
代码片段:
private SessionFactory sessionFactory;
private HibernateTemplate hibernateTemplate;
@Autowired
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
this.hibernateTemplate = new HibernateTemplate(sessionFactory);
}
但我听说Hibernate API提供了一些JPA没有的功能。你也使用JPQL而不是HQL吗?(在开源社区中似乎对HQL有更大的支持)或者你只是使用SQL? – kasavbere
我们使用JPQL代替HQL,它已经解决了我们迄今为止的所有用例。如果你需要在JPA规范中没有对应的Hibernate的任何特定功能,你可以把它当作一个异常,使用entityManager.getDelegate获得SessionFactory,但我怀疑这样一个特定的需求是否不会有JPA语义本身的解决方法。 – Vikdor