在许多Web应用程序中,一个非常常见的用例是用户可以在Web界面中对域对象进行排序-并保留该顺序以备后用。但是我注意到,每次需要实现这一点时,我总是最终想出一个不同的解决方案,并为简单的域对象增加了可观的权重和复杂性。例如,假设我拥有持久性实体Person

Person {
   long id
   String name
}


用户转到/myapp/persons并按照他们获得报酬(或其他费用)的顺序查看系统中的所有人员-可以单击所有人员并将其拖放到另一个位置-再次加载页面时,顺序被记住。问题在于关系数据库似乎没有做到这一点的好方法。 ORM也没有(休眠是我使用的)

我一直在考虑通用的排序方法-但是会产生一些开销,因为数据将单独保存,在某些用例中可能会减慢访问速度。我的问题是:有人能提出一种很好的方法来建模持久域对象的顺序吗?

我使用Hibernate或JDBCTemplate在JavaEE中工作-因此,以这些技术为基础,任何代码示例都将是最有用的。否则任何概念性想法也将受到欢迎。

更新:我不确定哪里出了问题,但是我似乎还不清楚,因为大多数人的回答与我的问题并不完全相符(就像在我脑海中一样)。问题不在于获取行或列时如何排序-而是更改了域对象的顺序-有人单击并将“人”从列表底部拖到列表顶部-刷新页面和列表现在按照它们指定的顺序。

最佳答案

提取结果时,只需使用不同的ORDER BY子句构建HQL查询,具体取决于用户上次使用的内容

关于java - 持久的有序域对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5017722/

10-09 20:03