`
kidiaoer
  • 浏览: 821817 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

在Hibernate中使用JDBC事务

阅读更多
在Hibernate中使用JDBC事务
Hibernate对JDBC进行了轻量级的封装,它本身在设计时并不具备事务处理功能。Hibernate将底层的 JDBCTransaction或JTATransaction进行了封装,再在外面套上Transaction和Session的外壳,其实是通过委托底层的JDBC或JTA来实现事务的处理功能的。

要在Hibernate中使用事务,可以在它的配置文件中指定使用JDBCTransaction或者JTATransaction。在hibernate.properties中,查找“transaction.factory_class”关键字,得到以下配置:

# hibernate.transaction.factory_class  org.hibernate.transaction.JTATransactionFactory
# hibernate.transaction.factory_class  org.hibernate.transaction.JDBCTransactionFactory

Hibernate的事务工厂类可以设置成JDBCTransactionFactory或者JTATransactionFactory。如果不进行配置,Hibernate就会认为系统使用的事务是JDBC事务。

在JDBC的提交模式(commit mode)中,如果数据库连接是自动提交模式(auto commit mode),那么在每一条SQL语句执行后事务都将被提交,提交后如果还有任务,那么一个新的事务又开始了。

Hibernate在Session控制下,在取得数据库连接后,就立刻取消自动提交模式,即Hibernate在一个执行Session的 beginTransaction()方法后,就自动调用JDBC层的setAutoCommit(false)。如果想自己提供数据库连接并使用自己的 SQL语句,为了实现事务,那么一开始就要把自动提交关掉(setAutoCommit(false)),并在事务结束时提交事务。

使用JDBC事务是进行事务管理最简单的实现方式,Hibernate对于JDBC事务的封装也很简单。下面是一个在Hibernate中使用JDBC事务的例子:

try {
Session session = HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();  //在默认情况下,开启一个JDBC事物
for(int i=0; i<10; i++)  {
Student stu = new Student();
stu.setName("Student" + i);
session.save(stu);
}
tx.commit(); //提交事务
session.close();
} catch(Exception e) {…
tx.rollback();   //事务回滚
}



分享到:
评论

相关推荐

    spring hibernate,spring jdbc事务管理

    两个项目,一个项目是基于spring jdbc实现的分布式事务,一个是基于spring hibernate的分布式事务,hibernate项目里的applicationContext2.xml是基于mysql和mssql, applicationContext3.xml基于两个mssql, ...

    搭建hibernate所使用的jar包,内含mysql的jdbc的jar包

    5. **事务管理**:Hibernate支持JTA和JDBC事务管理,为应用程序提供了强大的事务处理能力。 6. **缓存机制**:内置了第一级缓存(Session级别的)和第二级缓存(SessionFactory级别的),提高了数据访问速度。 **...

    hibernate所需包:hibernate3,依赖包,JDBC

    在Hibernate中,JDBC驱动程序是必要的,以便应用程序能够连接到特定的数据库。例如,"mysql-connector-java-3.1.13-bin.jar"就是MySQL的JDBC驱动,用于连接到MySQL数据库。 **总结** 在Java开发中,Hibernate3是一...

    JDBC与Hibernate区别

    在实际应用中,开发者可以根据具体情况进行权衡,甚至结合两者的优点,例如使用Hibernate进行常规操作,而在性能关键点采用JDBC优化。重要的是理解它们的工作原理,以便在不同的开发环境下做出明智的决策。

    分别使用Hibernate和JDBC操作数据库

    2. **Session接口**:类似于JDBC中的Connection,它是操作数据库的基本单元,提供事务管理和缓存管理。 3. **Entity类**:Java类代表数据库表,通过注解(@Entity)声明为Hibernate实体。 4. **持久化操作**:使用...

    JDBC和hibernate事务的详解

    - **执行SQL操作**:在此阶段,开发者会执行一系列的SQL语句,这些语句会被包含在一个事务中。 - **提交或回滚**:如果所有操作都成功,调用`commit()`方法提交事务;若有任何错误,调用`rollback()`方法回滚事务,...

    详解Hibernate事务处理机制

    在`hibernate.properties`文件中,可以通过以下配置指定使用JDBC事务工厂: ```properties hibernate.transaction.factory_class=net.sf.hibernate.transaction.JDBCTransactionFactory ``` 这种配置下,Hibernate...

    day36 09-Hibernate中的事务:事务处理

    在这个例子中,`addUser`方法会被Spring自动包裹在一个事务中,如果方法执行过程中发生异常,事务会回滚;否则,当方法执行完毕,事务会被提交。 **六、hibernate.cfg.xml配置** 在Hibernate的配置文件中,可以设置...

    Hibernate and JDBC

    - **灵活性限制**:相比直接使用JDBC,Hibernate在某些场景下可能缺乏足够的灵活性,特别是对于需要高度定制化的查询。 - **资源消耗**:Hibernate需要额外的内存来存储Session对象,对于大规模部署的应用程序来说,...

    spring分别与jdbc和hibernate结合的事务控制--案例

    同时,Spring还提供了编程式事务管理,允许在代码中显式地开始、提交、回滚事务,但这种方式通常在复杂场景中使用。 接下来,我们讨论Spring与Hibernate的集成。Hibernate是一个流行的ORM(对象关系映射)框架,它...

    oracle分别使用jdbc和hibernate的例子

    本文将深入探讨如何使用JDBC和Hibernate来操作Oracle数据库,同时结合提供的标签"源码"和"工具",我们将讨论它们的实现细节和优势。 首先,JDBC是Java语言的标准API,它允许Java应用程序与各种类型的数据库进行通信...

    本人理解hibernate 与 JDBC 的最本质区别

    标题中的“本人理解hibernate 与 JDBC 的最本质区别”揭示了我们即将探讨的核心主题:Hibernate 和 JDBC 在处理数据库操作时的不同之处。 Hibernate 是一个对象关系映射(ORM)框架,而 JDBC(Java Database ...

    jdbc和hibernate的区别

    2. **非线程安全**:JDBC和Hibernate中的数据库连接或会话对象都不是线程安全的,因此在多线程环境中使用时需要注意同步控制。 3. **事务管理**:两者都支持显式的事务处理,可以通过编程方式来控制事务的提交和回滚...

    SpringAOP整合Hibernate并使用事务

    下面我们将详细讲解如何进行Spring AOP整合Hibernate以及如何在其中使用事务。 1. **Spring AOP简介** 面向切面编程(AOP)是Spring框架的核心特性之一,它允许开发者定义“切面”,这些切面可以包含业务逻辑的...

    在Spring中配置Hibernate事务

    上述代码中,`addUser`方法将在一个事务中执行,如果发生异常,事务会被自动回滚。 6. **测试事务管理**: 编写单元测试或集成测试以验证事务的正确性。在测试中,可以故意引发异常,观察事务是否按照预期进行...

    Spring对Hibernate及JDBC提供的支持

    在实际项目中,Spring还允许开发者结合使用Hibernate和JDBC。例如,在大数据量的简单查询场景下,可以选择性能较高的JDBC;而在复杂的对象关系映射或者更新操作时,可以利用Hibernate的ORM优势。Spring的这种灵活性...

    jdbc_Hibernate总结

    4. 执行操作:在事务中进行增删改查操作。 5. 提交或回滚事务:`commit()`方法提交事务,`rollback()`方法则回滚事务。 6. 关闭Session和SessionFactory:`Session.close()`和`SessionFactory.close()`释放资源。 ...

    Jdbc 和hibernate

    标题 "Jdbc 和hibernate" 提到的两个主要概念是Java数据库连接(JDBC)和Hibernate,它们都是Java开发中用于与关系型数据库交互的重要技术。本文将深入探讨这两个技术,以及它们之间的区别和联系。 JDBC是Java平台...

    hibernate jdbc需要用的jar

    在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者使用面向对象的方式来操作数据库,极大地简化了数据库操作。然而,为了使Hibernate正常工作,我们需要依赖一些外部库,包括JDBC驱动...

    使用代理实现Hibernate Dao层自动事务

    1. 配置Spring的事务管理器:在Spring的配置文件中,我们需要声明一个PlatformTransactionManager,如DataSourceTransactionManager,它是基于JDBC的数据源事务管理器。 2. 定义事务的切面:创建一个切面类,使用`@...

Global site tag (gtag.js) - Google Analytics