我在hibernate中查看了Detached对象的优缺点,并找到了链接http://www.careerride.com/Hibernate-advantages-disadvantages-of-detached-objects.aspx。
优点: - 可以在不使用数据传输对象的情况下跨层到表层执行分离的对象传递。
问题1: - 如果我们使用Persistent对象而不是Detached对象并将其带到表示层,我们会遇到一些问题吗?
问题2: - Detached对象和Detached Object之间有什么区别?
答案 0 :(得分:1)
问题1:
直接在表示层中使用持久对象需要您实现视图中的Open Session(OSIV)模式。有些人喜欢它,但有些人讨厌它并将其视为反模式。你可以轻松地思考这种模式的实现,利弊。例如,this和this
问题2:
分离对象和分离对象?你有错字吗?
答案 1 :(得分:1)
这实际上取决于您是否要使用对象的延迟加载。如果你有一个大规模复杂的模式,那么延迟加载通常是首选,其中急切地获取对象基本上会导致你加入多个表。在这种情况下,您将加载一个对象,当在包含的对象上运行getter时,Hibernate会运行另一个查询。
然而,正如Ken Chan所提到的,为了在Web应用程序中实现这一点,您需要使用OSIV模式在视图仍处于活动状态时保持会话处于活动状态,否则您将获得LazyLoadingExceptions。 / p>
使用DTO时,您必须急切地获取数据,但另一方面,您不必返回数据库以进行延迟加载。这实际上取决于您的问题集和要求。