Java 在DAO类中放置真正特定的方法是否正确?

Java 在DAO类中放置真正特定的方法是否正确?,java,dao,Java,Dao,我读过的所有关于DAO类的示例都只显示具有非常通用方法的DAO类,例如insertNewCar()、deleteCar()、updateCar()、getCars()、getCarByID()。但是我可以在DAO类中放入更具体的方法吗? 在我的情况下,我需要得到所有今天轮班的医生,要知道,我必须得到所有医生的日程表,日期与今天相等。现在,我通过doctorDAO类中名为GetDoctorWorkingToday(ArrayList scedulesToday)的单个方法获取这些医生。在这个方法中

我读过的所有关于DAO类的示例都只显示具有非常通用方法的DAO类,例如insertNewCar()、deleteCar()、updateCar()、getCars()、getCarByID()。但是我可以在DAO类中放入更具体的方法吗? 在我的情况下,我需要得到所有今天轮班的医生,要知道,我必须得到所有医生的日程表,日期与今天相等。现在,我通过doctorDAO类中名为GetDoctorWorkingToday(ArrayList scedulesToday)的单个方法获取这些医生。在这个方法中,我首先从arraylist获取医生的所有ID,并将它们附加到一个完整的sql查询中。该方法的其余部分与普通的“get”方法类似:我使用查询获取我想要的所有医生,将他们放入arraylist并返回它。
它工作正常,但这种解决方案可以接受吗?或者我必须只在DAO类中使用诸如getAllSchedules()和getAllDoctors()之类的通用方法,而在其他类中执行所有筛选工作吗?

根据我的理解,我通常将所有特定于db的代码(查询)放在DAO中,并将事务处理和业务逻辑放在服务层中。这允许服务方法跨多个dao调用方法,并将所有方法保持在同一事务中。在我看来,这允许更好地跨dao重用代码

就你而言, 在服务层使用“get”方法业务逻辑,在dao中查询相关内容


这取决于您如何实现服务和dao。为了便于理解,我们遵循标准

根据我的理解,我通常将所有特定于数据库的代码(查询)放在DAO中,将事务处理和业务逻辑放在服务层中。这允许服务方法跨多个dao调用方法,并将所有方法保持在同一事务中。在我看来,这允许更好地跨dao重用代码

就你而言, 在服务层使用“get”方法业务逻辑,在dao中查询相关内容


这取决于您如何实现服务和dao。为了便于理解,我们遵循标准

我似乎可以接受,您对done的定义是什么?我在您的方法中看到的唯一不好的事情是,DAO和数据库之间可能有很多不必要的旅行。例如,查找时间表显然发生在一个查询中。然后返回结果并在另一个查询中使用。您可以让一个查询在一次旅行中完成所有工作。所以也许你所说的不够具体。嗨,内森,我在遵循老师幻灯片上的设计模式。在该模式中,每个实体类都有自己的DAO类,因此医生类有一个DoctorDAO类来访问数据库中的医生表。所以我想如果我把医生表和时间表表合并到另一个表中,并从那个表中选择合适的医生,那是错误的,因为我没有从医生表中得到医生。是的,这是一种扭曲的模式。对于课堂项目来说是可以的,但在现实生活中不是很好。我似乎可以接受,你对完成的定义是什么?我在你的方法中看到的唯一不好的事情是,在DAO和数据库之间可能有很多不必要的旅行。例如,查找时间表显然发生在一个查询中。然后返回结果并在另一个查询中使用。您可以让一个查询在一次旅行中完成所有工作。所以也许你所说的不够具体。嗨,内森,我在遵循老师幻灯片上的设计模式。在该模式中,每个实体类都有自己的DAO类,因此医生类有一个DoctorDAO类来访问数据库中的医生表。所以我想如果我把医生表和时间表表合并到另一个表中,并从那个表中选择合适的医生,那是错误的,因为我没有从医生表中得到医生。是的,这是一种扭曲的模式。课程项目可以,但在现实生活中并不好。