hibernate 二

一、ORM
1、持久化管理器 --- session
持久化对象和临时对象,持久化对象,即对象的信息在数据库中存在,在内存中也有。
临时对象也就是新对象,没有同步到数据库。

session开放,对对象的修改,session都会保持其的同步
session.save(Object); 变为持久状态,默认在调用commit()时执行语句
session关闭,对象进入游离状态
删除对象,可以直接删除游离状态的对象,到临时状态,其间有一个转换到持久状态的过程

2、Hibernate中的对象的状态:
(1) Transient Object 临时对象
不与数据库中的任何一条记录关联,其生命周期在不被任何其他对象引用时为止,然后被垃圾回收。
(2) Persistent Object 持久化对象
持久化对象实例有一个主健值作为其数据库标识,与Persistence Manage相关联,持久化对象实例总是与一个Session相关联。
注:ORM有一个策略侦察持久化对象的更改,即automatic dirty checking。
对于应用他是隐藏的。Hibernate的策略时尽可能晚的更新数据库,Hibernate默认时更新数据库的所有字段,若只想更新更改了的字段则改dynamic-update = “true”,即动态更新。
(3) Datached Object 脱管对象
当关闭session,实例失去了与Persistence manager的关联,这些对象称作为托管对象,即不再与数据库关联也不在hibernater的管理之下。
在应用中的一个事务之外可保存脱管对象的引用,这些引用可被再次用于新的事务中。

3、ORM就是关系映射
是把对象永久保存到数据库的过程

二、SessionFactory是和一个数据库一一对应的,他只能对应一个hibernate.cfg.xml文件,一个hibernate.cfg.xml中只能配置一个数据库的连接信息。

POJO(普通的java类)

持久化对象和临时对象,持久化对象,即对象的信息在数据库中存在,在内存中也有。临时对象也就是新对象,没有同步到数据库。

Session,持久化管理器。


三、Hibernate的核心接口

Configuration,用于解析hibernate.cfg.xml文件和XXXXX.hbm.xml文件,并创建SessionFactory对象。
SessionFactory,用于创建Session对象。
Session,持久化管理器,对象级数据库操作
必须工作在单线程环境下:(1)加synchronized (2)不能保存为成员变量,要创建局部变量
Query,对对象作持久化操作或查询操作
Transaction ,用于管理操作事务。


四、<hibernate-mapping package="XXX.XXX.XXX" auto-import="false">
package 类的包名,在下面的映射中就可以不写类的全限定名称


五、id生成方式
1,序列sequence 只适用于Oracle
<id name="id" column="id">
<generator class="sequence">
<param name="sequence">person_seq</param><!--指定sequence名-->
</generator>
</id>


2,自增列,适用于SQLServer、MySql
<id name="id" column="id">
<generator class="identity"/>
</id>


3,取最大值加一
<id name="id" column="id" type="integer">
<generator class="increment"/>
</id>


4,根据底层数据库指定生成方法
<id name="id" column="id">
<generator class="native"/>
</id>
使用缺省策略
针对Oracle数据库的生成方式还是sequence,只不过需要一个特定名字的sequence,"hibernate_sequence"。


5,高低位算法
<id name="id" column="id">
<generator class="hilo">
<param name="table">high_value</param>
<!--设置高位值取值的表-->
<param name="column">next_value</param>
<!--设置高位值取值的字段-->
<param name="max_lo">50</param>
<!--指定低位最大值,当取道最大值是会再取一个高位值再运算-->
</generator>
</id>
以上是hilo算法的普通形式,不适合用于squenece
在一个会话中保存多个对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值