当前位置: 首页 > 面试题库 >

是否应从数据访问层(或接口)返回原始的Hibernate注释POJO?

史英飙
2023-03-14
问题内容

我了解将数据层对象(DAO)分离到其自己的层中,从而从[DAO和Service层(JPA / Hibernate +Spring)中概述的服务和业务层中抽象出数据访问逻辑和数据源细节以及其他问题。我具有创建这些层的经验,但是我一直使用原始JDBC或类似的与数据库的较低层接口(例如Spring的SimpleJDBC),并且是Hibernate的新手。

我的问题是,以原始JDBC或其他方式实际上在数据访问层处理结果集(或围绕它的薄包装)时,将数据粘贴到其中的结果POJO非常干净,不知道在哪里数据来自哪里,我从不担心将这些数据返回到服务层以及其他地方。但是似乎在Hibernate中,您可以在POJO批注中拥有很多特定于Hibernate
/数据结构的逻辑(诸如1到许多映射,延迟加载首选项等)。我感到不舒服,它们从我的DAO一直返回到我的服务层(或它们的集合),并试图让所有POJO实现我传递回来的接口。这是好的做法,还是过于复杂?


问题答案:

注释具有将某些框架知识与Java对象耦合的一个缺点。这就是您没有单独的元数据定义所要付出的代价。但是,POJO仍然是POJO,从实际的角度来看,我没有充分的理由仅仅因为注释而使设计复杂化。

让我们考虑一下,如果您将使用XML映射,您是否还会担心?最有可能-不会。因此,支付罚款并继续前进;并且在不太可能的情况下,如果您要更改持久性框架-
您将继续删除这些注释。在所有情况下,它们都不应对DAO层之外的代码产生任何副作用。

只是我的2美分…



 类似资料:
  • 问题内容: 我了解将数据层对象(DAO)分离到它们自己的层中,从而从DAO和Service层(JPA / Hibernate +Spring)中概述的服务和业务层中抽象出数据访问逻辑和数据源细节以及其他问题。我具有创建这些层的经验,但是我一直使用原始JDBC或类似的与数据库进行交互的较低级别的方法(例如Spring的SimpleJDBC),并且是Hibernate的新手。 我的问题是,以原始JDB

  • 我在Hibernate(4.3.0)中遇到了一个问题,其中as单向@OneToMany返回重复项。 我的数据库结构(MySQL与InnoDB),其中作为“条目”表与“entry_address”表有1: N关系。“条目”表是主表,“entry_address”是“条目”表的子表。 下面是“entry”实体的最小代码。 以下是“entry_address”实体的最小代码: 这是Hibernate完成

  • 问题内容: 但是我想知道哪个更好?通过属性访问还是通过字段访问?每种都有哪些优点和缺点? 问题答案: 我更喜欢访问器,因为我可以在需要时向访问器添加一些业务逻辑。这是一个例子: 此外,如果您将其他库(例如一些基于JSON转换的库,BeanMapper或Dozer或其他基于getter / setter属性的Bean映射/克隆库)添加到混合库中,则可以确保该库与持久性同步经理(都使用getter /

  • 我在这里遵循Spring启动教程: 使用rest服务的Spring boot教程 本教程工作正常,但是否有一种方法可以在原始JSON被解组(通过jackson JSON处理库)之前打印它以用于日志记录?

  • 问题内容: 有没有一种方法可以完全使用客户端Javascript访问MySql数据库,或者是否需要使用PHP或C#这样的服务器端语言? 谢谢 问题答案: 如果Javascript在浏览器中运行,则无法访问MySQL数据库。首先,这是一个技术限制,因为Javascript无法通信任意协议(不,WebSockets不是解决方案)。请注意,作为服务器端和所有端的Node.js是一种“不同类型的javas

  • 我有个愚蠢的问题。我不明白为什么使用Projections的Spring数据存储库方法会产生这个编译错误。 我有一个存储库类 和投影(我有一个大的hibernate连接对象,我只想从中得到几个字段) 当我试图从一个服务调用方法时 我这样调用服务,编译错误就在这里。 我很确定,我这里有一个非常简单的错误...