hibernate 五大接口:
Configuration :加载hibernate 配置文件,默认在src 下的hibernate.cfg.xml
SessionFactory :创建Session 的Session工厂
Session :与数据库通信用的,开启事务
Query:通过Session.createQuery()创建
Transcation :事务:session.beginTransaction() session,getTranscation().commit()
get和load 的区别:
load为延迟加载:返回的是一个只有id属性的代理对象(只有用到的时候才会执行sql 语句,如果找不到会报ObjectNotFoundException,建议是确定有这个对象的时候用)
get是立即加载:执行时立即向数据库发送sql 语句,如果找不到,返回null
hibernate 主键生成策略
1,uuid:生成一个32位,不会重复的主键
2,native:使用本地生产策略
3、sequence(oracle)
4、increment :主键自增(先查询到主键最大值,之后加1)
5、Assigned(指派):不怎么熟悉,没用过
hibernate对象的三种状态及状态转换
1.Transient(临时对象):当我们程序new 一个对象,但是并没有保持的时候,为临时态
2.Persistent(持久态):这时候的对象是与数据库的某条记录有着对应关系,
3.Detached(游离态/托管):当执行了session.close()方法后,对象处于游离态了。
状态转换:
在游离态的时候,通过调用session.update(),对象进入持久态,在持久态,执行delete的时候变为临时态,为初始化对象之前,调用get.load find iterate 之后直接进入持久态。
数据库和session 中都没有的是临时态,数据库有,但是session 中不存在这是游离态。俩个里面都有是持久态
hibernate 级联(cascade)
1.none
2.save-update
3.all
4.delete