我有一个名为 Measurement
的类(class)这基本上只是一个带有一些成员的普通旧 Java 对象,并且它实现了 Parcelable
方便序列化的接口(interface)。
我想存储来自 Measurement
的数据SQLite 数据库中的对象。我需要一种简单的方法来传递具有附加数据库 ID 的数据。我的第一个解决方案是简单地添加 public long id
成员(member)Measurement
类(class)。这当然有效,但感觉就像它与数据库耦合在一起,这实际上没有意义 - a Measurement
可以脱离数据库而存在,用在各种根本没有数据库概念的地方。
所以,我的下一个想法是创建某种 MeasurementDbEntry
,这将扩展 Measurement
并添加 public long id
。然后,这将在与包含数据库 ID 相关的地方使用。这是一个好的设计吗?或者如果 MeasurementDbEntry
会更好吗?没有延长Measurement
,而是有一个 Measurement
成员(member)和id
成员(member)?
另外,在问题标题中我提到Data Access Object (DAO) ,但我不确定我在这里谈论的是否真的是 DAO,因为它并没有真正访问数据库本身(我正在使用 SQLiteOpenHelper
的子类来执行此操作)?它只是 Measurement
的更特定于数据库的表示形式。 。它会被视为 DAO(我应该将我的类命名为 MeasurementDAO
)吗?
最佳答案
您说得完全正确,将 DBEntry DAO
维护为单独的实体总是更好。
让我们从内存
的角度思考,
假设您的类 Measurement
需要保存在 Database
中,将来还需要 10
个附加属性,但实际上您不会使用它们遍布整个应用程序,那么如果您对两者使用相同的模型,那么无论您访问它,它都会消耗一些未使用的内存,显然在这种情况下,创建单独的实体是明显且首选的解决方案。
始终为可扩展性设计应用程序,今天 id
是唯一的属性,明天您可能需要添加一些其他附加属性,仅用于保存在数据库
中。这个设计将来对你来说会很方便。
关于java - DAO 应该扩展数据对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49665651/