又看了下深入浅出Hibernate.
感觉在HIbernate中文书籍中,这是本很不错的书.
虽然里面更多的是讲hibernate2,但也值得再回味下.
Hibernate有两个关注点:
一,解决了"关系-对象的不匹配阻抗"
这个看似很简单,就是把ResultSet中的数据集放到了List中.但其中的细节还有待进一步研究
二,Hibernate的性能.
这个冷不防就被人拿来说事.其实使用Hibernate很简单,但要用好,还是有难度的.
书中提到了几个点:
1.List和Iterate的实现原理,及其性能表现
http://japi.iteye.com/blog/257676这个文章有介绍
关键是两者对缓存的不同使用.
List对缓存只写不读,每次执行都会去生成相应的SQL
Iterate有N+1问题,但发挥了缓存的作用.它首先执行一条Select以获得所有符合查询条件的数据ID,再从缓存中根据ID查找对应的实体.
2.批处理方法实现原理
一般人比较推荐绕过hibernate,直接使用JDBC方式
Hibernate在这方面也做了很多工作.
比如设置hibernate.jdbc.batch_size
为了防止出现OutOfMemoryError.
可以隔一段时间清空Session内部缓存
if(i%20==0){
session.flush();
session.clear();
}
3.制定合理的缓存策略,比如二级缓存.使用流行的Ehcache,OScache
缓存同步策略:
1.read-only 只读.这个只对数据索引进行缓存,没有缓存数据实体.
2.read-write,对实体也进行缓存
4.合理的Session管理机制,使用ThreadLocal.现在大多数使用Spring.
5.尽量使用Lazy机制,有集合延迟还有属性延迟
6.合理的参数,比如(batch_size,还有二级缓存的参数).现在都采用配置文件,使用很简单,但做到性能的完美,不是简单的事.
7.使用UUID作为主键
平时一般都是使用native方式,但这样影响移植,数据库本身的性能也不乐观.
8.乐观锁代替悲观锁.
悲观锁,就是依靠于数据库的锁机制,对整个数据都锁定
乐观锁,基于数据版本记录机制.(提交版本号必须大于当前版本号才能执行)
这个锁,还是有待学习啊...了解的几乎为0
---------------------------------------------------------
hibernate中还有一些细节.
比如get/load的问题.
inverse..cascade的理解应用
inverse的使用:http://www.iteye.com/topic/2633
当inverse="true",child得显示设置parent,否则parent为null,无法关联.
inverse="false",child可不需要设置parent,也会关联,但多执行了update sql语句,降低了性能.
在应用的时候,采用双向关联,并把many方,设为主控方,就是在one方中的set节点中inverse="true".
cascade使用:在一对多关联中,关联集合的collection节点中:
cascade多了一个选值:
all-delete-orphan:当被关联对象失去关联宿主时,将其级联删除.
- 当保存或更新父亲对象,级联保存或更新儿子对象,相当于cascade属性为:save-update
- 当删除父亲对象,级联删除所有关联的儿子对象,相当于cascade属性为:delete
- 删除不再和父亲对象关联的所有儿子对象
--------------------------------------------------------------------
实体粒度的细分:
DDD中有实体与值对象之分.我认为这就是一种实体粒度的细分.
细分主要出于两个目的:
1.面向设计的粒度细分
实现更加清晰的系统逻辑
使用Component,运用这个可以达到DDD中的值对象
2.面向性能的粒度细分
提高性能系统的能耗比.
可以运用了lazy机制了.
实体层次设计
主要是继承问题..
还没有应用过...有待学习..
Blob,Clob的使用.....这个也没有应用过...
了解下它们的区别:
Blob,采用单字节存储,适合保存二进制数据,如图片
Clob,采用多字节存储,适合保存大型文本数据.
分享到:
相关推荐
深入浅出hibernate 清晰版
根据提供的标题“深入浅出 Hibernate.pdf”以及描述“深入浅出 Hibernate.pdf”,我们可以推断这份文档主要讲解了Hibernate框架的相关知识。接下来,我们将基于这些信息展开详细的解释与知识点的梳理。 ### ...
《深入浅出Hibernate》这本书是关于Java ORM框架Hibernate的深度解析。读书笔记主要涉及了实体对象的生命周期、实体对象的识别以及数据缓存这三大核心概念。 首先,实体对象的生命周期是Hibernate中至关重要的概念...
深入浅出Hibernate
夏昕的 深入浅出Hibernate>>是一本非常不错的解析Hibernate的书籍
本书内容深入浅出,先讲述持久层设计与ORM,再由Hibernate概述、Hibernate基础Hibernate高级特性顺序展开,直至Hibernate实战,重点讲述了Hibernate的基础语法、基础配置、O/R映射、数据关联、数据检索、HQL实用技术...
本书内容深入浅出,先讲述持久层设计与ORM,再由Hibernate概述、Hibernate基础Hibernate高级特性顺序展开,直至Hibernate实战,重点讲述了Hibernate的基础语法、基础配置、O/R映射、数据关联、数据检索、HQL实用技术...
深入浅出Hibernate 作者:夏昕 曹晓刚 7Z压缩:分包一大小18mb、分包二4mb 使用:把两个压缩包一起解压就可以了
深入浅出Hibernate完整版,除了资料外,还包括PPT和类型映射关系图
《深入浅出Hibernate》是夏昕撰写的一本关于Hibernate框架的经典教程,对于想要掌握Hibernate技术的开发者来说,这本书无疑是一份宝贵的资源。Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java...
深入浅出 Hibernate 电子书 中文
加了标签的《深入浅出HIbernate》,方便阅读和查找。
尽管提供的“部分内容”并未直接涉及Hibernate的具体内容,但基于标题与描述中提到的“深入浅出Hibernate”,我们可以围绕Hibernate这一主题进行展开。 ### Hibernate简介 Hibernate是一个开源的对象关系映射...
《深入浅出Hibernate》这本书是针对初学者设计的,旨在帮助读者快速掌握Hibernate这一流行的Java对象关系映射(ORM)框架。Hibernate是一个强大的工具,它简化了Java应用程序与数据库之间的交互,通过提供一种抽象...
深入浅出Hibernate(PDF)+夏昕(31.1M.pdf)
本下载包与书籍的实战篇紧密... * 给出for hibernate 3的xdoclet例子 v1.1 (2005.5.25) * 分离db目录下的build.xml * 增加了对投票的图形显示 * 修正了和webwork相关的一个中文bug v1.0 (2005.4.20) * 初始版本
《深入浅出Hibernate》这本书是Hibernate技术学习的重要参考资料,它为读者提供了全面、深入的Hibernate框架理解。Hibernate是一个开源的对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互,使得...
part1 一个2个 目前网上能找到最好的中文hibernate教程