从关系数据库填充Java对象模型
我需要乔什·朗的《春天食谱》一书中的例子的帮助。试图用持久层扩展Spring@MVC一章中的代码示例。作者硬编码了所有数据。我正在为这样的模型、数据库模式设计和基于DAO的POJO数据填充寻找最佳实践解决方案。我不想使用Hibernate或JPA,只想使用Spring 下面是我正在练习的模型(省略getter和setter以减少空间): 我制作了3张DB表格:预订、球员、运动型。对于每个表,我都有DAO类:ReservationDao、PlayerDao、SportTypeDao。这样对吗 这种对象设计需要数据库中的什么关系从关系数据库填充Java对象模型,java,database,spring,database-design,Java,Database,Spring,Database Design,我需要乔什·朗的《春天食谱》一书中的例子的帮助。试图用持久层扩展Spring@MVC一章中的代码示例。作者硬编码了所有数据。我正在为这样的模型、数据库模式设计和基于DAO的POJO数据填充寻找最佳实践解决方案。我不想使用Hibernate或JPA,只想使用Spring 下面是我正在练习的模型(省略getter和setter以减少空间): 我制作了3张DB表格:预订、球员、运动型。对于每个表,我都有DAO类:ReservationDao、PlayerDao、SportTypeDao。这样对吗 这种
如何在服务层中填充预订对象?我是否必须使用一个查询和一些连接,或者逐个调用ReservationDao、PlayerDao和SportTypeDao方法,以从数据库中获取单个预订行?我将给出一些可能有争议的想法,但这是一个设计问题,因此它将是自以为是的 如果可能的话,我不会创建DAO,只创建一个服务层并使用多个内部联接查询所有三个表(即联接
Player
和SportType
)。原因是,如果您打算使用直接SQL,您还可以利用数据库(除此之外,大多数ORM也很可能热切地加载)
因为在手动SQLWebApps中,您需要基于不同的查询和视图创建许多类似复合的对象,我发现DAO间接寻址完全是浪费时间。如果你真的想要DAOOP,你应该使用ORM。否则,请将手动SQL更多地看作是函数式/过程式编程风格,您总是在转换数据(DTO)。因此,您最好喜欢将域对象推得到处都是的干净但乏味(且不那么枯燥)的转换
你还应该知道Spring有简单的方法来实现它。如果你不打算使用ORM框架,你必须自己动手。Sotirios是正确的,如果你不想使用ORM,你必须自己编写所有东西。Craig Larman给出了一个应用UML和模式编写ORM的示例。但是,只有在这本书的旧版本中,在这本书的新版本中,他用一句话将这一章删去,大意是“不要自己写这个,使用像hibernate或类似的ORM库。”
public class Reservation {
private String courtName;
private Date date;
private int hour;
private Player player;
private SportType sportType;
}
public class Player {
private String name;
private String phone;
}
public class SportType {
private int id;
private String name;
}