我想知道你对如何设计这样的看法是什么。
我有几种用户可以说它们被称为 A , B , C 。 它们都可以是用户类的子类。 (他们都将拥有不同类型的权限,允许他们读/写/输入某些应用程序页面。)
我应该如何设计那些calasses( A , B , C ,有/没有超类用户)和数据库中的表,以便它们在我的应用程序中运行良好。
我正在使用 JSF 在 JEE 中撰写。我正在阅读有关设计模式的内容,但我不知道如何使用给定的 DB 表来实现它们。
(例如,我将如何映射抽象类User与它在DB中的子类之间的关系)
我正在使用普通的JPA。
答案 0 :(得分:1)
首先,您确定您拥有正确的整体课程设计吗?在许多情况下,用户今天可能是“用户”,但稍后可能被提升为“管理员”。这表示用户正在扮演角色,这是时间限制的。如果是这种情况,继承不是正确的建模技术。 Peter Coad是这个领域的大师 - 试着用他的名字搜索谷歌。
将对象图映射到关系数据库表是一个很好的领域。有三种主要方法 - 每个类层次结构一个表;每个具体类一个表,每个类一个表(抽象和具体)。没有一种方法是完美的 - 它们都有权衡。在同一数据库中使用多个映射策略是很常见的。谷歌再次成为你的朋友。