Hibernate基础知识总结

Hibernate是JDBC的轻量级的对象封装(encapsulation),它是一个独立的对象持久persistence层框架。 hibernate要做的事,就是让对象投影到关系数据库中,然后实施化。它把数据层和业务层实现的解耦,这样能很好的转化想要的数据库。

一、hibernate的核心接口:

session:负责被持久化对象CRUD操作;

sessionFactory:负责初始化hibernate,创建session对象;

configuration:负责配置启动hibernate,创建sessionFactory;

Transaction:负责事务项目的相关操作;

Query和Criteria接口:负责执行各种数据库查询;

二、hibernate的工作原理:

1、通过Configuration config=new Configuration().configure();//读取并解析hibernate.cfg.xml配置文件

2、由hibernate.cfg.xml中的<mapping resource="com/xx/User.hbm.xml"/>//读取并映射信息

3、通过SessionFactory sf=config.buildSessionFactory();//创建SessionFactory

4、Session session=sf.openSession();//打开session

5、Transaction tx=session.beginTransaction();//创建并启动事务Transaction

6、persistent operate操作数据,持久化操作

7、tx.commit();//提交事务

8、关闭Session

9、关闭SessionFactory

三、hibernate的好处:

1、对JDBC访问数据库的代码封装,大大简化了数据访问层繁琐的重复代码。

2、hibernate是轻量级框架,支持各种数据库,从一对一到一对多的各种复杂关系。

四、hibernate的缓存机制:

hibernate的缓存包括两大类:一级缓存(session缓存)和二级缓存(SessionFactory缓存)

一级缓存:他是内置的,就是说只要你使用hibernate就必须使用session缓存。由于session对象的声明周期通常对应一个数据库事务或者一个应用事务,因此他的缓存时事务范围的缓存。在一级缓存中,持久化类的每个实例都具有唯一的OID。

二级缓存:由于二级缓存对象的生命周期和应用程序的整个过程对应,因此hibernate二级缓存是进程范围或者集群范围的缓存,有可能出现并发问题,因此需要采取适当的并发访问策略,该策略为被缓存的数据提供了事务隔离级别。二级缓存时可选的,是一个可配置的插件,默认情况下不会启动。

什么样的数据应该放在二级缓存?

1、很少被修改的数据

2、不是很重要的数据,允许出现偶尔并发的数据

3、不会被并发访问的数据

4、常量数据

不适合放在二级缓存中的数据?

1、经常被修改的数据

2、不允许出现并发访问的数据

3、与其他应用共享的数据

五、如何优化hibernate?

1、使用双向一对多关联,不适用单向。

2、使用一对多取代一对一

3、配置对象缓存,不适用集合缓存

六、get和load的区别?

1、get()方法直接返回实体类,如果查不到数据则返回null,不会报错。load()会返回一个实体代理对象,当代理对象被调用时,如果没有数据存在,就会抛出异常load支持延迟加载,get不支持。

 

posted @ 2017-07-03 16:43  蜗牛2219  阅读(306)  评论(0编辑  收藏  举报