1.文章转载于:http://www.techrss.cn/html/2008/04-08/79497.htm
2.1 Hibernate实体对象的三种状态
(1)Transient:所谓Transient就是说实体对象在内存中存在,与数据库的记录无关。
(2)Persient:Persient对象对应数据库中的一条记录,也可以这样子理解,如果一个实体对象与某个session发生关联,并处于对应session的有效期内,那么它就处于Persient状态。
(3)Detached:所谓Detached就是处于Persient状态对应的session关闭之后的状态。
我们平时所说的PO(持久化对象)指的是位于Persient状态的对象,而VO(值对象)就是指Transient和Detached状态的对象。
2.2CRUD
(1)save()方法,调用save方法时,首先会在session缓存中查找保存对象,如果实体对象已经处于Persient状态,则直接返回,否则执行SQL操作,将保存的实体对象加入session缓存中(save方法不会把实体加入到二级缓存的),最后对存在的级联关系进行递归处理。
(2)saveOrUpdate()方法:和save一样首先在session缓存中查找,判断对象是否为保存状态,如果对象处于Persient,不执行操作,处于Transient执行save操作,处于Detached调用save将对象与session重新关联。
这里要注意的是在批量操作时要适时地对session进行flush操作,避免出现OutOfMemoryError。(开发中设置一个计数器,到达某个临界值的时候就清空一次就可以啦)
2.3 查询
查询是受缓存影响最大的。
(1)session的load()和get():这两者的区别主要是load会在二级缓存中查找,而get在内容缓存中查找不到的话将跳过二级缓存直接进行SQL操作。
(2)Query的list()和iterate()方法:list实际上无法使用缓存,它对缓存只写不读,而iterate则是首先查找所有符合条件的id(首先在本地缓存中查找)在执行相应的select获得对应记录,iterate方法的使用是查找的实体对象在缓存中已经存在了,否则查询性能很低,容易产生N+1现象
分享到:
相关推荐
第一部分 从Hibernate和EJB 3.0开始 第1章 理解对象/关系持久化 1.1 什么是持久化 1.1.1 关系数据库 1.1.2 理解SQL 1.1.3 在Java中使用SQL 1.1.4 面向对象应用程序中的持久化 1.2 范式不...
入门级功能:包括属性(配置),JDBC模板(数据库CRUD),JPA(Hibernate数据库CRUD),Mybatis(数据库CRUD),Mybatis(Mybatis数据库CRUD),thymeleaf(模板解析),beetl(模板解析),freemarker (模板解析)...
2.Hibernate的操作CRUD、 3.主键生成机制、 4.持久化对象的状态、 5.映射一对多关联关系、 6.深入session、 7.懒加载、 8.Hibernate检索策略(fetch抓取策略)、 9.二级缓存、 10.Hbernate的检索方式(HQL语句)
Hibernate4(关系映射,事务,原理,性能和二级缓存,最佳实践) Hibernate4(基本开发,入门,配置,CRUD)
使用技术:Spring4.0.6+Hibernate4.3.5+Struts2.3.16+Jquery+Easyui 服务器:Tomcat7 数据库:Mysql5.1 前台: 商品分类显示,大类,小类 商品查询功能 公告显示 新闻动态显示 今日特价商品显示 热卖推荐商品显示...
第一天:Hibernate 的入门(Hibernate 的环境搭建、Hibernate 的API、Hibernate 的 CRUD) 第二天:Hibernate 的一级缓存、其他的 API 第三天:Hibernate 的一对多配置、Hibernate 的多对多的配置 第四天:Hibernate...
sqltoy-orm是比hibernate+myBatis(plus)更加贴合项目的orm框架(依赖spring),具有jpa式的对象CRUD的同时具有比myBatis(plus)更直观简洁性能强大的查询功能,越复杂优势越凸显。Java真正智慧的ORM框架,除具有JPA功能...
学习为企业系统构建数据驱动的...◆ 通过避免在Internet上执行CRUD操作来提高性能 ◆ 开始编写连接到Android的后端云服务 ◆ 介绍新的开源和通用同步框架(专门与Android API集成) ◆ 解决应用程序实现中的安全问题
系统功能:前台为管理员对新闻以及新闻栏目的CRUD操作,新闻审核,权限以及角色的控制等。技术选型初步技术: 撑杆春天冬眠EhCache——缓存框架JSP前端技术: jQuery的引导程序UEditor——在线HTML编辑器模块介绍...
6.1.1 理解控制器和操作 6.1.2 控制器和作用域 6.1.3 模型和视图 6.1.4 重定向和链 6.1.5 控制器拦截器 6.1.6 数据绑定 6.1.7 XML和JSON响应 6.1.8 上传文件 6.1.9 命令对象 6.2 Groovy Server Pages 6.2.1 GSP基础 ...
Session接口 Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交 流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时 ,Hibernate的session不同于JSP应用中的...
它可以像hibernate一样通过简单易用的API接口进行CRUD数据库操作,也可以像mybatis一样通过XML分离进行高效可配的操作;同时它可以混合两种调用方式,简单普遍的操作采用API,复杂的操作采用XML映射,集各家之所长。...
CRUD 操作 一个 PostgreSQL 数据库; 请参阅下文以通过 Docker 运行一个 ArC,CDI 启发了零开销的依赖注入工具 高性能 Agroal 连接池 基于 Infinispan 的缓存 全部由 Narayana 交易经理安全协调 一步步 要求 要编译...
所有ORM具备3方面基本能力:映射技术、CRUD操作、缓存优化。每种编程语言都具有自己的ORM库,java 的Hibernate、IBATIS;C#的Grove LINQ; Python 的 SQLAlchemy 1、映射技术 面向对象是从软件工程的基本原则(如...
使用JPA 2.0规范的标准注解方式来定义和操作对象。(但整个ORM不是完整的JPA兼容实现)更高的性能 依赖于ASM等静态字节码技术而不是CGlib,使得改善了代理性能;依赖于动态反射框架,内部数据处理上的开销几乎可以...
描述:它是一个员工管理系统,作为 Web 和休息服务暴露给用户,用户可以使用它执行基本的 crud 操作,还可以搜索使用字段过滤的员工。 此代码可用于了解如何使用 spring 模块创建具有客户端到后端的 Web 应用程序,...
* 简单的 CRUD 操作:MyBatis 适用于简单的 CRUD(Create,Read,Update,Delete)操作。 MyBatis 与 Hibernate 有哪些不同? MyBatis 和 Hibernate 都是 Java 持久层框架,但是它们有很多不同: * MyBatis 使用 ...
由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 的开发工具。 为了增加系统的...
泛型封装dao、service、controller基类,包含分页,查询条件封装,从而达到快速crud操作(参考") 简易代码生成器,增加字段配置功能、生成页面功能,实现增删查改不需要写一句代码(参考) ehcache缓存 springmvc 整合...
该平台使用了maven作为项目管理,使用了web开发流行的框架便于学习使用,具体使用了spring、springmvc、spring ache (安全)shiro、hibernate、freemark等框架,为了统一页面风格使用DWZ作为页面富客户端的展示。...