向下传递,以便所有值和列都匹配时
以下是有助于说明我的问题的代码片段:
服务类别:
public class ClientService {
private Client_SQL_DAO_Strategy dao;
public ClientService(Client_SQL_DAO_Strategy dao){
setDaoStrategy(dao);
}
public void sendClientToStorage(Client client) throws SQLException, ClassNotFoundException{
dao.sendClientToDatabase(client);
}
public void updateClient(List values) throws SQLException, ClassNotFoundException {
dao.updateClient(values);
}
}
DAO
public void saveClient(Client client) throws ClassNotFoundException, SQLException {
List columns = new ArrayList<>();
columns.add("Last_Name");
columns.add("First_Name");
columns.add("Business_Name");
columns.add("Phone");
List<Object> values = new ArrayList<>();
values.add(client.getClientLastName());
values.add(client.getClientFirstName());
values.add(client.getClientBusiness());
values.add(client.getClientPhone());
accessor.createRecord(TABLE_NAME, columns, values);
}
public void updateClient(List listOfValues) throws ClassNotFoundException, SQLException{
List<Object> columns = new ArrayList<>();
columns.add("Last_Name");
columns.add("First_Name");
columns.add("Business_Name");
columns.add("Phone");
int primaryKey = Integer.valueOf(listOfValues.get(0).toString());
accessor.updateRecord(TABLE_NAME, columns, listOfValues, PK_COLUMN, primaryKey);
}
public void saveClient(Client-Client)抛出ClassNotFoundException、SQLException{
列表列=新的ArrayList();
列。添加(“姓氏”);
列。添加(“名字”);
列。添加(“业务名称”);
列。添加(“电话”);
列表值=新的ArrayList();
add(client.getClientLastName());
add(client.getClientFirstName());
add(client.getClientBusiness());
add(client.getClientPhone());
createRecord(表名称、列、值);
}
public void updateClient(值列表)抛出ClassNotFoundException、SQLException{
列表列=新的ArrayList();
列。添加(“姓氏”);
列。添加(“名字”);
列。添加(“业务名称”);
列。添加(“电话”);
int primaryKey=Integer.valueOf(listOfValues.get(0.toString());
updateRecord(表名称、列、值列表、主键列、主键);
}
比较DAO中提供的两种方法,哪种方法更有意义?创建客户端以将其拆下,还是将关联的值和列传递给访问器?这个Map似乎非常适合这两种方法
是的,我也知道更新的技术,但在本学期的当前时间,遗产是本周的课程。Spring MVC实现了设计模式
控制器的职责是获取/创建/填充模型,并为视图准备环境
视图负责显示模型数据,在SpringMVC中通常是通过JSP显示的,但是您也可以指定视图类,例如,它可以执行诸如呈现Excel或PDF之类的操作
该模型实现了域逻辑。根据您的实现,这可能是一个只包含前端逻辑的“视图模型”,也可能包含真正的业务规则。这应该是一门真正的课。永远不要使用Map
。这样使用映射会牺牲类型安全性,而不是OOP
服务类类似于外部服务协调的控制器类,如持久性、电子邮件、支付等
DAO类是一个仅用于持久性的服务提供者。它将对象表示转换为数据库操作。该层可以被ORM替换。不要在地图上走动
如果应用程序使用的唯一外部服务是持久性,则可以避免分离服务和DAO类,并推迟分离,直到需要更多服务
有关这类对象建模的更多信息,请查看。请澄清“遗留”是什么意思?你是说“遗产”和“不使用ORM”一样吗?@jrahhali我可能使用了错误的术语,对ORM的理解非常松散。我对对象关系映射的理解是一种OOP技术,用于在两个使用类似但也不同数据类型的系统之间转换数据,例如java存储日期的方式与数据库存储日期的方式。由于这是一种较老的技术,我猜“遗留”在我使用它的意义上,意味着“老式编程技术”。问题不在于此,而是在于比较我提供的DAO中的两种方法。问题是,为什么构建一个对象只是为了在DAO中分解它?简单的回答是,您正在学习如何构造一个具有数百个数据库表和数千个网页的大规模OOP系统。