hibernate
afterRain
再冷的冰也会被暖流融化,这世界上本没有冰点,也就根本没有冰点狂人。。。
展开
-
再论hibernate延迟加载
延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。在Hibernate中提供了对实体对象的延迟加载以及对集合的延迟加载,另外在Hibernate3中还提供了对属性的延迟加载。下面我们就分别介绍这些种类的延迟加载的细节。A、实体对象的延迟加载: 如果想对实体对象使用延迟加载,必须要在实体的映射配置文件中进行相应转载 2007-09-14 14:10:00 · 632 阅读 · 0 评论 -
优化hibernate性能的几点建议
1、针对Oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100。Oracle数据库的JDBC驱动默认的Fetch Size=15,设置Fetch Size设置为:30、50,性能会有明显提升,如果继续增大,超出100,性能提升不明显,反而会消耗内存。 即在Hibernate配制文件中进行配制:转载 2008-01-10 12:47:00 · 738 阅读 · 0 评论 -
Hibernate二级缓存攻略
很多人对二级缓存都不太了解,或者是有错误的认识,我一直想写一篇文章介绍一下Hibernate的二级缓存的,今天终于忍不住了。 我的经验主要来自hibernate2.1版本,基本原理和3.0、3.1是一样的,请原谅我的顽固不化。 hibernate的session提供了一级缓存,每个session,对同一个id进行两次load,不会发送两条sql给数据库,但是session关闭的时候转载 2008-01-10 12:37:00 · 880 阅读 · 0 评论 -
Hibernate中No row with the given identifier exists问题的原因及解决
Hibernate中No row with the given identifier exists问题的原因及解决 产生此问题的原因: 有两张表,table1和table2.产生此问题的原因就是table1里做了关联或者(特殊的多对一映射,实际就是一对一)来关联table2.当hibernate查找的时候,table2里的数据没有与table1转载 2007-10-22 11:34:00 · 8997 阅读 · 0 评论 -
《深入浅出Hibernate》读书笔记(8)——Hibernate分页
数据分页显示,是很多B/S系统会遇到的问题。现在大多数主流数据库都提供了数据部分读取机制,而对于某些没有提供相应机制的数据而言,Hibernate也通过其它途径实现了分页,如通过Scrollable ResultSet,如果JDBC不支持Scrollable ResultSet,Hibernate也会自动通过ResultSet的next方法进行记录定位。Hibernate的Criteria、Que转载 2007-09-25 15:44:00 · 597 阅读 · 0 评论 -
《深入浅出Hibernate》读书笔记(7)——回调与拦截机制
Hibernate通过Lifecycle、Validatable接口制定了实体对象CRUD过程中的回调方式。 Lifecycle接口中的onSave、onUpdate、onDelete方法,如果返回true则意味着需要中止执行相应的操作过程。如果代码运行期间抛出了CallbackException,对应的操作也会被中止。注意,不要试图在这些方法中调用Session进行持久化操作,这些方法转载 2007-09-25 15:44:00 · 718 阅读 · 0 评论 -
《深入浅出Hibernate》读书笔记(6)——集合类型和结果集排序
最近真是忙,事情都挤到一块去了。 终于有时间又看了几页书。 言归正传,Hibernate中的Collection类型分为有序集和无序集两类。这里所谓的有序和无序,是针对Hibernate数据持久过程中,是否保持数据集合中的记录排列顺序加以区分的。无序集有Set,Bag,Map几种,有序集有List一种。有序集的数据在持久化过程中,会将集合中元素排列的先后顺序同时固化到数据库中,读取时也会转载 2007-09-25 15:43:00 · 691 阅读 · 0 评论 -
《深入浅出Hibernate》读书笔记(5)——持久层操作
Session.get/load的区别: 1.如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObejctNotFoundException。 2.Load方法可返回实体的代理类类型,而get方法永远直接返回实体类。 3.Load方法可以充分利用内部缓存和二级缓存中现有数据,而get方法则仅仅在内部缓存中进行数据查找,如没有发现对应数据,将转载 2007-09-25 15:42:00 · 567 阅读 · 0 评论 -
《深入浅出Hibernate》读书笔记(3)——数据缓存
一般而言,ORM的数据缓存应包含如下几个层次: 1. 事务级缓存(Transcation Layer Cache) 2. 应用级/进程级缓存(Application/Process Layer Cache) 3. 分布式缓存(Cluster Layer Cache) Hibernate数据缓存(Cache)分为两个层次,以Hibernate语义加以区分,可转载 2007-09-25 15:41:00 · 664 阅读 · 0 评论 -
《深入浅出Hibernate》读书笔记(2)——实体对象识别
在Java语言中,对象之间的比较可以通过引用比较(==)和内容比较(equals)两种方式进行,而在Hibernate的实体对象的比较是通过主键值来比较,如果要实现自己的识别逻辑,则需要重写equals方法和hashCode方法。 检查数据对象改变检查的一般策略有下面两种: 1. 数据对象监控 数据对象监控的实现方式,通过拦截器对数据对象的设值方法进行拦截。一旦转载 2007-09-25 15:40:00 · 547 阅读 · 0 评论 -
《深入浅出Hibernate》读书笔记(9)——Session管理
这一节是非常实用的一节,我在阅读此书的时候,一直在迷惑,究竟应该怎样管理Session呢?因为Session的管理是如此重要,类似于以前写程序对JDBC Connection的管理。看完此节后,终于找到了方法。 在各种Session管理方案中,ThreadLocal模式得到了大量使用。ThreadLocal是Java中一种较为特殊的线程绑定机制。通过ThreadLocal存取的数据,总是转载 2007-09-25 15:45:00 · 821 阅读 · 0 评论 -
《深入浅出Hibernate》读书笔记(4)——事务管理
事务的4个基本特性(ACID): 1. Atomic(原子性):事务中包含的操作被看作一个逻辑单元,这个逻辑单元中的操作要么全部成功,要么全部失败。 2. Consistency(一致性):只有合法的数据可以被写入数据库,否则事务应该将其回滚到最初状态。 3. Isolation(隔离性):事务允许多个用户对同一个数据的并发访问,而不破坏数据的正确性和完整性。同时,并转载 2007-09-25 15:42:00 · 816 阅读 · 0 评论 -
《深入浅出Hibernate》读书笔记(1)——实体对象生命周期
最近正在研读《深入浅出Hibernate》一书,前面写的随笔有些也是读该书的笔记,只是未做归类,从这篇开始,我将把相关的内容都整理成一个系列的读书笔记。 今天这篇是有关实体对象的生命周期。我刚开始接触Hibernate的时候,只是简单的把它当做一个API工具,直到后来看到有关VO和PO的内容时,才意识到Hibernate不仅仅是一个O/R Mapping的API工具,它还是一个容器。它可转载 2007-09-25 15:37:00 · 716 阅读 · 0 评论 -
hibernate----Inverse 和 cascade区别 | cascade="all-delete-orphon" 总结
Inverse 和 cascade的区别 实际上,他们是互不相关的概念:inverse是指的关联关系的控制方向,而cascade指的是层级之间的连锁操作。级联删除在默认情况下,当Hibernate删除一个持久化对象时,不会自动删除与他关联的其他持久化对象,如果希望Hibernate删除Customer对象时,自动删除和Customer关联的Order对象,可以把cascade的属性设置为delet原创 2007-09-21 15:39:00 · 3063 阅读 · 0 评论 -
关于hibernate多对多----many to many----很实用.
1、到底在哪用cascade="..."? cascade属性并不是多对多关系一定要用的,有了它只是让我们在插入或删除对像时更方便一些,只要在cascade的源头上插入或是删除,所有cascade的关系就会被自己动的插入或是删除。便是为了能正确的cascade,unsaved-value是个很重要的属性。Hibernate通过这个属性来判断一个对象应该save还是update,如果这个对象的转载 2007-09-14 16:31:00 · 2225 阅读 · 0 评论 -
关于hibernate缓存,load,get
hibernate的缓存分为一级缓存和二级缓存,听起来好像很难懂,其实没啥的。一级缓存是直接操作数据库的,也就是session。通过 session我们可以实现save,delete等操作。通常的操作是创建一个新的sesion或者打开一个现有的session---->开启事务---->执行save,delete操作---->提交事务---->同步数据库---->关闭session。二级缓存在内存中原创 2007-09-14 15:00:00 · 953 阅读 · 0 评论 -
hibernate的精华----集合映射
关于hibenrate,两年前的开发中用到过,没想到再用hibernate开发是两年后的今天,这阵子用hibernate开发把以前没有用到的地方全用了,认识也深入了。那么,这阵子的开发应该做个总结了,从一些基础的知识开始总结,比看书快。来说一个基础全面的表关系student表 stuId(主键)classIdfileIdclass表classId(主键)lesson表lesId(主转载 2007-09-14 15:41:00 · 803 阅读 · 0 评论 -
关于hibernate的延迟加载
hibernate 在启动的时候会对每个映射文件对应的表进行增删改查的操作 。即一个映射文件产生4个sql语句。关于延迟加载,很多网上说的都非长多,而且太详细以至于简单的问题复杂化。我大题小谈吧。优点:提高数据库的访问速度,不马上加载所有的sql语句中涉及的所有列。只是在需要加载的时候再加载。也许整个过程都用不到,加载可以减小系统的负荷。缺点:任何事物都是对立的。延迟加载的缺点就是整个原创 2007-09-12 22:32:00 · 659 阅读 · 0 评论 -
Hibernate的缓存机制介绍
缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。 缓存的介质一般是内存,所以读写速度很快。但如果缓存中存放的数据量非常大时,也会用硬盘作为缓存介质。缓存的实现不仅仅要考虑存储的介质,还要考虑到管理缓存的并发访问和转载 2008-01-10 12:50:00 · 604 阅读 · 0 评论