关于Hibernate保存的问题.

bradwoo8621 2004-09-16 05:40:29
请问, Hibernate中如何判断一个对象的某些属性被修改过? 然后针对这些被修改的属性进行持久化.
例如有一个类
public class Person {
private String name = null;
private int age = 0;

public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return this.age;
}
public void setAge(int age) {
this.age = age;
}
}
在装载Person对象以后改变了age的值. 那么持久化的时候, 是name和age同时更新, 还是仅仅更新age的值. 如果仅更新age, 这是怎么判断出来的? 另外就是如果多线程操作同一片数据的话, 仅更新片断怎么保证数据的完整性?
不是Hibernate也可以, 其他的JDO实现的机理也行.
...全文
161 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
bradwoo8621 2004-09-21
  • 打赏
  • 举报
回复
这个问题已经解决了. 谢谢0xCafeBabe
bradwoo8621 2004-09-17
  • 打赏
  • 举报
回复
to 0xCafeBabe(CafeBabe):
能详细解释一下吗?
因为这个bean是一个干净的bean. 没有任何附加代码. 那么如何知道只有age被更新了?

我得MSN: bradwoo8621@hotmail.com
可以加我详细说
0xCafeBabe 2004-09-17
  • 打赏
  • 举报
回复
>如果这样的话一个bean脱离了hibernate的session管理以后再次回来<
除非你设置select-before-update
bradwoo8621 2004-09-17
  • 打赏
  • 举报
回复
刚才看了Hibernate的说明, 有一个cglib_asm.jar好像是用于动态更改Hibernate对象的字节码的. 也就是说在设计的时候使用的Object class和运行态的class是不一样的. Hibernate正是通过这种方法实现对对象中属性变化的监控. 当然这是我得猜测.
请问有没有高手对此进行过研究, 能给一个明确的答案?
bradwoo8621 2004-09-17
  • 打赏
  • 举报
回复
呵呵, 如果这样的话一个bean脱离了hibernate的session管理以后再次回来, 那就比较麻烦了.
有哪位老兄知道hibernate的实现方式? 或者其他的也可以.
0xCafeBabe 2004-09-17
  • 打赏
  • 举报
回复
这和{这个bean是一个干净的bean}有啥关系呀。

也许你这个对象被load的时候,hibernate可以保留一份copy呀,等你提交的时候一比较不就知道啦。瞎猜的,有兴趣看源码去吧。
0xCafeBabe 2004-09-16
  • 打赏
  • 举报
回复
>是name和age同时更新, 还是仅仅更新age的值<
可以设置一个class是否dynamic-update(dynamic-update就是只更新发生变化的字段)

>另外就是如果多线程操作同一片数据的话, 仅更新片断怎么保证数据的完整性?<
pessimistic的事务:hibernate,jdbc或者jta事务
或者
optimistic的事务(或者叫做长事务):为这个class设置version或者timestamp字段

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧