使用Hibernate的好处
* 生产力提高
* 更对象化 OOP 设计对象化OOD
* 透明持久化使用侵入性少
* HQL使移植性更好
不好的地方
* 不能实现批量查询统计修改,删除等操作
Hibernate 核心接口
* SeesionFactory 是线程安全
* SeesionFactory获取很耗时,所以一般只获取一次
* 获取方法
//读取hibernate.cfg.xml文件
Configuration cfg = new Configuration().configure();
//创建SessionFactory
SessionFactory factory = cfg.buildSessionFactory();
* session 是非线程安全的
session = factory.openSession();
* Transaction事务有
* JDBC事务 同一Connection内部
session.beginTransaction();
session.getTransaction().commit();
session.getTransaction().rollback();
* JTA事务 跨数据库事务
* Interceptor拦截器 没有侵入性
* UserType 自定义 类型转化 有转换器的概念
持久化对象的生命周期(lifecycle)
Transient [trænziənt] 短暂的; 片刻的; 转瞬即逝的
Persistent [pəˈsistənt] 持续的; 不断的
Detached [diˈtætʃt]] 分离的, 远离的
Transient Object瞬时对象(new之后没有跟数据库关联)
* 在数据库没有与之匹配的数据
* 没有纳入session的管理
Persistent Object持久对象
* 在数据库中有对应记录数据
* 纳入了Session的统一管理
* 在清理缓存(脏数据检查 commit)的时候,会和数据库数据同步
Detached Object 离线对象 session关闭之后的对象
* 在数据库中有对应记录数据
* 没有纳入session的管理
Hibernate的CRUD操作
session获取数据的方式get和load方法的区别:get不支持lazy;load支持lazy
session.get(Class clazz, Serializable id)
* 当数据不存在时候 返回null
session.load(Class clazz, Serializable id)
* 使用load方法 不会发出查询sql,因为load方法实现了lazy(懒加载或延迟加载)
* 延迟加载:只有真正使用对象的时候,才加载(发出sql语句)
* hibernate延迟加载实现原理就是代理方式(CGLIB)
* 当数据不存在是不返回任何信息,当开始开始使用对象时候就会抛出ObjectNotFoundException异常
session.update
* 如果是手动构造对象update的话,必须手动构造对象在数据库中有对应数据,而且构造完全对象,
* 否则没有构造的属性update之后会变成null
* 所以update操作最好是先获取对象然后再update
分享到:
相关推荐
尚学堂的Spring学习笔记.doc可能包含对这些特性的详细解释、实例代码以及如何在实际项目中应用的指导,对于想要深入理解Spring 3.0的开发者来说是一份宝贵的参考资料。通过阅读这份笔记,你可以系统地学习Spring 3.0...
### Hibernate 3.2 学习笔记:一对一主键关联详解 #### 一、一对一主键关联概述 在本节中,我们将详细探讨 Hibernate 3.2 中的一对一关联关系,尤其是通过主键实现的双向关联。这种关联通常出现在需要紧密绑定两个...
### Hibernate学习笔记01 #### 一、Hibernate简介与安装 **Hibernate** 是一款开源的对象关系映射(Object Relational Mapping, ORM)框架,它能够有效地简化Java应用程序与数据库之间的交互,提供了一种更为优雅...
这篇学习笔记将深入探讨Hibernate的基础和关键特性,包括其核心概念、配置、注解使用以及ORM的核心原理。 1. **Hibernate概述** Hibernate是一个开源的ORM框架,由Gavin King创建,它通过提供一个接口,让开发者...
本文主要基于一份关于 Hibernate 的学习笔记,详细阐述 Hibernate 的基本配置流程及常见问题。 #### 二、Java 配置 Hibernate 配置 Hibernate 并不是一项特别复杂的工作,但需要注意一些细节,否则很容易出现错误...
### Hibernate入门知识点详解 #### 一、环境搭建与配置 **1.1 搭建环境** - **项目创建:** 首先,新建一个Java项目,命名为`HibernateDemo`。...接下来,可以进一步学习如何使用Hibernate进行数据的增删改查操作。
在Java开发领域,Hibernate是一个非常重要的对象关系映射(ORM)框架,它简化了数据库操作,将Java对象与数据库表之间的映射过程自动化。这篇“Hibernate项目笔记”可能涵盖了使用Hibernate进行数据库操作的核心概念...
这份名为“软件工程师学习笔记大全(C++,JAVA)4.rar”的压缩文件包含了软件工程师在学习C++和Java编程语言时的重要参考资料。这些文档详细涵盖了从基础到高级的各种主题,对于提升技能和准备面试非常有帮助。以下...