Spring jpatemplate和jpadaosupport之间的差异

Spring jpatemplate和jpadaosupport之间的差异,spring,dao,Spring,Dao,JpaTeplate和JpaDaoSupport(或HibernateTemplate和HibernateDaoSupport的类似版本)之间的区别是什么 我阅读了spring文档,spring建议不要再使用它。我只是想知道这背后的原因是什么。我理解的一个原因是spring和持久层之间的解耦。但这并不是消除这一点的唯一理由 谁能给它点颜色看看吗 提前感谢。早期的*模板使底层技术更容易使用,尤其是在hibernate2和早期的hibernate3版本中。然而,所有这些技术都取得了进步,*模板的使用

JpaTeplate和JpaDaoSupport(或HibernateTemplate和HibernateDaoSupport的类似版本)之间的区别是什么

我阅读了spring文档,spring建议不要再使用它。我只是想知道这背后的原因是什么。我理解的一个原因是spring和持久层之间的解耦。但这并不是消除这一点的唯一理由

谁能给它点颜色看看吗


提前感谢。

早期的
*模板
使底层技术更容易使用,尤其是在hibernate2和早期的hibernate3版本中。然而,所有这些技术都取得了进步,
*模板的使用不再有什么意义。它只将您的数据访问层绑定到spring,而没有任何实际的额外好处。因此建议不再使用它,而是使用普通API(即JPA或Hibernate)

*DaoSupport
类为您执行一些引导和/或检测,这样您就可以调用
get*Template
方法并获得一个随时可用的
*Template
。基本上,
*DaoSupport
允许轻松访问已配置的
*模板
,并避免您自己构建模板


但是,正如参考指南中提到的,您不应该再使用模板,从而支持类(唯一的例外是JDBC版本的模板)。

对于Hibernate/JpaTemplate来说,这是正确的。在阅读了更多的细节之后,我知道这些模板类将hibernate异常转换为运行时spring的DataAccessException。如果不使用模板类,如何获取DataAccessException?自动关闭会话怎么样?如果您使用注释驱动配置,您仍然会自动得到它(无论是否使用模板)。还有一个问题。早些时候,我使用下面的方法获取jpa中entitymanager的实例。但是如果不使用jpatemplate,我将如何获取entityManager的实例?返回(T)getJpaTemplate().execute(新的JpaCallback(){public Object doInJpa(final entityManager em){……}(很抱歉,取消了格式化。无法格式化代码。)这就是依赖注入的目的。我建议您阅读一下spring参考指南,这就解释了所有这些。