一:整体结构
API:
1,API简介。
2,Session中的方法。
3,查询:HQL与Criteria
配置:
1,主配置文件
2,映射文件
映射基础
普通属性
主键
集合属性
关联关系
一对多/多对一
多对多
一对一
继承结构
二:API简介
Configuration 配置
configure()
configure(String resource)
addResource(String resource) 导入一个指定位置的映射文件
addClass(Class clazz)导入与指定类同一个包中的以类名为前缀,后缀为.hbm.xml的映射文件(一般用于测试,省去了在hibernate.cfg.xml中配置映射文件的麻烦)
buildSessionFactory()
SessionFactory Session工厂
openSession()
getCurrentSession()
close()
Session 很重要的一个对象
操作对象的方法
save(Object)
update(Object)
delete(Object)
查询的方法
createQuery(String) --> Query
createCriteria(Class)
管理事务的方法
beginTransaction() --> Transaction
getTransaction() --> Transaction 获取当前Session中关联的事务对象
其他的方法
...
Transaction 事务
commit()
rollback()
Query 查询
list() 查询一个结果集合。
uniqueResult() 查询一个唯一的结果,如果没有结果,则返回null,如果结果有多个,就抛异常。
...
三:Hibernate主配置文件
1,配置的key前面的hibernate.前缀 可以有,也可以没有。如hibernate.dialect或dialect均可。
2,按作用可分为三类:
1,数据库信息
<property ...>
方言、JdbcUrl、驱动、用户名、密码
2,导入映射文件
<mapping ...>
3,其他配置
<property ...>
show_sql 显示生成的SQL语句(true)
format_sql 格式化生成的SQL语句(true)
hbm2ddl.auto 自动生成表结构(create或update)
hibernate.hbm2ddl.auto
生成表结构的两种方式:
1,hbm2ddl.auto
2,使用SchemaExport工具类
注意:只能建表,不能建库
主键增长策略:
如果是数字,建议使用包装类型。
identity
sequence
hilo
native
assigned
uuid
foreign
...
四:hibernate中对象的状态
临时状态:Transient
与数据库没有对应,跟Session没有关联。
一般是新new出的对象。
持久化状态:Persist
对象在Session的管理之中,最终会有对应的数据库记录。
特点:
1,有OID
2,对对象的修改会同步到数据库。
游离状态:Detached
数据库中有对应记录,但对象不在Session管理之中。
修改此状态对象时数据库不会有变化。
删除状态:Removed
执行了delete()后的对象。
五:关联关系
双向关联
单向关联:
单向多对一
单向一对多
单向多对多
六:级联inverse
维护关联关系:
对于一对多:
就是设置外键列的值。
对于多对多:
就是插入或删除中间表中的记录。
七:session的方法说明
1、操作实体对象的
save():把临时状态变为持久化状态
update():把游离状态变为持久化状态
saveOrUpdate():把临时状态或游离状态转换为持久化状态
delete():把持久化状态或游离状态转变为删除状态
2、操作缓存的
clear():清除session中所有的对象
evict(object):清除指定的对象
flush():强制刷出,提交到数据库中去,默认提交事务之前执行flush强制执行所有HQL、SQL语句
3、查询实体对象的
get():会马上执行sql语句,返回的是对象;数据不存在返回null
load():懒加载为true的时候,用的时候才会执行sql 语句(延迟加载),否则(lazy="false")立即执行sql。返回的是一个代理对象,如果类被final修饰,懒加载就会失效,数据不存在就会抛出异常ObjectNotFoundException
createQuery()
createCriteria()
get和load的区别:
加载方式 返回值 如果数据不存在
---------------------------------------------------------
get 立即加载 真实对象或null 返回null
load 延迟加载 代理对象 抛异常