gpt4 book ai didi

java - 我需要在数据库中搜索 "customer",这里有什么好的设计?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:58:40 26 4
gpt4 key购买 nike

我们是一对学生,他们试图实现一种设计来在数据库中搜索客户信息。当 GUI 类要求任何姓氏为“Jensen”的客户时,客户类是否会为每个姓氏的客户创建许多对象,将所有这些对象提供给 GUI 类,让 GUI 类例如更改一些东西或添加一些东西,然后在客户类中使用某种方法在数据库中更新它?


Customer class:
Surname
Email

getSurname()
setSurname()

static List getCustomerFromDb(surname, email):
Customer customer = new Customer()
customer.setSurname(surname from db)
..
..
return listOfCustomers

updateThisCustomerInDb():
//updates all fields in db

我们现在的实现是,我们从客户中的静态方法向 GUI 类发送一个结果集以搜索客户。如果 GUI 类想要更改客户中的电子邮件等字段,它会发送一个具有要更改的键和值的 HasMap。

创建大约 300 个客户对象并且只需要其中一个不是很糟糕吗?

我们寻求帮助的原因是,我们听说不使用对象而是使用 ResultSet 和 HasMap 来更新、更改、查找(在数据库中)客户是一个糟糕的 OO 设计。

谢谢 =)

最佳答案

假设像 Hibernate 这样的 ORM 框架要么矫枉过正,要么不允许您进行分配,这就是我的建议:

实现 DAO 设计模式。简而言之,这意味着您声明一个接口(interface),其中包含用于检索和更改数据库数据的方法。他们的签名应该类似于您提供的示例代码,并且应该返回域对象,即不特定于数据库访问代码实现的对象。客户的典型域对象可能如下所示:

public class Customer {

private String surname;
private String email;
private long id;

public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}

}

然后创建一个接口(interface)的实现,其中放置了所有严格的 DB 特定代码。

关于糟糕设计的说法对我来说似乎是正确的,您不想在设计的上层公开特定于数据库的代码。您应该使用自己的、领域特定的对象或它们的集合。

祝你好运

关于java - 我需要在数据库中搜索 "customer",这里有什么好的设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1453669/

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