Øyv*_*ind 5 nhibernate isession
NHibernate的ISession公开了一个带有两个重载的方法Persist().我无法在任何地方找到有关此方法的文档.在http://nhibernate.info/doc/nh/en/index.html上的NHibernate参考资料中甚至没有提到它.
这种方法是否已弃用,还是会被弃用?什么时候应该使用?它与SaveOrUpdate()相比如何?
任何指针都将非常感激.
该线程的最后评论http://opensource.atlassian.com/projects/hibernate/browse/HHH-1273很好地说明了这一点:
persist() 定义明确。它使瞬态实例持久化。但是,它不保证标识符值将立即分配给持久实例,分配可能会在刷新时发生。规范没有这么说,这是我使用 persist() 时遇到的问题。
persist() 还保证如果在事务边界之外调用它,它不会执行 INSERT 语句。这对于具有扩展会话/持久性上下文的长时间运行的对话非常有用。
需要像 persist() 这样的方法。
save() 不保证相同,它返回一个标识符,如果必须执行 INSERT 才能获取标识符(例如“身份”生成器,而不是“序列”),则此 INSERT 会立即发生,无论您是否在里面或在交易之外。这对于具有扩展会话/持久性上下文的长时间运行的对话来说并不好。
另外,从我从其他来源收集到的信息看来,具有cascade=“persist”的实体将在调用时级联,而不是在刷新时级联。这可能也非常有用。
| 归档时间: |
|
| 查看次数: |
1672 次 |
| 最近记录: |