用动态代理对hibernateDao和JDBC Dao管理事务问题

在tomcat + Hibernate 做项目时遇到如下问题:

servcie() {
  hibernateDao();
  jdbcDao();
}

为了对service进行事务管理,自己写AOP来实现(采用动态代理)。
[为了使代码尽可能少改动,故不使用spring。]
为保证hibernateDao、jdbcDao都使用相同数据源的同一个Connection,使用ThreadLocal。经过以上设计,事务问题已经基本没什么解决,但由于执行过程中都使用同一个session,所以在执行session.saveOrUpdate()时报以下错误:
a different object with the same identifier value was already associated with the session。
于是改用session.merge();
但是有的地方程序可以顺利运行,但有的地方仍报以上错误,所以十分困惑,希望能求一解。

你可能感兴趣的:(DAO,spring,Hibernate,jdbc,项目管理)