Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用Hibernate和SQL的Spring事务最佳实践_Mysql_Hibernate_Spring_Spring Transactions - Fatal编程技术网

Mysql 使用Hibernate和SQL的Spring事务最佳实践

Mysql 使用Hibernate和SQL的Spring事务最佳实践,mysql,hibernate,spring,spring-transactions,Mysql,Hibernate,Spring,Spring Transactions,我们目前正在使用SpringMVC实现RESTWeb服务。我们现在想要实现某种类型的数据持久性,我正在研究这些选项。SpringTransactions+Hibernate+MySQL似乎是一种非常流行的方法,但我看过的每个博客/教程都有不同的做法 有谁能告诉我使用Spring实现数据持久性的最佳实践是什么?我想让它基于注释,因为这对我来说更自然、更易于维护 但是现在在一些地方我读到了HibernateTemplate不应该再使用了。有些人将*Dao接口和*DaoImpl与@Repository

我们目前正在使用SpringMVC实现RESTWeb服务。我们现在想要实现某种类型的数据持久性,我正在研究这些选项。SpringTransactions+Hibernate+MySQL似乎是一种非常流行的方法,但我看过的每个博客/教程都有不同的做法

有谁能告诉我使用Spring实现数据持久性的最佳实践是什么?我想让它基于注释,因为这对我来说更自然、更易于维护

但是现在在一些地方我读到了HibernateTemplate不应该再使用了。有些人将*Dao接口和*DaoImpl与@Repository方法结合使用,而另一些人将*Service与@Service方法结合使用


提前感谢您的建议。

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接口和实现路径是更好的方法。