浅谈Hibernate中的几个查询
浅谈Hibernate中的几个查询
一、load和get方法的区别
1、load在查询时,先从一级缓存中寻找与数据索引对应的实体对象,然后构建并返回一个代理对象,当我们真正使用这个代理对象的时候,这时候才会进入二级缓存查找或到数据库加载数据,如果数据库中没有找到则抛出一个ObjectNotFoundException;
2、get方法在查询时,同样是先从一级缓存中寻找与数据索引对应的实体对象,如果有则直接返回该实体对象,如果没有则马上进入二级缓存查找或到数据库加载数据,查找到则直接返回查询对象,没有则返回一个null;
二、list和iterator
1 、list方法会直接直接到数据库中加载数据,然后将查询结果放入缓存中,当然如果你配置了查询缓存,他会先进入查询缓存寻找,如果没有满足条件的再进入数据库加载数据;
2、iterator方法在查询时是先从数据库中查询出所有满足条件的数据索引,然后再根据这些数据索引进入一级和二级缓存进行匹配,如果对于数据索引有实体对象则直接返回该对象,如果没有则在具体使用对象的时候才会进入数据库加载数据,并且把数据索引和对于实体对象放进缓存;
3、什么时候使用最合适呢?个人建议第一次查询使用list直接从数据库中读取所有数据,然后放到了缓存中,后面使用Iterator,直接从缓存中读取,利于提高性能;
三、延迟加载
1、对于load方法,它在查询对象的时候始终返回的一个代理对象,那么为什么hibernate要引入这么一个方式呢,为什么不像get方法一样直接返回查询对象呢?出于对hibernate的性能考虑,hibernate则提出了一个解决方案,那就是延迟加载,这里load方法的使用则正是实体对象延迟加载的表现。
2、hibernate中list和Iterator 区别,延迟加载
转载于:https://blog.51cto.com/longx/1357697
浅谈Hibernate中的几个查询相关推荐
- 浅谈 MySQL 中优化 SQL 语句查询常用的 30 种方法
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索 ...
- 浅谈MySQL中优化sql语句查询常用的30种方法
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索 ...
- Java hibernate假外键_浅谈hibernate急迫加载问题(多重外键关联)
数据库结构如下 strategy中有外键member_id(关联member表)外键strategy_category(关联category表)而member表中有外键position_id(关联po ...
- mybatis与php,浅谈mybatis中的#和$的区别
浅谈mybatis中的#和$的区别 发布于 2016-07-30 11:14:47 | 236 次阅读 | 评论: 0 | 来源: 网友投递 MyBatis 基于Java的持久层框架MyBatis 本 ...
- 浅谈Java中的Set、List、Map的区别
就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...
- 【网摘】 浅谈HTTP中GET与POST的区别
文章出处:http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html 浅谈HTTP中Get与Post的区别 Http定义了与服务器交互的不 ...
- 浅谈oracle树状结构层级查询
oracle树状结构查询即层次递归查询,是sql语句经常用到的,在实际开发中组织结构实现及其层次化实现功能也是经常遇到的,虽然我是一个java程序开发者,我一直觉得只要精通数据库那么对于java开发你 ...
- 浅谈CTF中各种花式绕过的小trick
文章目录 浅谈CTF中各种花式绕过的小trick 前言 md5加密bypass 弱比较绕过 方法一:0e绕过 方法二:数组绕过 强比较绕过 方法:数组绕过 md5碰撞绕过 方法:使用Fastcoll生 ...
- 单一修改高程值lisp_浅谈AutoCAD中修改高程的四种方法
浅谈 AutoCAD 中修改高程的四种方法 摘 要: 在使用 AutoCAD 进行数字化成图工作中,经常遇到线划的标高不为零,及高程点的值与实地不符,需要对其进行修改等情况,结合实 际工作经验,简单介 ...
最新文章
- int能表示的数据范围(在VS2017下,int和long都是32位)
- 【转载】绝对干货!Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载九)如何通过源代...
- C++ primer记录
- SCCM PXE客户端无法加载DP(分发点)映像
- ZZULIOJ 1092: 素数表(函数专题)
- 人工智障学习笔记——机器学习(8)K均值聚类
- pagePiling.js - 创建美丽的全屏滚动效果
- 学习ASP.NET Core Razor 编程系列六——数据库初始化
- swagger注释API详细说明
- Express框架学习笔记-静态资源的处理
- 《数据结构 严蔚敏C》期末高频考题整理(含详解)
- vb mysql 实例教程_在VB.NET应用中使用MySQL的方法
- Android 动画录制 GIF录制
- 浏览器插件 - Chrome 对 UserScript 的声明头(metadata)兼容性一览
- hazelcast java_Java分布式内存开源实现:Hazelcast
- Sketch 的基本操作(一)
- 60mph和kmh换算_mph换算器(速度计算器在线)
- Canvas学习笔记及像素操作——实现马赛克
- Java中高级程序员全程学习路线图
- 超表面远场三维辐射图,MATLAB
热门文章
- spring的事务回滚机制,事务原理
- freemarker文件乱码问题
- revit模型怎么在手机上看_沙盘模型应该怎么看?一定要警惕这些问题
- graph-easy使用简介
- linux下C语言简单实现线程池
- 吉林大学计算机高级程序设计笔记
- @Resource注解使用详解
- Hystrix 线程池隔离与接口限流
- js中用script 嵌套script块
- HTTP Status 500 - javax.servlet.ServletException: File [/head.jsp] not found