Hibernate数据库操作详解:Session使用与事务管理
1星 需积分: 10 155 浏览量
更新于2024-09-12
1
收藏 11KB TXT 举报
"这篇笔记详细介绍了如何使用Hibernate框架来操作数据库,包括了初始化Hibernate、获取SessionFactory和Session对象、开始事务以及使用Session进行CRUD(创建、读取、更新、删除)操作的方法。此外,还提到了Session的flush()、clear()方法以及延迟加载的概念。"
在Java开发中,Hibernate是一个强大的ORM(对象关系映射)框架,它简化了数据库操作,允许开发者使用面向对象的方式处理数据库。这篇笔记主要讲解了以下几个关键知识点:
1. 初始化Hibernate:
开始使用Hibernate前,我们需要加载配置文件`hibernate.cfg.xml`。这通常通过创建`Configuration`对象并调用其`configure()`方法来实现。配置文件包含了数据库连接信息、实体类映射等设置。配置完成后,可以通过`buildSessionFactory()`方法生成`SessionFactory`对象。`SessionFactory`是线程安全的,整个应用应全局共享一个实例。
2. 获取SessionFactory和Session:
`SessionFactory`是昂贵的对象,不建议频繁创建,通常采用单例模式管理。而`Session`对象是非线程安全的,每次数据库操作应创建新的`Session`实例。在事务开始前,可以调用`Session`的`flush()`方法将缓存中的数据提交至数据库,然后使用`clear()`方法清空Session缓存,最后使用`beginTransaction()`开始一个新的事务。
3. Session操作数据:
- `save()`:用于保存新对象到数据库,若对象已有ID,则执行更新操作。
- `saveOrUpdate()`:根据对象状态自动决定执行`save()`或`update()`。
- `delete()`:删除指定对象,只需提供对象的主键即可。
- `update()`:更新对象,同样需提供主键。
- `get()`:根据主键立即从数据库加载对象,若数据库中无此记录则返回null。
- `load()`:延迟加载,只有在访问对象属性时才触发查询。如果对象不存在,抛出`ObjectNotFoundException`。
- `createQuery(String HQL)`:创建HQL查询,`list()`返回查询结果列表,`iterate()`迭代结果,`uniqueResult()`返回单个结果。
4. 延迟加载(Lazy Loading)与缓存机制:
Hibernate提供了两级缓存,一级缓存是Session级别的,二级缓存是SessionFactory级别的。`load()`方法使用延迟加载机制,当真正访问对象时才执行数据库查询。`get()`方法则直接从一级缓存或数据库中获取数据。
5. SQL查询:
除了HQL,Hibernate还支持创建`createSQLQuery(String SQL)`,直接执行原生的SQL查询。
通过理解这些基本操作,开发者可以有效地利用Hibernate来处理数据库交互,提高代码的可维护性和性能。在实际开发中,还需要考虑事务管理、性能优化(如缓存策略、批处理等)以及错误处理等细节。
122 浏览量
点击了解资源详情
点击了解资源详情
101 浏览量
2011-12-23 上传
2015-08-08 上传
2019-03-31 上传
2012-09-05 上传
2008-11-25 上传