hibernate简介

来源:互联网 发布:软件开发质量保证措施 编辑:程序博客网 时间:2024/06/17 20:49

Hibernate概述

简介

Hibernate是持久层的框架,对JDBC进行了很好的封装,是一个全自动的orm框架,所谓orm就是利用面向对象的方式处理数据,然后以关系型数据的方式存储数据。它通过配置使JavaBean对象和数据库表之间进行映射,并提供对增、删、改、查便利的操作方法,同时支持事务处理,它对数据库记录还提供了缓存机制,提高效率,它可以使程序员不用书写SQL,也不用关心数据库SQL之间的差异,它通过方言对数据库进行了很好的适配

Hiberante的主配置文件为hibernate.cfg.xml,其中定义了数据源、连接池、缓存、事务、表生成策略等配置

通过*.hbm.xml映射配置文件,定义了JavaBean对象和数据库表之间的映射关系,还定了对象和对象之间的映射关系,包括:一对一、多对一、一对多、多对多

Hibernate可以集成到Spring中,通过Spring进行事务处理。

使用hibernate框架操作数据

增删改操作一定要在事务环境下完成,修改、删除数据时,需要先加载数据。

操作数据的步骤:

   1.读取配置文件

   2.创建SessionFactory

   3.打开Session

   4.开始一个事务

   5.持久化操作

   6.提交事务

   7.回滚事务

   8.关闭session

 

Hibernate是全自动的框架,里面封装好了对数据操作的方法

 

缓存机制

hibernate是一个持久层框架,经常访问物理数据库,为了降低应用程序对物理数据源访问的频次,提高应用程序的性能,使用缓存机制。

当hibernate根据ID访问数据对象的时候,首先在session一级缓存中查找,如果查不到并且配置了二级缓存,那么就在二级缓存中查,如果都查不到就去数据库查找,把查找的结果放到缓存中,删除、更新、增加数据的时候同时更新缓存

一级缓存

session内的缓存就是一级缓存,它是内置的,不能被卸载,当关闭session的时候,缓存中的数据就被删除了

二级缓存

hibernate二级缓存又称为SessionFactory的缓存,由于SessionFactory的生命周期和应用程序的整个过程对应,因此二级缓存是进程方位或者集群范围内的缓存,可以被所有的session共享,二级缓存是可选的,是一个可配置的插件

通常将一些很少修改不会被并发访问的数据放到二级缓存中,允许并发访问或者是会被多个应用共享的数据放在一级缓存中

配置二级缓存时,需要添加ehcache-1.2.3 和  commons-logging这两个jar包,添加配置文件 ehcache.xml,然后配置hibernate.cfg.xml文件,开启二级缓存

<!--开启二级缓存  -->

<propertyname="hibernate.cache.use_second_level_cache">true</property>

<!-- 配置二级缓存类-->

<propertyname="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>

查询缓存

hibernate为查询提供了缓存,用来提高查询速度,查询缓存依赖于二级缓存,需要配置hibernate.cfg.xml,开启查询缓存

<!-- 开启查询缓存-->

<propertyname="hibernate.cache.use_query_cache">true</property>

Hibernate中的查询

HQL语句查询

是hibernate的查询语言,hql语句中查询的是实体类中的属性

基本查询:

       Stringhql = "from Dept d join d.emps";

绑定参数查询:

       Stringhql = "from Emp where ename=? and job=?";

Query query = session.createQuery(hql);

//此处占位符从0开始,和jdbc处不同

query.setString(0, "JONES");

query.setString(1, "MANAGER");

分页操作:

       Stringhql = "from Emp";

       Queryquery = session.createQuery(hql);

       设置查询的记录数

       query.setMaxResults(5);

       //设置查询在第一条数据开始

       query.setFirstResult(0);

       List<Emp>list = query.list();

 

Criteria查询

       就是直接使用hibernate中提供的方法,支持各种查询

 

DetachedCriteria查询

       使用DetachedCriteria来构造查询条件,可以把DetachedCriteria作为方法参数传递给业务层,本身并不具有查询的能力,用来创建查询条件

 

Hibernate也支持注解开发

原创粉丝点击