java - Hibernate设计模式问题

标签 java hibernate

我正在使用 Hibernate。它很好用。但是,假设我有一个对应于数据库表的类,其中只有 getter 和 setter 以及 toString 等方法。现在我想添加一些更多的方法来帮助目的,例如,假设我想获得带有一些添加的描述文本的创建日期,如下所示。

public class Client {
        private long id;
        private Calendar creationDate;
        protected String password;

            public long getId() {
            return id;
        }

        @SuppressWarnings("unused")
        private void setId(long id) {
            this.id = id;
        }

        public Calendar getCreationDate() {
            return creationDate;
        }

        public void setCreationDate(Calendar creationDate) {
            this.creationDate = creationDate;
        }

        ..
        .. some other getters and setters that corresponding to SQL columns 

        //Here I would like to have some help methods. Is it recommended to put it here?
        public String getCreationDateInSecs() {
            return "Date in secs: " + creationDate.getTimeInMillis * 1000;
        }
    }

问题是:我应该把这个方法放在哪里?

我应该将它添加到与值对象相同的类中还是应该将它放在其他地方?如果您明白我的意思,我想知道最佳实践 =)

最好的问候

最佳答案

Bozho 基本上概述了两种可能的方法:丰富模型贫血模型,并建议采用更面向对象的丰富模型。我在这里提倡贫血的方法。

您描述的功能看起来像是表示层的职责。我觉得放在UI相关的类中会更好,而不是放在领域模型中。

只要逻辑简单,放到领域模型中看起来无害

return "Date in secs: " + creationDate.getTimeInMillis * 1000;

但是,假设您有一个额外的要求来返回本地化的描述。您必须将对本地化工具的依赖项添加到您的领域模型,这会增加代码的耦合度。

因此,最好将不同层的职责分开。

关于java - Hibernate设计模式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4764277/

相关文章:

java - 如何从 View 构造函数设置 layout_width/height

Java 8 问题尝试在使用继承和泛型时添加 Function FunctionalInterface 调用

java - 如何使 JFrame 处于 Activity 状态(聚焦)?

java - 消息: Missing PDF in PrimeFaces Extensions DocumentViewer

java - Hamcrest:比较两个自定义类对象集合

java - Spring Boot 中的 Hibernate JPA/CrudRepository 实体锁定

Java Bean创建异常

java - Hibernate 没有在 Spring Boot 项目中抛出 LazyInitializationException

java - EntityManager..getResultList() 中的 ArrayIndexOutOfBoundsException

java - Hibernate - ManyToMany 使用映射表之一的唯一属性