【发布时间】:2018-02-26 13:33:37
【问题描述】:
由于我最近阅读了很多关于端口和适配器架构的内容,我偶然发现这段代码是按照上述架构构建的应用程序的一部分:
package com.example.user.management;
import lombok.*;
import javax.persistence.*;
import java.io.Serializable;
@Table(name = "user")
@AllArgsConstructor
@Data
@NoArgsConstructor
@javax.persistence.Entity
@Setter
@Getter
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private Long id;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
@Column(name = "role")
private String role;
public User(String username, String password, String role) {
this.username = username;
this.password = password;
this.role = role;
}
}
由于端口和适配器架构的主要意图是将域层与任何技术细节和实现分开和隔离,并记住这个用户实体实际上是域层,它不包含依赖关系到java持久性库?据我了解,域层仅负责实现用例。 对于这种架构中的域层实际上应该是什么,我真的很困惑。
【问题讨论】:
-
所以没有人费心去创建一个 DAO(以及所有的映射)。
-
我猜这是因为演示似乎是简单的 CRUD 应用程序。但由于端口和适配器(六边形)架构旨在用于大型企业项目,因此不应该出现这种情况。
-
不,但在演示中通常是这样。不要假设太多。
-
是的,但是这个演示违反了架构的基本规则——领域模型不应该依赖于任何技术栈。
-
'领域层只负责实现用例' 个人认为是应用层实现用例。
标签: design-patterns architecture hexagonal-architecture