`

hibernate中使用session之一:别忘了关闭session

阅读更多

请看下如下的操作:

 

Session session = HibernateUtil.currentSession();   
Transaction tx = session.beginTransaction();//(2)   
session.save(someObj);//将someObj插入到DB中   
tx.commit();//(4)  

 

 

你认为对象someObj会插入到DB中吗?
答案是对象并没有被保存到数据库中。


这是怎么回事,事务不是提交了吗,为什么数据没有被插入到DB中呢?相信对于惯于通过jdbc操作数据库,而且不太熟悉hibernate的开发人员而言,有可能会有这样的疑问。

 

简单解释一下:
(2)中的Transaction不是jdbc中常用的javax.transction.Transaction,所以(4)这一句并不代表完成了对数据库的操作。另外,需要了解下hibernate的session的缓存机制。


session对象中维护着一个持久化对象的map列表,someObj就保存在此列表中。对于hibernate的api来说,只有调用了session.close(),hibernate才会将当前session缓存中的持久化对象和数据库中的数据进行同步,该插入的插入,该更新的更新,等等。

 

结论:
使用hibernate时,千万别忘了关闭session。

 

分享到:
评论

相关推荐

    hibernate--3.Hibernate数据持久化(通过 Session 操纵对象)

    同时,别忘了在每次数据库操作后关闭Session,释放资源。 最后,事务管理是数据库操作的关键部分。在Hibernate中,通常在Transaction对象的生命周期内完成一组操作。如上述示例所示,开始事务、执行操作、提交事务...

    Hibernate之配置使用案例hibernate001

    在处理完数据库操作后,别忘了关闭Session和SessionFactory,以释放资源。 此外,Hibernate还支持HQL(Hibernate Query Language),这是一种面向对象的查询语言,可以用来执行复杂的查询。例如,获取所有用户名为...

    基于IDEA的SSH项目之五:集成Hibernate--程序包

    最后,别忘了在Struts2的配置文件(struts.xml)中配置Action,使其能调用我们的Service层方法。通过以上步骤,我们就成功地在IDEA的SSH项目中集成了Hibernate。 总结一下,这个教程涵盖了以下知识点: 1. 创建SSH...

    Hibernate调用配置文件中的sql语句

    5. **事务处理**:执行SQL查询通常涉及数据库事务,别忘了在适当的地方进行事务管理。在Hibernate中,可以通过Session的beginTransaction和commitTransaction方法来控制事务的开始和结束。 通过上述步骤,我们就...

    使用Maven配置Hibernate5

    最后,别忘了关闭`Session`和`SessionFactory`: ```java session.close(); sessionFactory.close(); ``` 这就是一个基本的使用Maven配置Hibernate5的流程。通过这种方式,你可以轻松地在Java应用中管理和操作...

    hibernate操作

    最后,别忘了在每次操作完成后关闭`Session`,以释放资源。在实际开发中,可能还需要实现事务管理、错误处理等高级功能,但这已经涵盖了Hibernate基本操作的流程。通过这种方式,你可以轻松地在MyEclipse中使用...

    Spring-hibernate结合使用全xml配置方式

    在Java企业级开发中,Spring和Hibernate是两个非常重要的框架,Spring主要负责依赖注入和管理,而Hibernate则专注于对象关系映射(ORM)和数据库操作。本教程将详细介绍如何将两者结合,通过全XML配置方式进行集成,...

    hsqldb整合hibernate

    操作完成后,别忘了关闭`Session`和`SessionFactory`,释放资源: ```java session.close(); sessionFactory.close(); ``` ### 8. 性能优化 HSQldb内存模式下的性能非常快,但需要注意的是,一旦应用关闭,内存中...

    Hibernate连接数据库的注册的项目

    最后,别忘了关闭SessionFactory,避免资源泄露: ```java if (sessionFactory != null) { sessionFactory.close(); } ``` 总的来说,使用Hibernate连接数据库注册项目涉及到多个步骤,包括配置文件的设置、实体...

    Hibernate学习笔记(一)代码

    在完成操作后,别忘了关闭`Session`以释放资源。 为了查询数据,我们可以使用`Query`或`Criteria` API。假设我们要根据用户名查找用户,可以这样写: ```java Session session = sessionFactory.openSession(); ...

    hibernate对应的jar包

    在Java开发中,Hibernate是不可或缺的一部分,特别是在处理复杂的数据交互时。这个"hibernate对应的jar包"很可能包含了Hibernate框架运行所需的库文件。 在Java应用程序中使用Hibernate,通常需要以下核心的jar包:...

    Hibernate连接Mycat例子详解.zip

    6. 关闭资源:最后,别忘了关闭Session和SessionFactory以释放资源。 通过这种方式,你可以利用Hibernate的便利性和Mycat的分布式能力,构建高性能的Java应用。在实际项目中,还需要考虑错误处理、性能优化、数据...

    hibernate使用

    别忘了关闭`Session`和`SessionFactory`以避免资源泄漏。 在MyEclipse中,你还可以利用其强大的代码生成工具自动生成实体类、映射文件以及DAO(数据访问对象)层的代码,这将大大提高开发效率。 总结来说,使用...

    hibernate开发所依赖的jar包

    在Java世界中,Hibernate是一个非常流行的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库,极大地简化了数据库操作。本压缩包包含了进行普通Hibernate开发所需的最基本jar包,确保你能顺利...

    Hibernate流程

    8. **关闭资源**: 最后,别忘了在操作完成后关闭Session和SessionFactory,以释放资源。 以上就是Hibernate的基本流程,对于初学者来说,理解并熟练掌握这些步骤是十分重要的。通过实践和理解,可以更有效地利用...

    hibernate框架调用存储过程

    5. **关闭资源**: 执行完操作后,别忘了关闭Session和SessionFactory,以避免资源泄露。 与JDBC调用存储过程相比,Hibernate提供了一种更加面向对象的、更简洁的接口。在JDBC中,你需要手动编写SQL字符串,设置参数...

    Hibernate+sqlserver2000分页

    首先,Hibernate是Java领域中最流行的ORM(对象关系映射)框架之一,它允许开发者使用面向对象的方式操作数据库,减少了直接编写SQL语句的工作量。而SQL Server 2000是一款由Microsoft开发的关系型数据库管理系统,...

    hibernate分页

    4. **关闭Session**:最后别忘了关闭Session,以释放资源。 ```java session.close(); ``` ### 使用HQL进行分页 1. **编写HQL查询语句**:HQL支持类似SQL的查询语法,但面向对象。 ```java String hql = ...

    springmvc4_hibernate5_maven

    在Hibernate中,我们可以使用Session的CRUD方法(create, read, update, delete)来执行数据库操作,或者使用Criteria API和HQL(Hibernate Query Language)进行更复杂的查询。 最后,别忘了创建DAO(Data Access ...

    Hibernate入门(配置文件+增删改查)

    最后,别忘了关闭`Session`和`SessionFactory`以释放资源。在实际项目中,还可以使用Spring的`HibernateTemplate`或`JPA`进行更高级的事务管理和数据操作。 通过这个“Hibernate入门”教程,你将能了解并实现使用...

Global site tag (gtag.js) - Google Analytics