我正在开发一个简单的Webapp,它将域模型公开为RESTful资源。我打算将JPA2(Hibernate)与SpringMVC REST支持一起使用。
在将Hibernate实体编组为XML / JSON时,如果该实体分离,它将为惰性子项关联抛出LazyLoadingException。如果实体仍然连接到Hibernate Session,它将几乎加载整个数据库。
我尝试使用推土机CustomFieldMapper确定该属性是否为未加载的惰性Hibernate集合,然后返回NULL。
但是,如果我们有双向关联Hibernate的热切加载许多-TO- 一个 侧面和推土机将尝试复制,这将导致在StackOverflow的错误无限循环结束的属性。
我知道解决此问题的唯一解决方法是使用DTO,并将所需的属性仅复制到干净的POJO(DTO)中,然后将其编组到XML / JSON中。但是,复杂的域模型手动复制属性非常痛苦。
是否有其他干净/简单的方法来(不)编组Hibernate实体?
在GWT应用程序中来回传递Hibernate’s VO时,我遇到了类似的问题,在某些项目中使用Dozer取得了很好的效果,而在其他项目中,使用了本文中介绍的方法,在编组之前,基本上没有Hibernate代理。
希望对您有帮助,