学习动态代理实现业务层的事务控制遇到的问题

错误信息截图:

第一个错误:

Loading class com.mysql.jdbc.Driver'. This is deprecated. The new driver class is com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

第二个错误:

Exception in thread "main" java.lang.IllegalStateException: Transaction already active

错误原因:

第一个错误:

mysql-connector-java包版本问题:
5.x版本的驱动文件jar包对应的是:Class.forName(“com.mysql.jdbc.Driver”);语句来加载数据库驱动
8.0x版本的驱动文件jar包对应的是Class.forName(“com.mysql.cj.jdbc.Driver”);

第二个错误:


原因:同一事务多次开启,beginTransaction();已经开启了事务。commit()里则不能重复开启事务。

解决方法:

解决错误一:将com.mysql.jdbc.Driver改为com.mysql.cj.jdbc.Driver

解决错误二:将事务Transaction用变量存起来,下次提交事务就直接用tr.commit(),就不用session.beginTransaction().commit();重复开启事务。

问题一借鉴的网页
问题二借鉴的网页

原文地址:https://www.cnblogs.com/liu2687479342/p/14477778.html