【发布时间】:2011-06-26 04:27:24
【问题描述】:
使用 MVC 结构和 Business Object / DAO 架构处理业务应用程序。对于任何正常的业务对象,CRUD 功能都相当简单。但是处理“客户就是用户”这样的父子关系的最佳方式是什么?
我知道涉及到以下类:
User, UserDAO, Customer, CustomerDAO
Customer 类可以继承 User 就好了,但是如何在 DAO CRUD 函数中最好地体现这一点?
【问题讨论】:
-
你有两张表——
Users和Customers?我会感到惊讶。我会想到一个带有user_type字段的users表。然后只有一个 VO,即Users。如果user.isCustomer()是真的,那就是客户。所以,要么你不应该使用两个表,要么你不应该使用继承。 -
@Nishant:这根本不是真的。如果客户有用户没有的其他数据,您将用不相关的列将用户表弄得一团糟。用两张表实现继承当然是可行的。
-
@Matt 我不是在谈论可行性,而是更多地考虑设计。客户是用户——将它们放在同一张表中是个好主意。这将有助于搜索,而且对我来说更有意义。如果您担心混乱,请将无关数据外部化。制作一个单独的表
customer_details并将其与外键链接。在许多情况下,您可能希望将用户转换为客户。只更改类型而不是在表之间复制数据然后擦除前者更容易。只是我的 2%。 -
@user456584: blogs.tedneward.com/2006/06/26/…
标签: java inheritance crud dao business-objects