hibernate流程
1.读取并解析配置文件hibernate-config.xml,创建Configeration(一个Configeration实例代表java类到sql数据库映射的集合)
2.读取并解析映射文件xxx-hbm.xml,创建sessionFactory,将Configeration配置信息拷到sessionFactory缓存中
3.打开session
4.创建事务Transation
5.持久化操作
6.提交事务
7.关闭session
8.关闭seesionFactory
hibernate的三种状态
1.临时态(new刚创建一个对象、session调用delete()方法)
2.持久态(session进行持久化操作,save()\update()\find()..)
3.游离态(sesiion.close())
hibernate的优势
1.对JDBC访问数据库代码作了封装,简化了数据访问层重复繁琐代码
2.是一个标准ORM映射框架简化了DAO层编码工作
3.支持关系型数据库,从一对一到多对多各种复杂关系
hibernate延迟加载
出现情况:1.使用load()方法 2.在many-to-one设置lazy
原理:使用动态代理,当获取一个对象时,hibernate并不从数据库加在真正的数据,而是为这个对象创建一个代理对象来代表对象,属性值全为默认值,只有在真正使用该对象的数据时才会去数据库中查询
hibernate怎样实现类之间的关系
类之间的关系主要体现在表之间的关系,通过配置文件many-to-one\one-to-many\many-to-many
hibernate缓存
hibernate包括一级缓存(默认开启)与二级缓存
一级缓存是session级别缓存,存在时间较短
二级缓存是sessionFactory级别缓存,整个程序共享一个会话工厂(适用范围:1.数据很少被修改 2.允许出先偶尔的并发问题)
开启二级缓存<property name="hibernate.cache.use_second_level_cache">true</property>
hibernate查询语言
HQL与QBC(mybatis可以使用)
参考
https://blog.csdn.net/greensomnuss/article/details/53525074
https://blog.csdn.net/woshichenxu/article/details/586361