加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 有没有办法在没有DTO的情况下将Hibernate实体公开为REST

发布时间:2020-12-14 05:58:00 所属栏目:Java 来源:网络整理
导读:我正在开发一个简单的webapp,它将域模型公开为RESTful资源. 我打算使用JPA2(Hibernate)和 SpringMVC REST支持. 在将Hibernate实体编组为XML / JSON时,如果实体是分离的,它将为惰性子关联抛出LazyLoadingException.如果实体仍然附加到Hibernate Session,它几
我正在开发一个简单的webapp,它将域模型公开为RESTful资源.
我打算使用JPA2(Hibernate)和 SpringMVC REST支持.

在将Hibernate实体编组为XML / JSON时,如果实体是分离的,它将为惰性子关联抛出LazyLoadingException.如果实体仍然附加到Hibernate Session,它几乎会加载整个数据库.

我已经尝试使用Dozer CustomFieldMapper来确定该属性是否是惰性的Hibernate Collection,它未加载然后返回NULL.

但是如果我们有双向关联,Hibernate会急切地加载多对一方,Dozer会尝试复制属性,这些属性最终会导致无限循环导致StackOverflow错误.

我知道要解决这个问题的唯一工作是使用DTO并将所需的属性仅复制到干净的POJO(DTO)中,然后再编组为XML / JSON.但复杂的域模型手动复制属性是非常痛苦的.

有没有其他干净/更简单的方法(un)编组Hibernate实体?

解决方法

我在GWT应用程序中来回传递Hibernate的VO时遇到了类似的问题,并且在一些项目中使用Dozer效果很好,而在其他项目中使用了 this article中描述的方法,在编组之前基本上是空的hibernate代理.

希望能帮助你,

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读