首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java架构-自管理类与管理器类

Java架构-自管理类与管理器类
EN

Stack Overflow用户
提问于 2014-12-17 06:36:27
回答 2查看 112关注 0票数 0

我正在使用Spring和Hibernate。

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

我当前的结构:

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

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

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

EN

回答 2

Stack Overflow用户

发布于 2014-12-17 06:56:00

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

一般来说,你划分的职责越多,你的代码库就越模块化,有很多优点:*我们的大脑倾向于一次专注于一件小事情,所以阅读(=维护)你的代码会更容易,因为它更有结构。*当不同的职责在小类中分离时,测试会更容易:一个测试一次可以操作一个简单的焦点类*重用更有可能:如果你想对一个与DAO无关的模型实例做一些其他的事情,那么里面的DAO代码就会被拖到你想做的另一个事情中,而不需要做任何事情

无论如何,可能还有更多的东西要说。试着用谷歌搜索“关注点分离”,“松散耦合”,...但请相信我:拆分责任是一种方式:)

票数 4
EN

Stack Overflow用户

发布于 2014-12-17 06:55:41

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

Play是一个框架,它可以自动地将许多持久性逻辑编织到您的类中(使用方面),这样,您的模型类就有了查询DB的方法,但是它没有这种逻辑。

如果你正在学习这些东西,我建议你同时实现这两种解决方案,并体验每种解决方案带来的痛苦(例如,你如何处理事务?从何处建立数据库连接?)

我还建议你阅读Patterns of Enterprise Application Architecture这本书,特别是活动记录(将逻辑编织到你的类中)和工作单元(Hibernate)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27515262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档