开发者社区> 问答> 正文

Spring&Hibernate事务分层问题

Hibernate事务交给了spring管理

Dao层封装了Hibernate Session的save,update,get,load,delete等方法

以下是Service层的一个方法

@Override
public void updatePassword(int id, String oldPassword, String newPassword) {

Operator o = this.operatorDao.getById(id);
if(o == null)
throw new RecordNotFoundException("没有此用户");

if("".equals(oldPassword.trim())|| "".equals(newPassword))
throw new ServiceException("旧密码或新密码不能为空");

if(!oldPassword.equals(o.getPassword()))
throw new ServiceException("旧密码错误");

o.setPassword(MD5.crypt(newPassword)); 

}

因为Dao层是直接封装了session的方法。并且在service层开启事务。所以通过dao.getById方法取过来的对象是持久化状态。现在修改密码就直接是通过setPassoword。事务自动提交的时候Hibernate会自动生成update的sql。

现在有个疑问,那么Dao层我要把hibernate替换掉成jdbc。那么我的Dao的实现层要重写。那么Service层的事务也得换成别的。那么说我的Service层是不是得重写?

展开
收起
a123456678 2016-03-17 15:41:52 2525 0
1 条回答
写回答
取消 提交回答
  • 替换成jdbc的话 你可以用jdbctemplate

    只要保证datasource是由spring管理的就行

    2019-07-17 19:05:33
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关实验场景

更多