java - 持久化有序域对象

标签 java hibernate web-applications orm domain-driven-design

在许多 Web 应用程序中,一个非常常见的用例是域对象可以由用户在 Web 界面中排序 - 并且该顺序会保留以备后用;但我注意到,每次我需要实现它时,我总是会想出一个不同的解决方案,并为一个简单的域对象增加相当大的重量和复杂性。例如,假设我有持久实体 Person

Person {
   long id
   String name
}

用户转到 /myapp/persons 并按照他们收到补偿(或其他东西)的顺序查看系统中的所有人 - 所有的人都可以点击并拖放到另一个位置——当页面再次加载时,顺序被记住。问题是关系数据库似乎没有很好的方法来做这件事; ORM 也不行(我用的是 hibernate)

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

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

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

最佳答案

获取结果时,只需根据用户上次使用的内容,使用不同的 ORDER BY 子句构建 HQL 查询

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

相关文章:

java - 将 'menu' 替换为用户的输入

Eclipse:持久性单元中未定义名为 "system-uuid"的生成器

python - 为多个请求重用数据库连接

JQuery完整日历,如何更改 View

java - init 方法在 servlet 中一次又一次地调用

java - 想要在 2 个不同的 jdk 中构建 2 个应用程序,然后在 2 个 Tomcat 服务器中运行

java - ssl 证书错误 : unable to get local issuer certificate

java - Spring Boot - 具有额外列的多对多关系的分页

java - JPA+ Hibernate 中的级联

javascript - 使用 Backbone 的 HTML5 的 Twitter 卡片历史记录