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也支持注解开发
- Hibernate简介
- Hibernate简介
- hibernate简介
- Hibernate简介
- hibernate 简介
- Hibernate简介
- Hibernate简介
- hibernate简介
- Hibernate简介
- Hibernate简介
- Hibernate简介
- Hibernate简介
- Hibernate简介
- hibernate简介
- Hibernate简介
- hibernate-简介
- Hibernate简介
- hibernate简介
- [Google Guava] 6-字符串处理:分割,连接,填充
- 深入浅出LDA(1)
- Go学习笔记(五)
- Understanding LSTM Networks
- configuration.output.path: The provided value "./" is not an absolute path!
- hibernate简介
- JAVA 构建使用 Native 库
- 接下来的学习计划
- sdnu1081.2013
- python 正则表达式 (持续更新)
- 说说C++的类型转换
- SELECT LAST_INSERT_ID() 的使用和注意事项
- Eclipse中修改SVN用户名和密码方法
- react-native 底部导航