从关系数据库填充Java对象模型

从关系数据库填充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。这样对吗 这种

我需要乔什·朗的《春天食谱》一书中的例子的帮助。试图用持久层扩展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;

}