【问题标题】:Implementing the Strategy Pattern against generated pojos针对生成的 pojo 实施策略模式
【发布时间】:2013-04-10 14:52:47
【问题描述】:

我正在为几个不同的数据库表编写解析器。我们在 Eclipse 中使用 Hibernate,我们制作了与我们的表相对应的 hbm.xml 映射文件,以便我们的 .java 文件根据表生成。

我们添加了一个名为 Gamer 的新表,其中包含常用的用户信息(地址名称电话号码等)。它与已建立的 Customer 表无关(也包含地址名称 phone# 等),但在验证步骤中有很多共享行为。

我认为将策略设计模式应用到这已经成熟了,问题在于 Customer POJO 和 Gamer POJO 没有从任何东西继承,并且它们是从独立的不相关表中定义的。

我对设计模式还很陌生,而且我很担心自己可能是个十足的笨蛋,所以对于我如何前进并共享验证逻辑的任何建议,而不必求助于 CustomerAddressValidator 和 GamerAddressValidator 类做同样的事情。

【问题讨论】:

    标签: java hibernate validation strategy-pattern


    【解决方案1】:

    首先你要区分Gamer是Customer,还是Gamer和Customer都是Person。

    在这两种情况下,您都会有一些基类和扩展类。在 Hibernate(和 JPA)中,有三种处理继承的方法:单表、联接和每类表。这三种方法各有利弊,因此您必须根据您的具体领域问题选择一种。有关惯性的更多信息,您可以阅读here(JPA)here(Hibernate)

    之后,您将能够为基类编写单个验证器(如果验证所需的所有值都放在基类中)并为基类和扩展类调用该验证器。

    从您的回答中我可以看出您需要地址验证器,所以您必须将地址放在基类中。希望对您有所帮助。

    【讨论】:

    • 感谢您的回复。我需要为基类实例化一个表吗?
    • 正如我所说,您有三种继承策略。如果您选择每类表或单表,则不必为基类创建表,而对于 Joined,您可以为基类创建表。
    猜你喜欢
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多