目前正在使用 JCR (Modeshape) 做一个测试应用程序。
抽象流程如下:session.open,存储库获取与查询相关的一个或多个节点,session.close。
结果节点包含我需要呈现给视图的属性等。我目前有让视图直接从 jcrNode 获取属性的天真设置。但是,这会产生一个错误,例如:“ID 为 'e2881d98-56fd-4a57-9cce-1a7d087a11e8' 的会话已关闭”,这是有道理的。
我相信一般方法(否则请更正)是创建某种 nodeDTO,当会话仍然处于活动状态时,它由 jcrNode 填充。然后视图可以随意使用 nodeDTO。
现在,这种 nodeDTO 的完美结构将模仿 jcrNode 1 对 1 的结构,那么为什么不将 jcrNode 用作 DTO 本身呢?这将通过类似于休眠分离/附加的东西来完成。我意识到 jcrNode(及其子节点)可以包含大量数据,因此应该有一些参数来确定分离的深度等。
另一种方法是使用类似于 openSessionInView 模式的东西,尽管这将是特定于 mvc 框架的。
所以我可以看到几种方法,最好的方法优先(imo):
- jcrNodes 的分离/附加功能
- 用于创建 DTO 的良好帮助类库
- openSessionInView
非常感谢对“最佳实践”方法等的任何评论。