Java体系结构 - 自我管理的类与Manager类

时间:2014-12-16 22:36:27

标签: java java-ee architecture structure

我正在使用Spring和Hibernate。

我使用的hibernate模型是'NodeInstanceLog',它是从数据库中检索的对象。

我目前的结构:

current structure

目前,NodeInstanceLogDAO正在处理从数据库中检索数据。

另一种选择是改变我的结构,使NodeInstanceLog可以获取并使其自行管理。即能够从数据库中检索其数据。

每种方法的优点和缺点是什么?

2 个答案:

答案 0 :(得分:4)

这是一个关注点分离的问题。模型代表问题域的一部分,而DAO则涉及将数据输入和输出数据存储。两个完全不同的问题,需要专门的课程。

通常,您分担的职责越多,您的代码库就越模块化,具有许多优势: *我们的大脑往往善于一次只关注一件小事,所以阅读(=维护)你的代码会更容易,因为它更有条理。 *当小班级中的不同职责分开时,测试会更容易:测试可以一次操作一个简单的焦点课程 *重用更有可能:如果你想用与DAO无关的模型实例做其他事情,那里的DAO代码将被拖入你想要做的其他事情

无论如何,可能还有很多话要说。尝试谷歌搜索“分离关注”,“松耦合”,......但是从我这里拿走:分担责任是要走的路:)

答案 1 :(得分:2)

在普通的java中,使用DAO / Repositories通常更好,否则你的对象需要拥有相当多的数据库逻辑。数据库逻辑不是业务逻辑,您的模型应该只代表业务模型。

Play是一个框架,可以将很多持久性逻辑自动编织到您的类中(使用方面),这样您的模型类就有查询数据库的方法,但它没有逻辑。 / p>

如果您正在学习这些内容,我建议您实施这两项内容并体验每个解决方案所带来的痛苦(例如,您如何处理交易?从哪里进行数据库连接?)

我还建议你阅读书籍Patterns of Enterprise Application Architecture,特别是Active Record(将逻辑编入你的班级)和工作单元(Hibernate)