hibernate原理:
hibernate是持久层框架,是一个全自动的ORM框架,直接使用操作对象的方法操作数据库,简化dao层。
hibernate流程:
1.使用Configuration读取配置创建一个session工厂
2.session工厂创建一个seesion对象
3.session对象和它创建Query/Criteria都可以操作数据库
4.Transcation 用于管理事务
查询方式:
HQL查询:
调用方法Query,必须写相应的HQL查询语句
Criteria查询:
调用方法list/iterator,直接把实体类对象放入类中,省略了查询语句。
离线查询即不通过session创建查询对象
原生SQL:
总结:
HQL语句必须写相应的HQL查询语句,而Criteria 语句直接把实体类对象放入类中,省略了查询语句。
对象状态:
瞬时(一个对象刚创建的时候,没有纳入session管理)
持久化(有id,在session中,被session管理)
游离/托管(有这个对象的存在,但不被seesion管理,不能保持同步更新)
一对多、多对多:
一对多(表中:使用外键。实体中:使用集合-属性方式表达)
多对多(表中:创建一个新表包涵两个表的外键。实体中:两方都是用集合表示拥有多个对方)
inverse:关系维护指定一方维护
Cascade:级联操作
缓存:
一级缓存是Session,当Session做了一个查询操作,那么查询出的结果放到一级缓存中,如果短时间内又做了一个相同的操作,那么就会去缓存中取数据,处在一级缓存的对象永远不会过期,除非应用程序清空缓存.
延迟(懒)加载:
lazy(flase 表示立即加载,true 表过延迟加载)
常用主键生成策略:
identity(自增)
uuid(随机字符串)
assigned(手动)
native(自动)