博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring整合hibernate事务编程中错误分析
阅读量:5980 次
发布时间:2019-06-20

本文共 1638 字,大约阅读时间需要 5 分钟。

hot3.png

在spring整合hibernate过程中,我们的配置文件:

    
    
      
        
com.spring.model.User
        
com.spring.model.Log
      
        
     
     
org.hibernate.dialect.MySQLDialect     
true    
              
  

利用Transactional 开启事务

@Transactional public void add(User user) {  if (userDAO == null||logDAO==null)   System.out.println("erro");  else {   userDAO.add(user);   logDAO.addLog(new Log());  } }

调用代码

public class LogDAOImpl implements LogDAO { private SessionFactory sessionFactory; public SessionFactory getSessionFactory() {  return sessionFactory;   } @Resource public void setSessionFactory(SessionFactory sessionFactory) {  this.sessionFactory = sessionFactory; } /*  * 利用Spring——hibernate的事务bean管理事务,  * 写了@Transaction相当于在方法之前加了beginTranscation  * 后加了commit(),当然之前已经获取到session,  * 不再需要获取session  * @see com.spring.dao.LogDAO#addLog(com.spring.model.Log)  */ @Override public void addLog(Log log) {  // TODO Auto-generated method stub  // System.out.println("user added successful");  Session session=sessionFactory.getCurrentSession();  log.setMes("save success by transaction too long may be cancel");  session.save(log);   }}

测试过程中总是报错:HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation

问题分析:

        在spring中我们 通过配置文件,来获取Hibernate的 SessionFactory,并将这个sessionfactory放在txmanager这个bean中管理,

我们在addLog中没有开启事务,没有结束事务,这个就是spring通过AOP在我们的save逻辑之前和之后加了事务的逻辑方法。

我们知道AOP是通过动态代理(dynamc proxy)实现的,而dynamic prox又有两种实现方式:proxy,和cglib实现

proxy实现需要类实现接口,cglib实现是直接在修改二进制码

可以看出我这里是没有加cglib的jar包导致

 

 

 

 

 

转载于:https://my.oschina.net/u/942629/blog/192033

你可能感兴趣的文章
html----怎样实现元素的垂直居中
查看>>
不显示BOM清单的版本
查看>>
Oracle EBS-SQL (CST-4):检查组织间项目成本.sql
查看>>
PHPMyadmin配置文件详解
查看>>
100C之15:倒底捕了多少鱼?
查看>>
PHP 命名空间
查看>>
层次分析法
查看>>
[转] xgboost
查看>>
ASP.NET一些常用的东西
查看>>
elasticsearch__5__java操作之FilterBuilders构建过滤器Query
查看>>
抓老鼠啊~亏了还是赚了?
查看>>
python之装饰器
查看>>
自定义模块
查看>>
design_model(24)分类与备注
查看>>
python进度条
查看>>
FMXUI ANDROID下连续按多次返回出现异常
查看>>
android开发学习--网络请求框架RxJava+Retrofit
查看>>
万能ViewHolder和基类适配器
查看>>
js操作当前窗口
查看>>
【SpringMVC笔记】第一课-框架执行过程
查看>>