Hibernate基本介绍

一,什么是hibernate

hibernate是一个轻量级javaEE持久层框架,是一个ORM框架(对象关系映射,所以这类框架都有个对象关系映射文件xxx.hbm.xml)
在web项目中对数据库的操作流程是–application–>hibernate–>database,hibernate在里面就是连接请求与数据库的桥梁,核心配置文件xxx.hbm.xml用于连接application,hibernate.cfg.xml用于连接database

二,hibernate的好处,缺点

好处
1.通过hibernate,可以用domain对象映射的方式来操作数据到数据库
2.对于普通的数据库操作,封装了操作数据库的方法,可以操作对象自动生成sql语句操作数据库,简化操作
3.移植性强,要更换数据库只用配置连接参数,不同数据库的sql语句自动生成
4有缓存机制,一级缓存和二级缓存,对于常用的数据可以放到一级缓存供日后使用,不用频繁读取数据库造成资源浪费
缺点:
自动生成的代码较为死板,调优麻烦,对于复杂的数据库操作例如夺标查询要使用hql语句重新定义

三,hibernate的属性

configuration
1.读取hibernate.cfg.xml
2.管理对象关系映射文件xxx.hbm.xml
3.加载hibernate的配置信息
创建对象Configuration config=new Configuration().configure();
SessionFactory
1.缓存sql语句,数据(一级缓存,session级缓存)
2.在应用程序初始化的时候创建,重量级类,一个数据库只要有一个就可以了(为什么叫重量级的类呢,因为sessionFactory管理着连接数据库的会话,网站运行时连接时很重要的,而且存储了大量sql语句或数据,占用了大量内存)
3.SessionFactory负责创建Session实例,可以通过Configuration实例构建SessionFactory
sessionFactory= new Configuration().configure().buildSessionFactory();
Session有什么用呢
1.Session时hibernate数据持久化的基础,可以看作持久化管理工具,提供了很多持久化方法 ,通过这些方法,完成curd操作(save/delete/get/load/update)
2.通常一个数据库事物和一个Session事例绑定,每执行一个事物都要创建一个Session,使用后需要手动关闭
3.Session时线程不同步的(不安全),所以要保证在同一线程中使用,可以 用getCurrentSession
4.Session实例由SessionFactory构建–Session session=sessionFactory.openSession();)
openSession和getCurrentSession区别
1.openSession是一个全新的Session
getCurrentSession时获取一个和事物绑定的Session
2.getCurrentSession在commit后自动关闭,openSession不会
getCurrentSession在hibernatecfg.xml还要配置

<property name="hibernate.current_session_context_class">threadproperty>

3.getCurrentSession查询操作要用事物提交

end

你可能感兴趣的:(hibernate)