0

表A和B需要有1:M的关系

a 和 b 在应用程序运行时添加,因此创建了 A,然后说创建了 4 个 B。每个 B 实例都必须按顺序排列,以便我以后可以按照添加它们的顺序提取它们。

该应用程序将是在 Tomcat 上运行的 Web 应用程序,因此可以同时运行 10 个实例。

所以我的问题是:

1)如何保留插入顺序,以便我可以提取 A 引用的 B 实例,其顺序与我持久化它们的顺序相同。这很棘手,因为我们添加到 Collection 中,然后它会被保存(对吗?)。那么,这取决于Hibernate如何保存它,如果它改变了我们添加实例的顺序怎么办?我在描述关系时看到了类似 LIST 而不是 SET 的东西,这是我需要的吗?

2)如何向 B 添加第三列,以便我可以区分实例,例如 B 表中的 SEX(M,F,U) 。我需要一个特殊的表,还是有一种简单的方法来描述 Hibernate 中的常量。你有什么建议吗?

3)谈到并发,你推荐使用什么方法?数据库中应该没有冲突,如您所见,如果没有在没有延迟地调用它的地方插入行(添加PK),可能很容易出现一些冲突?

4

1 回答 1

3

如何保留插入顺序,以便我可以提取 A 引用的 B 实例,其顺序与我保存它们的顺序相同。(...)

使用有序集合,如List. 请注意,列表可以通过两种不同的方式进行映射:

  • 作为有序列表,该顺序未在数据库中具体化
  • 作为索引列表,订单在数据库中实现

请参阅第2.2.5.3.4 节。详细信息的索引集合(列表,地图)

如何将第三列添加到 B 以便我可以区分实例,例如 B 表中的 SEX(M,F,U) 。我需要一个特殊的表,还是有一种简单的方法来描述 Hibernate 中的常量。你有什么建议吗?

在 B 上使用 aenum并与@Enumerated. 请参阅此先前的答案

谈到并发,你推荐使用哪些方法?数据库中应该没有冲突,如您所见,如果没有在没有延迟地调用它的地方插入行(添加PK),可能很容易出现一些冲突?

嗯...使用适合您需求的事务和锁定策略(但老实说,我不确定我是否理解了这个问题)。

于 2010-04-06T12:09:05.970 回答