- 浏览: 622537 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (334)
- java core (12)
- struts2.x (2)
- spring (3)
- hibernate (8)
- jpa (6)
- maven (2)
- osgi (5)
- eclipse (4)
- struts2.x+spring2.x+hibernate 整合 (5)
- ebs (0)
- html (0)
- vaadin (1)
- css (0)
- jquery (0)
- javascript (0)
- svn (1)
- cvs (0)
- axas2.x (0)
- eclipse+maven (9)
- annotation (0)
- 基于OSGi的动态化系统搭建 (1)
- notenet (1)
- jboss eclipse (4)
- eclipse工具 (4)
- jdk1.6+maven3.0.3+nuxeo+svn+felix+cxf+spring+springDM (6)
- spring dm (1)
- Nexus介绍 (1)
- proxool listener (0)
- oracle (4)
- mysql (8)
- 搭建你的全文检索 (1)
- hibernatehibernatehibernate (0)
- cvsearchcvsearch (0)
- mycvseach (0)
- asdfasdfasdf (0)
- propertiey (0)
- hibernate annotation (0)
- libs (0)
- icam (2)
- start 数据库配置 (0)
- jboss (1)
- 让Eclipse启动时显示选择workspace的对话框 (1)
- table表头固定 (1)
- s2s3h4 (0)
- leaver (0)
- mycvsaerchddd (0)
- 关于jboss5.0.1部署 (4)
- bookmarks (0)
- PersistenceUnitDeployment (0)
- mycom (0)
- HKEY_CURRENT_USER = &H80000001 (0)
- syspath (1)
- css div (1)
- Dreamweaver CS5 (0)
- generate (0)
- mysql查看表结构命令 (1)
- LOG IN ERROR EMAIL TO SB (0)
- struts2 handle static resource (1)
- jsf (2)
- log4j (1)
- jbpm4.4 (2)
- down: jbpm4.4 (1)
- jstl1.2 (1)
- spring annotation (1)
- java design pattern (1)
- cache (1)
- ehcache (1)
- 11111 (0)
- myge (0)
- pom.xml (0)
- springquartz (0)
- OpenStack (9)
- hadoop (2)
- nginx (1)
- hadoop openstack (1)
- os (1)
- hadoop-2.6.0 zookeeper-3.4.6 hbase-0.98.9-hadoop2 集群 (5)
- hadoop2.7.0 ha Spark (2)
- tess (0)
- system (1)
- asdf (0)
- hbase (2)
- hbase create table error (1)
- ekl (1)
- gitignore (1)
- gitlab-ci.yml (1)
- shell (1)
- elasticsearch (2)
- Azkaban 3.0+ (1)
- centos用命令 (1)
- hive (1)
- kafka (1)
- CaptureBasic (0)
- CentOS7 (1)
- dev tools (1)
- README.md (1)
- Error (1)
- teamviewerd.service (1)
- scala (1)
- spark (1)
- standard (1)
- gitlab (1)
- IDEA (0)
- ApplicationContext (1)
- 传统数仓 (1)
- redis install (1)
- MYSQL AND COLUME (1)
- java版本选择 (1)
- hue (1)
- npm (1)
- es (1)
- 版本管理 (1)
- 升级npm版本 (1)
- git (1)
- 服务器参数设置 (1)
- 调大 IDEA 编译内存大小 (0)
- CentOS8安装GitLab (1)
- gitlab安装使用 (1)
最新评论
-
ssydxa219:
vim /etc/security/limits.confvi ...
ekl -
Gamehu520:
table中无数据
hbase 出现的问题 -
Xleer0102:
为什么都是只有问没有答,哭晕在厕所
hbase 出现的问题 -
jiajiao_5413:
itext table -
CoderDream:
不完整,缺com.tcs.org.demostic.pub.u ...
struts2.3.1.1+hibernate3.6.9Final+spring3.1.0+proxool+maven+annotation
首先hibernate的Connection release mode有以下几种:
1 after_statement 2 after_transaction 3 on_close 其中after_statement 用在jta中 ,on_close 是3.1之前遗留的(也许是为spring留的-_-),也就是3.1之前默认是on_close ,但3.1之后默认如果单独使用hibernate是after_transaction,如果有第三方事务管理,就用第三方提供的默认值,spring就是默认使用了on_close。
在spring管理事务中我们看看系统启动后默认使用的配置:
1,ransaction strategy: org.springframework.orm.hibernate3.SpringTransactionFactory使用spring事务策略
2,hibernate内部 Automatic session close at end of transaction: disabled 因为已经交给spring了
3 Connection release mode: auto 默认,也就是没有配置hibernate.connection.release_mode的时候,但是这里有地方需要注意:也就是前面提到的使用第三方策略时的问题:看一下代码:
String releaseModeName = PropertiesHelper.getString( Environment.RELEASE_CONNECTIONS, properties, "auto" );
log.info( "Connection release mode: " + releaseModeName );
ConnectionReleaseMode releaseMode;
if ( "auto".equals(releaseModeName) ) {
releaseMode = transactionFactory.getDefaultReleaseMode();
} else {
releaseMode = ConnectionReleaseMode.parse( releaseModeName );
if ( releaseMode == ConnectionReleaseMode.AFTER_STATEMENT && !connections.supportsAggressiveRelease() ) {
log.warn( "Overriding release mode as connection provider does not support 'after_statement'" );
releaseMode = ConnectionReleaseMode.AFTER_TRANSACTION;
}
}
其中红色部分就是调用了spring提供的默认值,而spring的默认值:在jta和cmt中都默认使用的是after_statement
/** *//**
* Sets connection release mode "on_close" as default.
* <p>This was the case for Hibernate 3.0; Hibernate 3.1 changed
* it to "auto" (i.e. "after_statement" or "after_transaction").
* However, for Spring's resource management (in particular for
* HibernateTransactionManager), "on_close" is the better default.
*/
public ConnectionReleaseMode getDefaultReleaseMode() {
return ConnectionReleaseMode.ON_CLOSE;
}
而spring为什么要使用on_close ,而不是用after_transaction ,我们想想opensessioninview的原理也许能明白,session在view成还要使用,所以不能再transaction使用完后关闭JDBC connection,必须要在session之后,所以要使用on_close(也就是在on session(flush.auto,或者flush.Eagerly) 关闭)。这种情况hibernate内部还会在spring关闭JDBC connection后提示(费解,因为after transaction之后session没有关闭,但是 Connection release mode配置的是on_close,session的关闭和 Connection 的关闭都由spring来管理,hibernate就不知道了),所以hibernate有好的提示如下(其实session,已经关闭。当然随着session的关闭jdbc链接释放回连接池):
transaction completed on session with on_close connection release mode; be sure to close the session to release JDBC resources!,
。当然我们也可以使用after_transaction ,这种情况对使用编程式事务非常适用。
org.hibernate.connection包的主要封装了通过JDBC来连接数据库的操作,用户可以以数据源的方式,或者通过特定数据库驱动的方式,甚至是自己定义连接类的方式来完成数据库的连接操作,包下面的代码文件并不多,只有5个,分别是ConnectionProviderFactory.java,ConnectionProvider.java,DriverManagerConnectionProvider.java,DatasourceConnectionProvider.java,UserSuppliedConnectionProvider.java,其中ConnectionProvider是一个接口,DriverManagerConnectionProvider、DatasourceConnectionProvider、UserSuppliedConnectionProvider分别继承了这个接口,而ConnectionProviderFactory则是一个工厂类,他的主要作用是调用ConnectionProvider接口,而不关心接口的具体实现是DriverManagerConnectionProvider或者DatasourceConnectionProvider还是UserSuppliedConnectionProvider。
首先来看ConnectionProvider接口,提供了如下几个方法:
1.configure()方法主要是根据配置文件来初始化所有的连接信息。
2.getConnection()方法抓取一个连接。
3.closeConnection(Connection conn)方法关闭某个特定连接。
4.close()关闭所有连接。
5.supportsAggressiveRelease()方法和hibernate.connection.release_mode配置参数有关,该参数用来指定使用哪一种连接释放模式。HIBERNATE参考手册是这样描的: Hibernate关于JDBC连接管理的旧(2.x)行为是,Session在第一次需要的时候获取一个连接,在session关闭之前一直会持有这个连接。Hibernate引入了连接释放的概念,来告诉session如何处理它的JDBC连接。注意,下面的讨论只适用于采用配置ConnectionProvider来提供连接的情况,用户自己提供的连接与这里的讨论无关。通过org.hibernate.hibernate.connection.release_mode的不同枚举值来使用不用的释放模式:
ON_CLOSE - 基本上就是上面提到的老式行为。Hibernate session在第一次需要进行JDBC操作的时候获取连接,然后持有它,直到session关闭。
AFTER_TRANSACTION - 在org.hibernate.Transaction结束后释放连接。
AFTER_STATEMENT (也被称做积极释放) - 在每一条语句被执行后就释放连接。但假若语句留下了与session相关的资源,那就不会被释放。目前唯一的这种情形就是使用org.hibernate.ScrollableResults
auto(默认) - 这一选择把释放模式委派给org.hibernate.transaction.TransactionFactory.getDefaultReleaseMode()方法。对JTATransactionFactory来说,它会返回hibernate.connection.release_mode.AFTER_STATEMENT;对JDBCTransactionFactory来说,则是hibernate.connection.release_mode.AFTER_TRANSACTION。很少需要修改这一默认行为,因为假若设置不当,就会带来bug,或者给用户代码带来误导。
on_close - 使用 hibernate.connection.release_mode.ON_CLOSE. 这种方式是为了向下兼容的,但是已经完全不被鼓励使用了。
after_transaction - 使用hibernate.connection.release_mode.AFTER_TRANSACTION。这一设置不应该在JTA环境下使用。也要注意,使用hibernate.connection.release_mode.AFTER_TRANSACTION的时候,假若session 处于auto-commit状态,连接会像AFTER_STATEMENT那样被释放。
after_statement - 使用hibernate.connection.release_mode.AFTER_STATEMENT。除此之外,会查询配置的ConnectionProvider,是否它支持这一设置((supportsAggressiveRelease()))。假若不支持,释放模式会被设置为hibernate.connection.release_mode.AFTER_TRANSACTION。只有在你每次调用ConnectionProvider.getConnection()获取底层JDBC连接的时候,都可以确信获得同一个连接的时候,这一设置才是安全的;或者在auto-commit环境中,你可以不管是否每次都获得同一个连接的时候,这才是安全的。也就是说supportsAggressiveRelease()返回false的时候,释放模式会被设置为hibernate.connection.release_mode.AFTER_TRANSACTION。如果返回true,只表示它支持使用hibernate.connection.release_mode.AFTER_STATEMENT这一个设置,并不表示一定使用这个设置
1 首先connection.autocommit配置成false的情况:
此种情况需要手动开启事务,需要手动开启transaction,以及提交transaction,并且此时transaction.auto_close_session配置的配置将自动设置为false,所以此时如果connection.release_mode配置为on_close()时需要手动关闭session才能释放JDBC 连接,日志会提示:
transaction completed on session with on_close connection release mode; be sure to close the session to release JDBC resources!
因此connection.autocommit为false的情况建议connection.release_mode采取默认auto。
2 connection.autocommit为true的情况,此时不需要手动开启transaction以及提交transaction,hibernate自动开始transaction并在每次操作后提交transaction,设置此 时transaction.auto_close_session设置将自动为false。 如果connection.release_mode配置为on_close()是需要手动关闭session才能释放JDBC 连接.建议此种情况connection.release_mode设置默认auto。
3 connection.autocommit为true的情况,如果此时又手动开启了transaction,此时connection.autocommit将被设置为false(disabling autocommit),需要手动提交transaction,此种情况如同第一种情况。
1 after_statement 2 after_transaction 3 on_close 其中after_statement 用在jta中 ,on_close 是3.1之前遗留的(也许是为spring留的-_-),也就是3.1之前默认是on_close ,但3.1之后默认如果单独使用hibernate是after_transaction,如果有第三方事务管理,就用第三方提供的默认值,spring就是默认使用了on_close。
在spring管理事务中我们看看系统启动后默认使用的配置:
1,ransaction strategy: org.springframework.orm.hibernate3.SpringTransactionFactory使用spring事务策略
2,hibernate内部 Automatic session close at end of transaction: disabled 因为已经交给spring了
3 Connection release mode: auto 默认,也就是没有配置hibernate.connection.release_mode的时候,但是这里有地方需要注意:也就是前面提到的使用第三方策略时的问题:看一下代码:
String releaseModeName = PropertiesHelper.getString( Environment.RELEASE_CONNECTIONS, properties, "auto" );
log.info( "Connection release mode: " + releaseModeName );
ConnectionReleaseMode releaseMode;
if ( "auto".equals(releaseModeName) ) {
releaseMode = transactionFactory.getDefaultReleaseMode();
} else {
releaseMode = ConnectionReleaseMode.parse( releaseModeName );
if ( releaseMode == ConnectionReleaseMode.AFTER_STATEMENT && !connections.supportsAggressiveRelease() ) {
log.warn( "Overriding release mode as connection provider does not support 'after_statement'" );
releaseMode = ConnectionReleaseMode.AFTER_TRANSACTION;
}
}
其中红色部分就是调用了spring提供的默认值,而spring的默认值:在jta和cmt中都默认使用的是after_statement
/** *//**
* Sets connection release mode "on_close" as default.
* <p>This was the case for Hibernate 3.0; Hibernate 3.1 changed
* it to "auto" (i.e. "after_statement" or "after_transaction").
* However, for Spring's resource management (in particular for
* HibernateTransactionManager), "on_close" is the better default.
*/
public ConnectionReleaseMode getDefaultReleaseMode() {
return ConnectionReleaseMode.ON_CLOSE;
}
而spring为什么要使用on_close ,而不是用after_transaction ,我们想想opensessioninview的原理也许能明白,session在view成还要使用,所以不能再transaction使用完后关闭JDBC connection,必须要在session之后,所以要使用on_close(也就是在on session(flush.auto,或者flush.Eagerly) 关闭)。这种情况hibernate内部还会在spring关闭JDBC connection后提示(费解,因为after transaction之后session没有关闭,但是 Connection release mode配置的是on_close,session的关闭和 Connection 的关闭都由spring来管理,hibernate就不知道了),所以hibernate有好的提示如下(其实session,已经关闭。当然随着session的关闭jdbc链接释放回连接池):
transaction completed on session with on_close connection release mode; be sure to close the session to release JDBC resources!,
。当然我们也可以使用after_transaction ,这种情况对使用编程式事务非常适用。
org.hibernate.connection包的主要封装了通过JDBC来连接数据库的操作,用户可以以数据源的方式,或者通过特定数据库驱动的方式,甚至是自己定义连接类的方式来完成数据库的连接操作,包下面的代码文件并不多,只有5个,分别是ConnectionProviderFactory.java,ConnectionProvider.java,DriverManagerConnectionProvider.java,DatasourceConnectionProvider.java,UserSuppliedConnectionProvider.java,其中ConnectionProvider是一个接口,DriverManagerConnectionProvider、DatasourceConnectionProvider、UserSuppliedConnectionProvider分别继承了这个接口,而ConnectionProviderFactory则是一个工厂类,他的主要作用是调用ConnectionProvider接口,而不关心接口的具体实现是DriverManagerConnectionProvider或者DatasourceConnectionProvider还是UserSuppliedConnectionProvider。
首先来看ConnectionProvider接口,提供了如下几个方法:
1.configure()方法主要是根据配置文件来初始化所有的连接信息。
2.getConnection()方法抓取一个连接。
3.closeConnection(Connection conn)方法关闭某个特定连接。
4.close()关闭所有连接。
5.supportsAggressiveRelease()方法和hibernate.connection.release_mode配置参数有关,该参数用来指定使用哪一种连接释放模式。HIBERNATE参考手册是这样描的: Hibernate关于JDBC连接管理的旧(2.x)行为是,Session在第一次需要的时候获取一个连接,在session关闭之前一直会持有这个连接。Hibernate引入了连接释放的概念,来告诉session如何处理它的JDBC连接。注意,下面的讨论只适用于采用配置ConnectionProvider来提供连接的情况,用户自己提供的连接与这里的讨论无关。通过org.hibernate.hibernate.connection.release_mode的不同枚举值来使用不用的释放模式:
ON_CLOSE - 基本上就是上面提到的老式行为。Hibernate session在第一次需要进行JDBC操作的时候获取连接,然后持有它,直到session关闭。
AFTER_TRANSACTION - 在org.hibernate.Transaction结束后释放连接。
AFTER_STATEMENT (也被称做积极释放) - 在每一条语句被执行后就释放连接。但假若语句留下了与session相关的资源,那就不会被释放。目前唯一的这种情形就是使用org.hibernate.ScrollableResults
auto(默认) - 这一选择把释放模式委派给org.hibernate.transaction.TransactionFactory.getDefaultReleaseMode()方法。对JTATransactionFactory来说,它会返回hibernate.connection.release_mode.AFTER_STATEMENT;对JDBCTransactionFactory来说,则是hibernate.connection.release_mode.AFTER_TRANSACTION。很少需要修改这一默认行为,因为假若设置不当,就会带来bug,或者给用户代码带来误导。
on_close - 使用 hibernate.connection.release_mode.ON_CLOSE. 这种方式是为了向下兼容的,但是已经完全不被鼓励使用了。
after_transaction - 使用hibernate.connection.release_mode.AFTER_TRANSACTION。这一设置不应该在JTA环境下使用。也要注意,使用hibernate.connection.release_mode.AFTER_TRANSACTION的时候,假若session 处于auto-commit状态,连接会像AFTER_STATEMENT那样被释放。
after_statement - 使用hibernate.connection.release_mode.AFTER_STATEMENT。除此之外,会查询配置的ConnectionProvider,是否它支持这一设置((supportsAggressiveRelease()))。假若不支持,释放模式会被设置为hibernate.connection.release_mode.AFTER_TRANSACTION。只有在你每次调用ConnectionProvider.getConnection()获取底层JDBC连接的时候,都可以确信获得同一个连接的时候,这一设置才是安全的;或者在auto-commit环境中,你可以不管是否每次都获得同一个连接的时候,这才是安全的。也就是说supportsAggressiveRelease()返回false的时候,释放模式会被设置为hibernate.connection.release_mode.AFTER_TRANSACTION。如果返回true,只表示它支持使用hibernate.connection.release_mode.AFTER_STATEMENT这一个设置,并不表示一定使用这个设置
1 首先connection.autocommit配置成false的情况:
此种情况需要手动开启事务,需要手动开启transaction,以及提交transaction,并且此时transaction.auto_close_session配置的配置将自动设置为false,所以此时如果connection.release_mode配置为on_close()时需要手动关闭session才能释放JDBC 连接,日志会提示:
transaction completed on session with on_close connection release mode; be sure to close the session to release JDBC resources!
因此connection.autocommit为false的情况建议connection.release_mode采取默认auto。
2 connection.autocommit为true的情况,此时不需要手动开启transaction以及提交transaction,hibernate自动开始transaction并在每次操作后提交transaction,设置此 时transaction.auto_close_session设置将自动为false。 如果connection.release_mode配置为on_close()是需要手动关闭session才能释放JDBC 连接.建议此种情况connection.release_mode设置默认auto。
3 connection.autocommit为true的情况,如果此时又手动开启了transaction,此时connection.autocommit将被设置为false(disabling autocommit),需要手动提交transaction,此种情况如同第一种情况。
发表评论
-
hibernate annotation
2014-11-24 17:17 579/** * 父级分类 */ ... -
Hibernate Annotation几种关联映射
2013-08-12 23:43 1036Hibernate Annotation几种关联映射 h ... -
hibernate4+spring3.1整合常见问题解决方法
2012-09-13 09:44 01、spring3.1去掉了HibernateDaoSuppo ... -
hibernate内不可使用的id生成器
2012-06-28 10:24 1780使用@GeneratedValue1 正对不同的数据库可以同时 ... -
hibernate 调优
2012-06-28 10:16 1178在你的项目中引入Hiber ... -
hibernate的主键生成策略
2012-03-12 15:04 1399主键生成策略:"uuid2& ... -
hibernate对象关系的映射
2012-03-02 10:04 1598hibernate对象之间存在关系, =-====== ... -
proxool-listenerCfg.jar
2012-02-16 17:23 0package org.logicalcobwebs.prox ... -
proxool-listenerCfg.jar
2012-02-16 17:23 0package org.logicalcobwebs.prox ... -
Hibernate.properties
2012-02-07 09:57 1183Hibernate的描述文件可以是一个 properti ...
相关推荐
`HibernateTransactionManager`是Spring提供的专门用于管理Hibernate事务的类,它会自动处理Hibernate Session和JDBC Connection的开启、提交、回滚。 三、配置Spring事务管理 在Spring的配置文件中,我们需要添加...
在Spring框架中,可以通过配置XML或使用注解来实现声明式事务管理,这样可以将事务逻辑从业务代码中解耦。例如,使用`@Transactional`注解标记在方法上,Spring会自动管理事务的开始、提交或回滚: ```java @...
- **编程式事务管理**:使用`Session`对象的`beginTransaction()`、`commit()`和`rollback()`方法直接管理事务。 - **声明式事务管理**:在Spring框架中,可以使用`@Transactional`注解声明事务边界,由Spring容器...
Hibernate通过JTA(Java Transaction API)或JDBC的Connection对象来管理事务。在SessionFactory的配置中,可以通过`<transaction-manager>`元素选择事务管理策略。 - JTA事务管理:适用于EJB容器或应用服务器,...
使用AOP(面向切面编程)进行事务管理,通常在Spring框架中实现。在方法上添加@Transactional注解,由容器自动管理事务。 七、事务边界与异常处理 在业务逻辑中,应确保在可能抛出异常的地方进行事务回滚,以防止...
总的来说,Spring事务管理通过AOP和对Session的智能管理,为开发者提供了一种高效且灵活的事务处理方式,无论是使用JDBC还是ORM框架如Hibernate,都能够轻松地处理事务。理解Spring事务管理的工作原理,对于优化和...
在Spring中,我们可以使用`LocalSessionFactoryBean`来创建SessionFactory,并通过`HibernateTransactionManager`管理事务。在`servlet-context.xml`中配置如下: ```xml <!-- Hibernate SessionFactory配置 --> ...
当我们将 Spring 与 Hibernate 整合时,主要目的是让 Spring 的 IoC 容器管理 Hibernate 的核心接口 `SessionFactory`,以及利用 Spring 提供的声明式事务管理机制来处理事务。这样做的好处在于可以减少代码量、提高...
这部分代码可能演示了如何在Hibernate Session中开启、提交和回滚事务,以及如何处理事务中的异常。 总结来说,这篇笔记介绍了Spring的编程式事务管理,包括使用PlatformTransactionManager接口,事务的ACID特性,...
在Hibernate中,事务处理是通过`Transaction`对象进行的,通常配合Spring的事务管理来实现声明式事务。 总结来说,Hibernate框架使得Java开发者可以专注于业务逻辑,而无需过多关注底层数据库操作。通过正确配置和...
### Hibernate3 使用经验 #### 一、在 Hibernate 中配置参数 ...这些内容涵盖了如何在 Hibernate 中配置参数、执行 SQL 语句、获取 Session 以及如何在 DAO 层进行事务处理等方面的知识点。希望对读者有所帮助。
在实际开发中,为了更好地管理Session和事务,我们通常会使用DAO(数据访问对象)模式,或者Spring的HibernateTemplate或JPA的EntityManager。这些高级工具可以自动化处理事务管理和Session生命周期,减少出错的可能...
### Java8 + Tomcat8 + Struts2.5 + Spring4.3 + Hibernate5.2 框架搭建详细过程 #### 一、环境配置与准备 在搭建一个基于Java8 + Tomcat8 + Struts2.5 + Spring4.3 + Hibernate5.2 的项目前,首先需要对开发环境...
在Hibernate中,我们使用`Session.beginTransaction()`来启动事务,然后在需要时调用`commit()`或`rollback()`。这种方式提供了精细的事务控制,可以在方法的任意位置进行事务管理,但会导致代码中事务管理的逻辑...
Hibernate提供了对事务的管理,通常在业务层处理事务,使用`Session.beginTransaction()`开始一个事务,`transaction.commit()`提交事务,`transaction.rollback()`回滚事务。 8. **查询操作** Hibernate支持HQL...
- Session:是与数据库进行交互的主要接口,相当于JDBC中的Connection,支持事务管理和缓存管理。 - Transaction:处理数据库事务,提供开始、提交、回滚等操作。 - Query和Criteria API:用于执行数据库查询,...
在实际项目中,通常会使用Spring等框架来管理事务和session,以便更好地控制并发和资源释放。 在案例中提到的`OracleTest`可能是一个包含测试用例的类,用于验证上述操作的正确性。这个类可能会包括JUnit测试方法,...
在 Spring 配置文件中启用事务管理: ```xml <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"> <tx:annotation-driven transaction-manager=...
- **基于JTA的事务管理**: 使用Java Transaction API进行分布式事务管理。 #### 十二、锁(Locking) - **悲观锁**: - 在操作数据前加锁,防止并发问题。 - **乐观锁**: - 通过版本号等方式检测数据是否被其他...