加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java – Spring中的DAO和服务层:会话管理

发布时间:2020-12-15 05:04:30 所属栏目:Java 来源:网络整理
导读:我是否正确理解DAO amp;的原则服务层互连? DAO执行基础对象的提取,比如来自db的id. 服务层使用DAO对象,并且可以在一个函数中调用多于一种DAO方法. 所以,服务层必须: 实例化DAO实现对象 根据需要调用DAO的多个方法 如果Dao实现了一个接口,那么DAO接口是否必
我是否正确理解DAO& amp;的原则服务层互连?
DAO执行基础对象的提取,比如来自db的id.

服务层使用DAO对象,并且可以在一个函数中调用多于一种DAO方法.
所以,服务层必须:

>实例化DAO实现对象
>根据需要调用DAO的多个方法

如果Dao实现了一个接口,那么DAO接口是否必须有一个方法setSessionFactory()?

如何在Spring中声明性地标记:

> DAO对象
>服务层方法和类整体

这样它可以提供所需的东西吗?

解决方法

对于我的项目,我编写了一个基类,它有一个我所有DAO扩展的setSessionFactory()方法.然后我用Spring连接我的DAO,以便它将SessionFactory注入每个DAO.

Hibernate有一个SessionFactory.getCurrentSession(),所以如果你将SessionFactory注入DAO并使用该方法,那么Session的范围将根据你的事务管理机制来定义.

这意味着如果您有这样的方法:

@Transactional
public void doSomething(){
    dao1.makeCall();
    dao2.makeOtherCall();
}

在构造时注入每个DAO的SessionFactory将使用相同的Session.但仅限于该交易的范围.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读