【发布时间】:2014-11-30 20:26:16
【问题描述】:
我使用 JPA/Hibernate 已经有几年了,它们真的很有用。但我对设计有一些哲学问题。
主要问题是我为什么要公开我的所有类属性(创建公共 setter/getter)只是因为 Hibernate 想要访问它们,即使它可以在没有此权限(通过反射)的情况下访问它们,并且在这个设计中 getter 和 setter应该如此简单以减少开销,然后实际上他们失去了控制对字段的访问的存在哲学。即在这个设计中,getter 和 setter 在需要不同设计标准的数据库访问(JPA)和系统域之间共享。 (当您从数据库加载某个值时,您可能不需要在将其设置为字段之前对其进行检查,因为您之前已经完成了此检查!)
任何机构都可以解释这种设计的任何原因吗?我知道它在某些情况下很有帮助,但在大多数情况下却没有。!
还有一个问题是,当从数据库加载对象时,setter 几乎没用,因为对象已部分加载并且没有顺序(因此它几乎迫使我们实现如此简单的 setter,只是从输入文件)!
【问题讨论】:
-
据我所知,Hibernate 使用的 getter/setters/constructors 只能是私有的!
-
无法读取/写入的数据库列的用途是什么?
-
@JohnAment in Object Oriented Programming 一个对象可以拥有自己的一些内部数据,这些数据应该只由该对象管理,其他人不应该访问这些对象!
-
@geert3 谢谢。但你错了!
-
@hasan 我不这么认为。来自 Hibernate 文档:
Hibernate can access public, private, and protected accessor methods, as well as public, private and protected fields directly. The choice is up to you and you can match it to fit your application design.请参阅 docs.jboss.org/hibernate/orm/3.3/reference/en/html/…
标签: java hibernate jpa design-patterns