仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 565|回复: 10
打印 上一主题 下一主题

[学习教程] 来看Hibernate中Session的缓存及对象的形态

[复制链接]
第二个灵魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:14:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
不得不提一下的是:.net是看到java红,而开发出来的工具。
关于session这个接口的进修能够说是最疾苦也是最庞大的,由于它所触及的方面太多了,一些埋没的机制也良多,谁让它是CentralAPI呢。
关于它的几个最基础的办法如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,就会招致一些稀里糊涂的毛病,并且如许也倒霉于数据的同步。

java比较简单,没有C++的烦琐,但学习时最好有C++为基础.与JSP和SQL起应用,功能强大.
老尸 该用户已被删除
沙发
发表于 2015-1-20 18:31:05 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
乐观 该用户已被删除
板凳
发表于 2015-1-26 16:06:50 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
蒙在股里 该用户已被删除
地板
发表于 2015-1-31 05:19:18 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
山那边是海 该用户已被删除
5#
发表于 2015-2-1 16:33:10 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
因胸联盟 该用户已被删除
6#
发表于 2015-2-7 08:41:02 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
柔情似水 该用户已被删除
7#
发表于 2015-2-8 20:17:42 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
再现理想 该用户已被删除
8#
发表于 2015-2-26 03:45:11 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
简单生活 该用户已被删除
9#
发表于 2015-3-8 11:47:22 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
不帅 该用户已被删除
10#
发表于 2015-3-13 03:46:03 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
若天明 该用户已被删除
11#
发表于 2015-3-20 11:30:52 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 05:29

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表