我的 Entity-Class 及其 "logic" 的最佳实践是什么 - 是否拆分?如果是这样,如何?
What is the best practice with my Entity-Class and its "logic" - split up or not? If so, how?
我开始学习 Hibernate,需要询问一些与 Entity-类 和可能的方法逻辑相关的最佳实践。以下是我的简单示例:)
@Entity
public class Service {
@Id
@GeneratedValue
@Column(name = "service_id")
private int serviceID;
@Column(name = "service_name")
private String serviceName;
@Column(name = "server_name")
private String serverName;
@Column(name = "server_os")
private String serverOS;
@Column(name = "port")
private Integer port;
@Column(name = "location")
private String location;
/*
* Origin of my question (simple logic for microservices)
*/
private boolean pingURL() {
... do something with port etc ...
}
public void boot() {
... do something with port and pingURL() ...
}
我的问题是 - 可以将我的“逻辑”放在这里吗?这是一个非常简单的例子,但我想以一种干净的方式正确地学习它。假设有 5 种或 10 种这些方法。也可以吗?有些事情困扰着我,我认为正确的方法是将方法分成单独的 class 或类似的东西。
我的控制器是这样的(简单示例)
@PostMapping("/bootService")
public void bootService(@RequestBody Service service) {
service.boot();
}
所以如果我想从我的实体中分离出“逻辑”,我将如何以最好的方式处理它,以便我仍然可以在我的控制器中使用服务 (service.boot()) ?
谢谢你帮助我:)
***编辑:
根据@Alien 的回答,这就是我的想法,我是这样处理的:
public class ServiceHandler {
private Service service;
public ServiceHandler(Service service) {
this.service = service;
}
/*
* Origin of my question (simple logic for microservices)
*/
private boolean pingURL() {
... do something with port etc ...
}
public void boot() {
... do something with port and pingURL() ...
}
}
我的控制器看起来像这样:
@PostMapping("/bootService")
public boolean bootService(@RequestBody Service service) {
ServiceHandler serviceHandler = new ServiceHandler(service);
serviceHandler.boot();
}
这是更好的还是我可以做的更好?
实体 class 应仅包含字段和 getter/setters、哈希码和 equals 方法。
或者一些操作瞬态变量数据的方法。
在一些服务中写下你的逻辑class。
我开始学习 Hibernate,需要询问一些与 Entity-类 和可能的方法逻辑相关的最佳实践。以下是我的简单示例:)
@Entity
public class Service {
@Id
@GeneratedValue
@Column(name = "service_id")
private int serviceID;
@Column(name = "service_name")
private String serviceName;
@Column(name = "server_name")
private String serverName;
@Column(name = "server_os")
private String serverOS;
@Column(name = "port")
private Integer port;
@Column(name = "location")
private String location;
/*
* Origin of my question (simple logic for microservices)
*/
private boolean pingURL() {
... do something with port etc ...
}
public void boot() {
... do something with port and pingURL() ...
}
我的问题是 - 可以将我的“逻辑”放在这里吗?这是一个非常简单的例子,但我想以一种干净的方式正确地学习它。假设有 5 种或 10 种这些方法。也可以吗?有些事情困扰着我,我认为正确的方法是将方法分成单独的 class 或类似的东西。
我的控制器是这样的(简单示例)
@PostMapping("/bootService")
public void bootService(@RequestBody Service service) {
service.boot();
}
所以如果我想从我的实体中分离出“逻辑”,我将如何以最好的方式处理它,以便我仍然可以在我的控制器中使用服务 (service.boot()) ?
谢谢你帮助我:)
***编辑:
根据@Alien 的回答,这就是我的想法,我是这样处理的:
public class ServiceHandler {
private Service service;
public ServiceHandler(Service service) {
this.service = service;
}
/*
* Origin of my question (simple logic for microservices)
*/
private boolean pingURL() {
... do something with port etc ...
}
public void boot() {
... do something with port and pingURL() ...
}
}
我的控制器看起来像这样:
@PostMapping("/bootService")
public boolean bootService(@RequestBody Service service) {
ServiceHandler serviceHandler = new ServiceHandler(service);
serviceHandler.boot();
}
这是更好的还是我可以做的更好?
实体 class 应仅包含字段和 getter/setters、哈希码和 equals 方法。
或者一些操作瞬态变量数据的方法。
在一些服务中写下你的逻辑class。