gpt4 book ai didi

Java Spring,使用域对象

转载 作者:行者123 更新时间:2023-12-01 14:09:31 26 4
gpt4 key购买 nike

我正在构建一个 Spring MVC Web 应用程序,它使用 JPA/Hibernate 来存储对象。我有一个关于域对象以及如何正确使用它们的问题。有一些具有依赖性的域对象。例如,分配有区域实体的公司实体。

E-R relation diagram

我有一个从 Controller 调用的简单帮助程序类,其任务是从 URL 地址读取 XML 文件,解析其内容并根据该内容返回新的 Company 对象类。

class MyCustomHelper {
MyCustomService myCustomService;

//I have to pass myCustomService to be able to fetch existing Region entities from db
public MyCustomHelper(MyCustomService myCustomService){
this.myCustomService = myCustomService;
}

public Company createCompanyObjectFromUrl(){
//I get these values via xml parser in the app
String name = "Company name";
String address = "Address of a company";
Integer regionId = 19;

//Create new instance of entity and fill it with data
Company company = new Company();
company.setName(name);
company.setAddress(address);

//Assign already existing region to new Company
Region region = this.myCustomService.findOneRegion(regionId);
company.setRegion(region);
return company;
}

}

这个方法可行,但我不知道它的设计是对还是错。如果我的 Company 对象只是没有任何依赖项的普通对象,则很容易创建新 Company 并为其设置 String 和 Integer 值。但事实并非如此。

在创建新公司时,我还必须创建与现有区域的连接。我通过在助手的构造函数中传递一个服务对象来完成此操作,该对象从数据库中获取现有区域。

一旦一个新公司被传回 Controller ,就会为其设置一些其他属性,然后将其保存到数据库中。

我有一种感觉,这不是一个很好的方法(将 Service 实例传递给帮助器类)。也许在 helper 中创建某种 DTO 对象,将其返回到 Controller ,然后将其映射到 Domain 对象会更干净。

还是这样就可以了?

最佳答案

我认为 myCustomHelper 实际上最好命名为 ImportService 或类似的名称,即它本身就是一个服务,可以向其中注入(inject)另一个服务。

关于Java Spring,使用域对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18635422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com