我正在开发一个用于学术目的的网络应用程序。
我要做的是一个简单的网站,跟踪房地产与他们各自的所有者和标签,他们是必然的。
应用程序从MySQL数据库获取数据,必须包括以下特性:
需要使用JDBC连接到数据库,使用JSP/Servlet创建动态页面,(可选地)使用Java显示属性(使用useBean或JSTL/EL),而不使用框架。所有事情都必须用纯Java来完成。
它不是一个复杂的应用程序,它只是为了学术目的,这也意味着我不需要考虑任何可伸缩性问题。我可以简单地将数据库连接和查询的代码作为脚本放在JSP页面中,并称之为一天。
然而,我真正想做的是遵循MVC模式,并学习如何编写整洁的代码。
Realties
-----------------
(pk) id
surface_area
rooms_number
year
price
(fk) owner
Owners
-----------------
(pk) id
name
surname
Tags
-----------------
(pk) id
title
realties_xref_tags
-----------------
(pk)(fk) realty_id
(pk)(fk) tag_id 房地产和所有者表之间有多对一的关系,房地产和标签表之间有多到多的关系(房地产可以有一个标签列表)。
这些是Beans,除了realties_xref_tags之外,每个表都有一个Beans。(省略了Getters和setter)
public class Realty implements Serializable {
private BigInteger id;
private double surface_area;
private int rooms_number;
private int year;
private BigDecimal price;
private BigInteger owner_id;
}
public class Owner implements Serializable {
private BigInteger id;
private String name;
private String surname;
}
public class Tag implements Serializable {
private BigInteger id;
private String title;
}在这里,我遇到了麻烦,试图找出最好的方式来管理关系。
Realty bean应该使用一个包含外键的字段来跟踪其所有者,还是应该保存对与该外键相对应的实际Owner对象的引用?我知道,对于大量的属性或条目,后一种选择可能不是最优的。Owner实体实例化重复Beans?考虑一个有10个房地产和4个业主的场景。有一些拥有相同所有者的实体,但是应用程序在尝试获取所有条目时仍然会实例化10个Owner bean:我只是有这样的想法:在Service的查找条目的方法中创建一个HashMap<BigInteger, Owner> map可以吗,这样它就调用map.get(ownerId),然后只有当返回null时才执行SELECT查询?List<String>类中的标记创建一个Realties字段吗?我应该采取哪种方法来处理DTO中的关系,以便在(小型)实际项目场景中产生良好的实践?
发布于 2019-05-10 07:52:07
对此的答案必然是固执己见的。在你的例子中,因为正如你说的,你不需要担心缩放,任何事情都有效,真的。
我对它的看法是:宁愿在模型中公开it而不是对象。
推理:
https://softwareengineering.stackexchange.com/questions/391617
复制相似问题