发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 CQRS 扩展性 并发编程 事件溯源 分布式 SOA

我理解的Persistent Object Identity in Hibernate

2003-08-09 09:38
赞助商链接

>Persistent Object Identity

>The application may concurrently access the same persistent >state in two different sessions. However, an instance of a >persistent class is never shared between two Session instances. >Hence there are two different notions of identity:

>Persistent Identity foo.getId().equals( bar.getId() )
>JVM Identity foo==bar

>Then for objects returned by a particular Session, the two >notions are equivalent. However, while the application might >concurrently access the "same" (persistent identity) business >object in two different sessions, the two instances will >actually be "different" (JVM identity).

>This approach leaves Hibernate and the database to worry about >concurrency (the application never needs to synchronize on any >business object, as long as it sticks to a single thread per >Session) or object identity (within a session the application >may safely use == to compare objects).

不知我这样理解对不对?
当不同的Session并发访问同一个PO时,在JVM中,不同的Session拿到不同的ID(是不是做了PO不同的副本?或者是timestamp什么的?),这样就可以避免PO同步问题,留给Hibernate 和数据库处理。我认为Hibernate会使用乐观锁,在提交的时候检查一下是否有变化,而对于数据库,它也会用相应的各种锁和事务来控制。

另外,不知道Hibernate在什么时候用上了悲观锁. 还望指点一二。

2003-08-09 21:14

当不同的Session并发访问同一个PO时,在JVM中,不同的Session拿到不同的ID。

但我想知道,是不是此时Hibernate做了PO不同的副本?或者是指向相同的PO的不同的ID?

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系反馈 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com