我应该使用2个应用程序和2个实体与JPA相同的表吗?

时间:2012-11-06 04:53:26

标签: java jpa-2.0 eclipselink

我喜欢在我的数据库中创建两个具有相同用户信息的java应用程序,但是一些用户相关信息仅与app A相关,其他信息仅适用于app B.

我的问题是,我可以为A编写用户类并忽略B的字段,反之亦然吗?

或者是加载字段懒惰的正确方法,并留下我永远不会使用的字段? 这会导致内存中更大的对象吗?

或者,如果有必要,冗余存储信息并更新两个表/ dbs会更好吗?

请告诉我利弊或可能导致错误的原因。

如果这很重要,我会使用eclipselink和postgres。

但是@Vikdor,但是你的回答让我的脑海里浮现出更多的问题:)。

  1. 所以你答案的主要陈述是,只要我不违反表格的条件就没有问题吧?

  2. 让我们说,至少有一个应用程序,可能两者都被大量用户大量使用。 保存冗余信息以防止出现性能问题会更好吗? 或者,将A / B特定信息保存在单独的对象/表中并使用一个标识用户的值(例如他的电子邮件)可能是一个好主意,因此我有3个DB 1用于A,具有A特定数据,一个用于B B特定数据和一个基本用户信息(邮件,密码,用户名等)?

1 个答案:

答案 0 :(得分:0)

只要应用程序只读取User表中与其相关的信息,就可以定义只包含对给定应用程序有意义的属性的实体。

但是,如果要通过任何这些应用程序创建新的用户记录,则需要使用用户的所有非可空属性来定义实体。否则,插入将在数据库层失败。

关于内存中对象的大小,如果您的用户表非常大并且您没有使用大多数属性而您只执行读取操作,那么定义用户可能是一个很好的优化只有必需属性的实体。