ORM ,即Object-Relation Mapping
该技术是使面向对象的类和面向关系的数据库表相互绑定在一起。
域模型(面向对象)<----------------(ORM,对象关系映射)-------------->数据模型(面向过程)
关联关系
1. 单向关联;
1.1 单对单1:1 one to one
1.2 单对多1:M one to many
1.3 多对单M:1 many to one
1.4 多对多M:N many to many
2. 双向关联
2.1 一对多one to many && 多对一many to one
2.2 双向一对一 one to one
2.3 双向多对多many to many
依赖关系
聚集关系
聚集指的是整体和部分之间的关系,在实体域对象之间很常见。
面向对象概念
1. 类
2. 对象
3. 属性
面向关系概念
1. 表
2. 表的行(即记录)
3. 表的列(即字段)
Session 管理及持久化类
Persistence 持久
Hibernate 的Session是和数据库建立连接,实际上和JDBC的Contection作用类似。SessionFactory实际上是和数据库的连接池作用类似。
Hibernate是Java应用和关系数据库之间的桥梁,它负责Java对象和关系数据之间的映射。
Hibernate内部封装了JDBC访问数据库的操作,向上层应用提供了面向对象的数据访问API。
在Java应用中使用Hibernate包含以下步骤:
1. 创建Hibernate的配置文件
2. 创建持久化类
3. 创建对象-关系映射文件
4. 通过Hibernate API编写访问数据库的代码
在Hibernate中持久化类的对象可以划分为三种状态,分别为瞬态,持久态,托管态。
1, 瞬态(Transient) 也叫临时态,处于这种状态的对象具备的特征如下:
a. 不在Session的缓存中,不与任何的Session实例相关联。
b. 在数据库中没有与之对应的记录。
2. 持久态(Persistent), 处于该状态的对象具备如下特征:
a. 在Session的缓存中,与Session实例相关联。
b. 在数据库中存在与之对应的记录。
3. 托管态(Detached) , 处于该状态的对象具备如下特征:
a. 不在Session的缓存中,不与任何的Session实例相关联。
b. 在数据库中存在与之对应的记录。(前提条件是)
Hibernate事务和数据操作
事务就是指作为单个逻辑工作单元执行的一组数据操作,这些操作要么必须全部成功,要不必须弯曲失败,以保证数据的一致性和完整性。
事务具有ACID属性:
Atomic原子性:原子性确保事务中的所有操作要么都发生,要么都不发生。
Consistent一致性:一旦一个事务结束了(无论成功与否),系统所处的状态和它的业务规则是一致的。即数据应当不会被破坏。
Isolated隔离性:事务应该允许多个用户操作同一个数据,一个用户的操作不会其它用户的操作相混淆。
Durable持久性:一旦事务完成,事务的结果应该持久化。
事务的ACID属性是由关系数据库管理系统RDBMS来实现的。
数据库管理系统采用日志来保证事务的原子性,一致性和持久性。
日志记录了事务对数据库所做的更新,如果某个事务在执行过程中发生错误,就可以根据日志,撤销事务对数据库已有的更新,从而使数据库退回到执行事务前的初始状态。
数据库系统采用锁机制来实现事务的隔离性。当多个事务同时更新数据库相同的数据时,只允许持有锁的事务能更新该数据。其他事务必须等待,直到前一事务释放了锁,其他事务才有机会更新该数据。
Hibernate中使用JDBC事务
Hibernate中使用JTA事务
两种事务使用上的区别:
数据处理
1. 数据的新增
2. 数据的更新
3. 数据的删除
Hibernate 检索策略
Session有3种检索方式:load()、get()和find(),它们都用来从数据库中检索对象。
前两个是按照参数指定的OID来加载一个持久化对象,后者按照参数指定的HQL语句来加载一个或者多个持久化对象。
Hibernate提供了一下几种检索的方式:
1. 导航对象检索方式(根据已经加载的对象,导航到其他对象)
2. HQL检索方式(使用面向对象的HQL[Hibernate Query Language]查询语句)
3. QBC检索方式(使用QBC[Query By Certeria] API来检索对象)
4. 本地SQL检索方式(使用本地数据的SQL查询语句)
HQL[Hibernate Query Language]
HQL是面向对象的查询语言,它和SQL查询语句相似。
HQL具有以下功能:
1. 在查询语句中设定各种查询条件
2. 支持投影查询,即仅检索出对象的部分属性
3. 支持分页查询
4. 支持分组查询,允许使用having和group by关键字
5. 提供内置聚集函数
6. 能够调用用户自定义的SQL函数
7. 支持子查询,即嵌入式查询
8. 支持动态绑定参数
使用HQL查询按如下步骤进行:
1. 获取Hibernate Session对象
2. 编写HQL语句
3. 以HQL语句作为参数,调用Session的createQuery方法创建查询对象
4. 如果HQL语句包含参数,调用Query的SetXxx方法为参数赋值
5.调用Query对象的List等方法遍历查询结果
HQL检索方式
1. 实体查询
2. 属性查询
参数绑定
QBC[Query By Certeria]检索方式
采用HQL检索方式时,在应用程序中需要定义的基于字符串形式的HQL查询语句。QBC API提供了检索对象的另一种方式,它主要由Criteria接口、Certeria接口和

2736

被折叠的 条评论
为什么被折叠?



