首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java DAOs,实体,工厂,哪里去了?

Java DAOs,实体,工厂,哪里去了?
EN

Stack Overflow用户
提问于 2014-09-11 02:12:22
回答 1查看 101关注 0票数 0

我有一个Tomcat应用程序,它使用从Eclipse/JPA自动生成的实体。然后,我手动编写了DAO,这些DAO与数据库接口。

我认为保持实体简单有很大的好处。例如,规范说它必须有一个空的构造函数。不使用它们意味着如果数据库模式发生变化,我可以重新生成它们。但我很想扩展它们。

有几个问题。

如果我创建一个新实体,我希望某些字段具有非空值。如果我有一个空的构造函数,我不能在那里做。例如status=' new ',Date created =new Date()等。

我意识到我需要一个工厂。但是,这是否应该说生活在DAO中呢?例如DAO.getNewObject()?

类似地,如果我想使用测试或验证逻辑,它会去哪里?例如,完整性分数=是否填写了姓名、地址、电话等?这样的东西应该存在于道中吗?还是实体?还是别的什么?

我是否应该有一个新的类来扩展实体并将逻辑放在其中?

think是不是涵盖了一些建筑方面的东西?

EN

回答 1

Stack Overflow用户

发布于 2014-09-20 00:00:50

对于像NotNull、MinLength之类的验证,

  1. 可以考虑使用a suitable JSR303 compatible validator
  2. For一些业务验证有两种方法:使用单独的验证器类或在对象本身中进行验证。我有时会在对象本身中进行独立的验证。但是如果代码变得更大,那么最好将验证分离/解耦到验证器中。(Spring可以帮助您将独立的验证器与服务绑定。)但是,我不建议在DAO中使用验证逻辑。应该使用数据访问对象来访问数据。假设您的数据库包含经过验证的数据,则可以在更高的级别执行验证。您可以将对象传递给验证器方法,而不是扩展anything.
  3. Validator类。扩展实体类不是一个好主意。
  4. 您应该在哪里验证对象?您可以在对象或数据跨边界传递时进行验证。尤其是当从请求数据(控制层)创建对象时。此外,当对象是可变的时,验证或创建防御性副本。正如Nathan提到的
  5. 提到的时区(以及货币、字符编码等)问题可能会很棘手。因此,要达到一个标准。这将有助于最小化验证和conversions.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25772275

复制
相关文章

相似问题

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