Mysql 使用Hibernate和SQL的Spring事务最佳实践
我们目前正在使用SpringMVC实现RESTWeb服务。我们现在想要实现某种类型的数据持久性,我正在研究这些选项。SpringTransactions+Hibernate+MySQL似乎是一种非常流行的方法,但我看过的每个博客/教程都有不同的做法 有谁能告诉我使用Spring实现数据持久性的最佳实践是什么?我想让它基于注释,因为这对我来说更自然、更易于维护 但是现在在一些地方我读到了HibernateTemplate不应该再使用了。有些人将*Dao接口和*DaoImpl与@Repository方法结合使用,而另一些人将*Service与@Service方法结合使用Mysql 使用Hibernate和SQL的Spring事务最佳实践,mysql,hibernate,spring,spring-transactions,Mysql,Hibernate,Spring,Spring Transactions,我们目前正在使用SpringMVC实现RESTWeb服务。我们现在想要实现某种类型的数据持久性,我正在研究这些选项。SpringTransactions+Hibernate+MySQL似乎是一种非常流行的方法,但我看过的每个博客/教程都有不同的做法 有谁能告诉我使用Spring实现数据持久性的最佳实践是什么?我想让它基于注释,因为这对我来说更自然、更易于维护 但是现在在一些地方我读到了HibernateTemplate不应该再使用了。有些人将*Dao接口和*DaoImpl与@Repository
提前感谢您的建议。HibernateTemplate确实不是很有用,Spring文档建议您考虑不再使用它 @Repository和@Service基本上做相同的事情,除了两件事: @存储库清楚地表明服务是DAO,而不是业务服务 从@Repository注释服务引发的异常被转换为Spring的持久性异常类。这意味着您将不会得到Hibernate异常,而是Spring异常包装Hibernate异常。
HibernateTemplate确实不是很有用,Spring文档建议考虑不再使用它 @Repository和@Service基本上做相同的事情,除了两件事: @存储库清楚地表明服务是DAO,而不是业务服务 从@Repository注释服务引发的异常被转换为Spring的持久性异常类。这意味着您将不会得到Hibernate异常,而是Spring异常包装Hibernate异常。
当Hibernate不支持每个线程有一个会话的概念时,就需要Hibernate模板。现在更好的方法是直接在SessionFactory上使用getCurrentSession方法 对于HibernateTemplate,另一个问题是,如果SessionFactory上公开了更新的api,则必须等待新版本的Hibernate模板来支持它
简而言之,当Hibernate不支持每个线程有一个会话的概念时,就需要直接使用SessionFactory。现在更好的方法是直接在SessionFactory上使用getCurrentSession方法 对于HibernateTemplate,另一个问题是,如果SessionFactory上公开了更新的api,则必须等待新版本的Hibernate模板来支持它
简而言之,直接使用SessionFactory上的HibernateTemplate文档不鼓励使用HibernateTemplate 注意:从Hibernate 3.0.1开始,事务性Hibernate访问代码也可以用普通的Hibernate样式进行编码。因此,对于新启动的项目,考虑采用标准的Hibernate 3风格的编码数据访问对象,而不是基于SeaStudioFut.GeCurrutsTalk。Spring的LocalSessionFactoryBean自动支持Hibernate3 getCurrentSession方法的Spring事务管理 @Repository或@Service的使用没有任何区别,但我相信这些注释在将来会有更多的DAO/服务级别支持,这将使它们的使用更加精确
我个人更喜欢在DAO层中使用if@Repository来划分我的服务层和业务层。上的HibernateTemplate文档不鼓励使用HibernateTemplate 注意:从Hibernate 3.0.1开始,事务性Hibernate访问代码也可以用普通的Hibernate样式进行编码。因此,对于新启动的项目,考虑采用标准的Hibernate 3风格的编码数据访问对象,而不是基于SeaStudioFut.GeCurrutsTalk。Spring的LocalSessionFactoryBean自动支持Hibernate3 getCurrentSession方法的Spring事务管理 @Repository或@Service的使用没有任何区别,但我相信这些注释在将来会有更多的DAO/服务级别支持,这将使它们的使用更加精确
我个人更喜欢在DAO层中使用@Repository来划分我的服务层和业务层。似乎使用@Repository的显式DAO接口和实现路径是更好的方法。似乎使用@Repository的显式DAO接口和实现路径是更好的方法。