首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

NHibernate的持久化对象有关问题

2013-09-28 
NHibernate的持久化对象问题NHibernate中对象有3中状态,瞬时,持久,托管。当session.Save(user)的时候,user

NHibernate的持久化对象问题
NHibernate中对象有3中状态,瞬时,持久,托管。
当session.Save(user)的时候,user指向的对象是持久化状态,但是这是其实数据库中并没有语气对应的记录,
而是session.flush()或者session.Close()的时候才提交到数据库。

所以说,持久化对象与瞬时对象一样,在数据库中都没有语气完全匹配的记录,对么?

你们怎么看?
[解决办法]

引用:
当session.Save(user)的时候,user指向的对象是持久化状态,但是这是其实数据库中并没有语气对应的记录,
而是session.flush()或者session.Close()的时候才提交到数据库。

所以说,持久化对象与瞬时对象一样,在数据库中都没有语气完全匹配的记录,对么?


这三个状态的准确含义是:
瞬态,对象的id是unsaved-value指定的值
持久态,对象的id不是unsaved-value指定的值,并且当前正在一个session里
分离态,对象的id不是unsaved-value指定的值,并且当前不在任何session里
它不是从与记录的对应关系角度来说的

在持久态时,nh保证标识一致性,也就是说:user1.Id == user2.Id 等价于 user1 == user2,
持久态的对象通常有一个对应记录,但未必一定有对应记录,当使用hilo策略生成id时,nh可以先分配id而不需立即发出insert语句,会出现短时间内有id而没有对应记录的情况

热点排行