一,读取缓存(一级缓存,二级缓存)一级缓存可以理解为session对象的一个map
有很多方法可以往缓存中添加数据,
往二级缓存添加数据时,save方法不适合native生成方式的主键
但只有get,load和Iterator能从缓存中读取数据,其他的方法不可以(Query 不能从缓存里去对象)
Query,Criteria(查询缓存)由于命中率较低,所以hibernate缺省是关闭;修改cache.use_query_cache
为true
打开对查询的缓存,并且调用query.setCacheable(true)
或criteria.setCacheable(true)
。
二,清除缓存(防止内存溢出)
session.evict(obj); ----一条记录(在使用uuid生成策略时。你手动调用该方法会报错
)
session.clear();----所有的
sessionFactory.evict(User.class); ----所有的该类型对象
sessionFactory.evict(User.class,12); ----一条记录
session.flush() --------会发uuid没发的sql语句(在调用evict或clear方法前,先调用该方法)
作用:可以改变sql语句的执行顺序
(hibernate默认是save,update,delete
)
三,判断对象是否在数据库中存在
由hbm文件的id配置unsaved-value
決定
四,二级缓存
1.hibernate.cfg.xml里配置
<property name="cache.use_query_cache">true
</property>
<property name="cache.provider_class">org.hibernate.cache.OSCacheProvider
</property>
<class-cache class="yangzhibin.User" user="read-only
"/>
usage(策略)取值:
read-only
:
效率最高,但是对象不能修改,修改了会报异常(如:省市表)
read-write:严格的读写(如:银行)
nonstrict-read-write:不严格的读写(如:帖子的回帖量)效率高点
transactional:一般缓存没这个功能(jboss-cache实现了,oscache不提供这个功能)
2.User.hbm.xml里配置
<cache usage="read-write
"/>
五,hibernate参数
1.hibernate.generate_statistics
:产生统计信息
取值:false(默认) ,true
查看:
Statistics st = sessionFactory.getStatistics();
System.out.println(st);//查询全部
//查看二级缓存统计信息
System.out.println("put(放入):" + st.getSecondLevelCachePutCount());
System.out.println("hit(命中):" + st.getSecondLevelCacheHitCount());
System.out.println("miss(丢失):" + st.getSecondLevelCacheMissCount());
六,Session和StatelessSession的区别:StatelessSession 不跟缓存打交道
七,Query接口的executeUpdate()(3.0中增加的方法,用于进行批量处理,会把缓存中数据都清空了)
八,HQL和Criteria
1,Criteria查询
1.1
DetachedCriteria查询
:离线查询
(在处理动态查询时很有用)
为什么离线呢? 因为它的创建跟session无关,而Criteria的创建跟session有关
DetachedCriteria dc = DetachedCriteria.forClass(User.class);
String name = request.getParameter("name");
if (name != null)
{
dc.add(Restrictions.eq("name", name));
}
int age = request.getParameter("age");
if(age > 0)
{
dc.add(Restrictions.eq("age", age));
}
Criteria c = dc.getExecutableCriteria(session);//操作还是要通过Criteria来实现
1.2 Example
查询 :根据例子查询
Example.create(obj);
criteria.add(example)
九,Iterator查询(先把id都查询出来,再根据id来查询)N+1次查询
十,SQL和命名查询
Query q = session.createQuery(hql);
//sql查询
Query q = session.createSQLQuery("select * from user");//返回对象数组
Query q = session.createSQLQuery("select * from user").addEntity(User.class);//返回User对象list
//命名查询
Query q = session.getNamedQuery("queryUserById");
分享到:
相关推荐
### Hibernate知识点总结 #### 一、Hibernate概述 Hibernate是一个开源的ORM(Object Relational Mapping,对象关系映射)框架,用于Java应用与关系型数据库之间的交互。它通过使用描述对象和数据库之间映射的元...
hibernate知识点的总结,适合初学者
这篇文章主要汇总了关于 Hibernate 的一些关键知识点,对于准备面试的 IT 专业人士来说非常有用。 1. **持久化**:持久化是将应用程序的数据存储在数据库中,使得数据即使在应用程序关闭后也能长期存在。在 ...
Hibernate 知识点详解 Hibernate 是一个流行的 ORM(Object-Relational Mapping)框架,用于 Java 应用程序的持久层解决方案。下面是 Hibernate 知识点的详解: Hibernate 概述 Hibernate 是一个轻量级的 Java EE...
通过理解并熟练运用这些知识点,J2EE开发者能有效利用Hibernate简化数据库操作,提高开发效率,并更好地维护代码。学习Hibernate不仅有助于入门J2EE开发,也是进一步深入学习Spring Data JPA等高级技术的基础。
【hibernate主要知识点】 Hibernate 是一款流行的 Java 平台上的 ORM(对象关系映射)框架,它使得开发者可以使用面向对象的方式处理数据库操作,而无需直接编写 SQL 语句。ORM 框架如 Hibernate、TopLink 和 OJB ...
Hibernate全部知识点
Hibernate 框架是Java开发中广泛使用的对象关系映射(ORM)工具,它简化了数据库操作,使得开发者可以通过对象模型来处理数据,无需编写大量的SQL语句。本篇文章将深入探讨Hibernate的核心概念和基本使用方法。 ...
Hibernate的一些学习知识点总结PPT等资源,适合初学者
在本练习代码中,我们将深入探讨以下几个关键的Hibernate知识点: 1. **实体类和映射文件**:每个Java类代表数据库中的一个表,类的属性对应表的字段。通过XML映射文件(hibernate.cfg.xml)或注解,我们可以定义...
【Hibernate关键知识点详解】 Hibernate是一款强大的Java持久化框架,它为开发者提供了在关系数据库与对象模型之间进行映射的能力,从而简化了数据访问层的开发。在这个知识点大全中,我们将深入探讨Hibernate的...
### Hibernate知识点总结 #### 一、Hibernate概述及入门 **1. HelloWorld** - **目的**:通过一个简单的示例,让初学者快速上手Hibernate,理解其基本工作流程。 - **步骤**: 1. 创建Java项目,命名为`...
《Hibernate知识文档 知识点笔记纪要》 在Java开发中,Hibernate是一个非常重要的ORM(Object-Relational Mapping)框架,它简化了数据库与Java对象之间的交互。本笔记主要涵盖了建立第一个Hibernate项目的步骤,...
hibernate的学习笔记,hibernate所以知识点全,一看就能上手........包含代码和书写格式和图片分析~~~~hibernate的学习笔记,hibernate所以知识点全,一看就能上手........包含代码和书写格式和图片分析~~~~...
**JEECG HIBERNATE 知识点详解** JEECG是一款基于代码生成器的Java快速开发平台,它融合了各种主流开发框架和技术,旨在提高开发效率,降低开发成本。其中,`Hibernate`是JEECG的一个重要组成部分,它是Java领域中...
** Hibernate 知识点详解** 1. **对象关系映射(ORM)**:ORM是将关系数据库的数据模型转换为面向对象编程中的类和对象的技术,简化了数据库操作。Hibernate是Java领域中广泛使用的ORM框架之一。 2. **Hibernate...
### Hibernate中文参考文档知识点概述 ...通过以上对Hibernate知识点的详细介绍,可以帮助开发人员更好地理解和掌握其核心技术,从而在实际项目中更加高效地运用Hibernate解决复杂的数据库操作问题。
此外,通过研究这个项目,还可以学习到其他相关的Hibernate知识点,如: - **实体类的设计**:如何创建符合Hibernate规范的Java Bean,包括主键生成策略、懒加载、瞬态与持久化状态等。 - **映射文件或注解的使用**...
**Hibernate知识点:** 1. **ORM框架**:Hibernate是一个流行的Java ORM框架,它消除了Java对象和关系数据库之间的语义差异,使得开发者可以使用面向对象的方式来处理数据库操作。 2. **持久化模型**:Hibernate的...