java – 有没有办法在没有DTO的情况下将Hibernate实体公开为RESTful资源?

前端之家收集整理的这篇文章主要介绍了java – 有没有办法在没有DTO的情况下将Hibernate实体公开为RESTful资源?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个简单的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代理.

希望能帮助你,

猜你在找的Java相关文章