当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:12:00  来源:本站整理

<b>Hibernate中Session的缓存及对象的情况</b>[Java编程]

赞助商链接



  本文“<b>Hibernate中Session的缓存及对象的情况</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

关于session这个接口的学习可以说是最痛楚也是最复杂的,因为它所触及的方面太多了,一些躲藏的机制也很多,谁让它是Central API呢.

关于它的几个最基本的办法如save()、delete()、flush()等的学习都花了我一定的时间.在深化理解这些这些办法前,理解session的缓存机制以及Hibernate中Java对象的状况对我们是很有帮忙的.

一.Session的缓存

Java是纯面向对象的语言,因此不大概像C语言那样直接操作内存,比方声明一段可用的内存空间.在Java里面,缓存普通是指Java对象的属性占用的内存空间,普通是一些调集范例的属性.在session接口的实现类SessionImpl中定义了一系列的Java调集,这些Java调集就构成了Session的缓存.

利用缓存的一个很明显的好处就是可以削减数据库拜候的频率,提高利用程序的性能,因为从内存中读取数据明显要比从数据库中查询快多了.按照我个人的理解,Session的缓存实际上起到了一个“过渡仓库”作用.就像魔兽中的豪杰一样,身上城市背有一个包,用来存放常用的物品如补血药水、补魔药水、回城卷等等.假如想用回城卷而身上没有回程卷的话就要跑到商店去shopping了,这样就会浪费大量的时间了,除非你目前就在商店旁边;假如想用的回城卷的时刻身上就有的话,豪杰便可以直接用而没必要大老远的跑到商店去了.我们的Session的缓存可以说就相当于豪杰身上的背包,我的利用程序就是豪杰,而数据库就是商店咯,以下图所示.

当然这个比方不是很精确了,比方说在Hibernate利用中我们可以向数据库插入一条新的记录,而在魔兽中你是不大概给商店增添存货量的,只是为了便于理解,才作了这么一个比较.

二.Hibernate中Java对象的状况

在一个Hibernate利用中,Java对象可以处于以下三个状况之一:

1.暂时状况(Transient).处于这个状况的对象还被没有归入Hibernate的缓存管理体系,跟任何session都不关联,在数据库中也没有对应的记录.

2.长期化状况(Persistent).处于这个状况的对象位于Session的缓存中,并且和数据库中的一条数据记录像对应.

3.游离状况(Detached).处于这个状况的对象不再位于Session的缓存中,它与暂时对象的最大辨别在于,游离对象在数据库中还大概存在一条与它对应的记录.

上述3个状况之间是可以彼此转化的,并且我们所说的状况都是针对某一个session实例而言的,比方说,对象A关于session1而言是处于长期化状况的,因为它处于session1的缓存中,但是关于session2而言对象A并不在它的缓存中,因此它是处于游离状况的.

关于这几个状况的理解耗费了我一定的时间,因为老是有一些稀罕古怪的动机在我脑海中产生.比方说,关于暂时状况的定义,假如我新建一个对象,然后人为的让它属性的值和数据库中的一条记录对应,包含id的取值都一样.此时它可否说是处于游离状况呢?因为它和一条记录想对应呀.实际上这些情形都是由于一些不和标准的操作而产生的.在Hibernate利用中,无论Java对象处于暂时状况、长期化状况还是游离状况,利用程序都不该该改正它的OID.OID的值应当由Hibernate来保护和负责,实际上Hibernate在同步缓存中的对象与数据库中的记录时,都是通过OID来举行关联和映射的,假如利用程序人为的改正了对象的OID,就会招致一些莫名其妙的错误,并且这样也不利于数据的同步.


  以上是“<b>Hibernate中Session的缓存及对象的情况</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .