我正在使用Spring和Hibernate。
我使用的hibernate模型是'NodeInstanceLog‘,它是从数据库中检索的对象。
我当前的结构:

目前,NodeInstanceLogDAO正在处理从数据库中检索数据。
另一种选择是更改我的结构,使其可获取NodeInstanceLog,并使其自我管理。即能够从数据库中检索其数据。
每种方法的优缺点是什么?
发布于 2014-12-17 06:56:00
这是关注点分离的问题。模型代表问题域的一部分,而DAO关注的是将数据传入和传出数据存储。两个完全不同的问题,需要专门的类。
一般来说,你划分的职责越多,你的代码库就越模块化,有很多优点:*我们的大脑倾向于一次专注于一件小事情,所以阅读(=维护)你的代码会更容易,因为它更有结构。*当不同的职责在小类中分离时,测试会更容易:一个测试一次可以操作一个简单的焦点类*重用更有可能:如果你想对一个与DAO无关的模型实例做一些其他的事情,那么里面的DAO代码就会被拖到你想做的另一个事情中,而不需要做任何事情
无论如何,可能还有更多的东西要说。试着用谷歌搜索“关注点分离”,“松散耦合”,...但请相信我:拆分责任是一种方式:)
发布于 2014-12-17 06:55:41
在普通的java中,使用DAOs / Repositories通常更好,否则你的对象将需要相当多的数据库逻辑。数据库逻辑不是业务逻辑,您的模型应该只表示业务模型。
Play是一个框架,它可以自动地将许多持久性逻辑编织到您的类中(使用方面),这样,您的模型类就有了查询DB的方法,但是它没有这种逻辑。
如果你正在学习这些东西,我建议你同时实现这两种解决方案,并体验每种解决方案带来的痛苦(例如,你如何处理事务?从何处建立数据库连接?)
我还建议你阅读Patterns of Enterprise Application Architecture这本书,特别是活动记录(将逻辑编织到你的类中)和工作单元(Hibernate)
https://stackoverflow.com/questions/27515262
复制相似问题