RSS
热门关键字:  java  Ajax  JSP  JSF  Struts
当前位置 : 首页>Hibernate>列表

操纵持久化对象

来源:Java之道 作者: 时间:2007-10-18 点击:
1.    理解Session的缓存:
在Java里面,缓存通常是指Java对象的属性占用的内存空间,通常是一些集合类型的属性。在session接口的实现类SessionImpl中定义了一系列的Java集合,这些Java集合就构成了Session的缓存。
当Session的save()方法持久化一个对象时,这个对象被加入到Session的缓存中,以后即使应用程序中的引用变量不再引用这个对象,只要Session的缓存还没有被清空,这个对象仍然处于生命周期中。当Session的load()方法加载一个对象时,Session会先判断缓存中是否已经存在这个对象了,如果存在,就不需要再到数据库中重新加载了。
Session的缓存有两大作用:
1.1.        减少访问数据库的频率。
1.2.        保证缓存中的对象与数据库中的相关记录保持同步。
Session有两个方法:一个commit()事务提交方法,还有flush()刷新缓存方法,都有着清理缓存的作用。flush()进行缓存的清理,执行一系列的SQL语句,但不会提交事务。而commit()方法会先调用flush()方法,然后在提交事务。
2.    定义持久化类的建议:
在应用程序中,用来实现业务问题实体的(如,在电子商务应用程序中的Customer和Order) 类就是持久化类。如果这些持久化类遵循一些简单的规则,Hibernate能够工作得更好,这些规则也被称作简单传统Java对象(POJO:Plain Old Java Object)编程模型。但是这些规则并不是必需的。最好要遵循以下几条主要的规则:
1)      实现一个默认的(即无参数的)构造方法(constructor):
我们强烈建议,在Hibernate中,为了运行期代理的生成,构造方法至少是 包(package)内可见的。
2)      提供一个标识属性(identifier property):
我们建议你对持久化类声明命名一致的标识属性。我们还建议你使用一个可以为空(也就是说,不是原始类型)的类型。
3)      使用非final的类:
代理(proxies是Hibernate的一个重要的功能,它依赖的条件是,持久 化类或者是非final的,或者是实现了一个所有方法都声明为public的接口。你也应该避免在非final类中声明 public final的方法。
4)      为持久化字段声明访问器(accessors):
5)      如果你有如下需求,你必须重载 equals() 和 hashCode()方法:
想把持久类的实例放入Set中(当表示多值关联时,推荐这么做)

共7页: 上一页 1 [2] [3] [4] [5] [6] [7] 下一页
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册