为什么切面要切业务层?

因为dao层都是单表操作, 而业务层会涉及到多表操作,在业务层做切面事务,更安全

表于表之间是有关联的,操作的时候如果一张表出错了,那么可能会连带使其所关联的表数据操作失败,而其没有被切面切入事务的话,无法做到回滚!


关于懒加载

经常会用到懒加载去定义一个对象 , 那么为什么要懒加载呢?

懒加载可以优化数据库的压力,不用每个都去查询,只会在调用到这个对象的时候才会去执行sql语句查询

但是呢,同时懒加载也带来了一个不方便的地方,就是会报出一个异常   no session

这个异常时怎么出现的呢? 调用的时候 有包含被设置了懒加载的对象! 查询语句已经结束了,session已经关闭了 ,

这个时候去调用 被懒加载的对象无法去使用session 就会出错~

那么怎么解决呢? 关闭懒加载? 

在使用注解的情况下将  fetch=FetchType.LAZY  改成 fetch=FetchType.EAGER 就没问题了 ,可是这就没有意义了,并且也很不安全

最好的解决办法 就涉及到了 切面事务

切面扩大了session 的范围,所有被切面的类 都会被包括在session范围内,

在操作有关懒加载的对象前,在切面切入的类方法中, 调用一次,让懒加载运行,也就达成了在session关闭之前,处理查询,解决no session问题



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值