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

时间:2013-09-28 16:24:58

标签: java database spring database-design

我需要帮助Josh Long的书“Spring Recipes”中的例子。尝试使用持久层从Spring @MVC章节扩展代码示例。作者硬编码了所有数据。我正在为这样的模型,数据库模式设计和基于DAO的POJO数据填充搜索最佳实践解决方案。我不想使用Hibernate或JPA,只需使用Spring。

这是我正在练习的模型(省略了getter和setter以减少空间):

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;

}

我制作了3个DB表:预订,播放器,sport_type。对于每一张桌子,我都有DAO课程:ReservationDao,PlayerDao,SportTypeDao。这是正确的方法吗?

这些对象设计需要在数据库中建立什么样的关系?

如何在服务层中填充Reservation对象?我是否必须使用一个带有某些连接的查询,或者逐个调用ReservationDao,PlayerDao和SportTypeDao方法从数据库中获取单个预留行?

1 个答案:

答案 0 :(得分:1)

我会给你一些可能引起争议的想法,但这是一个设计问题,所以它会被置之不理。

我不会制作DAO,只创建一个服务层,并在可能的情况下使用多个内连接查询所有三个表(即连接PlayerSportType)。原因是如果您打算使用直接SQL,您也可以利用数据库(除了大多数ORM之外,最有可能也会急切加载)。

因为在手动SQL Web应用程序中,您需要根据不同的查询和视图创建许多复合类对象,我发现DAO间接完全浪费时间。如果你真的想要DAO OOP,你应该使用ORM代替。否则,请考虑手动SQL更多功能/过程编程风格,而您始终在转换数据(DTO)。因此,你最好在整个地方推动域对象的干净但繁琐(而不是那么干)的转换。

你也应该知道Spring有简单的map JDBC ResultSet to Java Bean方法。