Hibernate3
文章平均质量分 78
humao84229247
无
展开
-
Hibernate中一级缓存、二级缓存及查询缓存的总结
一、 一级缓存1. 一级缓存只缓存整个对象,不能缓存对象属性;2. 一级缓存是Session级的缓存,不能跨多个Session对象来使用;3. Session的load/get方法支持一级缓存的读和写;4. Query的list接口只支持一级缓存的写入,原创 2010-05-04 17:47:00 · 769 阅读 · 0 评论 -
Hibernate缓存技术
<br /><br /> 缓存是数据库数据在内存中的临时容器,它包含了库表数据在内存中的临时拷贝,位于数据库与应用程序之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高应用的运行性能。 Hibernate的缓存机制<br />1.1持久化层的缓存的范围<br /> 持久层设计中,往往需要考虑几个不同层次中的数据缓存策略。这些层次的划分标准针对不同情况有所差异,一般而言,ORM的数据缓存应包含如下几个层次:<br />事务级缓存(Transaction Layer Cache)<br /转载 2010-06-05 22:55:00 · 571 阅读 · 0 评论 -
Hibernate学习(七):session.flush与transaction.commit
以session的save方法为例来看一个简单、完整的事务流程,如下是代码片段:…………………………………………………………………………Session session = sessionFactory.openSession();Transaction tx = session.beginTransaction();session.save(customer);//之前已实例化好了原创 2010-05-30 17:32:00 · 1048 阅读 · 1 评论 -
Hibernate学习(六):session.delete以及对象状态转换图
delelte方法从某种程度上来说和update方法很类似,特别是对传入实例的要求,只要所传入实例的OID在数据库中有对应的记录即可,否则Hibaernate就会抛出异常。我们还是从对象能够处于的3个状态来一一阐述。1.传入实例是临时状态。一般来说这是不规范的操作,当然你必须要人为的给它指定OID,而且这个OID必须和数据库中的一条记录对应。2.传入实例是游离状态。前面我们说过,游离状态与转载 2010-05-30 17:30:00 · 571 阅读 · 0 评论 -
Hibernate学习(五):session.update
关于Session接口的update方法主要有如下几点要注意:1.输入参数一般而言,传递给update的对象要是处于游离状态的对象。如果传一个持久化对象,那么update方法就是多余的,因为Hibernate的脏检查机制会自动根据对象属性值的变化向数据库发送一条update语句;如果传入的对象处于临时状态,那么此时Hibernate应该会抛出异常。因为Hibernate在更新数据时会根据对转载 2010-05-30 17:27:00 · 1210 阅读 · 2 评论 -
Hibernate学习(三):Session的缓存及对象的状态
对于session这个接口的学习可以说是最痛苦也是最复杂的,因为它所涉及的方面太多了,一些隐藏的机制也很多,谁让它是Central API呢。对于它的几个最基本的方法如save()、delete()、flush()等的学习都花了我一定的时间。在深入了解这些这些方法前,了解session的缓存机制以及Hibernate中Java对象的状态对我们是很有帮助的。一.Session的缓存Java是转载 2010-05-30 17:22:00 · 354 阅读 · 0 评论 -
Hibernate学习(二):heibernate核心接口
Hibernate是一种对JDBC做了轻量级封装的对象---关系映射工具,所谓轻量级封装,是指Hibernate并没有完全封装JDBC,Java应用即可以通过Hibernate API访问数据库,还可以绕过Hibernate API,直接通过JDBC API来访问数据库。转载 2010-05-30 17:21:00 · 448 阅读 · 0 评论 -
Hibernate应用(一):第一个Hibernate应用程序
听说Hibernate已经很久了,但是直到最近才开始和它近距离的接触。很早之前在湘计就看到过一份培训的PPT,里面说到Hibernate应用于持久层,并且Hibernate和持久化似乎形影相随,总是成双成对的出现。那么Hibernate到底是做什么用的,它有什么优点呢?关于Hibernate的一些概念诸如ORM、持久化就不赘述了,我们直接开始构建我们的一个Hibernate应用(通常我们的应用都是转载 2010-05-30 17:19:00 · 327 阅读 · 0 评论 -
Hibernate学习(八):检索方式
在Hibaernate中提供了丰富的检索(查询)方式,因为项目中涉及到查询特别是复杂查询的时候基本上用的都市iBatis,所以一直都没怎么用Hibaernate自带的查询方法。总的说来Hibernate有如下集中查询方式:1.根据OID检索某条指定的记录,典型方法如session.load()和session.get();2.HQL检索方式。HQL是Hibernate Query Lang转载 2010-05-30 17:33:00 · 525 阅读 · 0 评论 -
Hibernate缓存机制
缓存是位于应用程序与物理数据源之间,用于临时存放复制数据的内存区域,目的是为了减少应用程序对物理数据源访问的次数,从而提高应用程序的运行性能. Hibernate在查询数据时,首先到缓存中去查找,如果找到就直接使用,找不到的时候就会从物理数据源中检索,所以,把频繁使用的数据加载到缓存区后,就可以大大减少应用程序对物理数据源的访问,使得程序的运行性能明显的提升. Hibernate缓存分类:转载 2010-05-30 19:49:00 · 425 阅读 · 0 评论 -
Hibernate学习(四):session.save()
一切的一切都要从数据的插入开始,没有数据的插入就没有数据来进行更新、删除和修改。在Hibernate中使用最频繁的用来插入数据的方法就是save()方法了。在Hibernate的官方API中对save方法的注释很简单:将指定的临时对象持久化,并首先指定一个标识符,也就是我们所说的OID,但是如果OID的生成策略是assigned的时候除外。注释虽然很简单,但是却向我们披露了足够的信息。我们从输原创 2010-05-30 17:23:00 · 548 阅读 · 0 评论 -
hibernate性能优化
<br />由于hibernate是对jdbc的一个封装,而且在session的缓存中存在着相互关联的对象。对于一个类的访问将导致对另外一个关联类的访问,这样将导致大量的sql语句产生,所以为了提升hibernate性能减少频繁访问数据库,就需要对hibernate进行优化。 <br />我们知道在hibernate的默认情况下,比如:在一对多的情况下,当我们访问Customer类后,又同时访问它相关联的Order类,但是如果我们不需要order的信息呢?这将导致hibernate的性能下降。 <br />原创 2010-06-05 22:59:00 · 677 阅读 · 0 评论