一尘不染

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

hibernate

我正在开发一个简单的Webapp,它将域模型公开为RESTful资源。我打算将JPA2(Hibernate)与SpringMVC REST支持一起使用。

在将Hibernate实体编组为XML /
JSON时,如果该实体分离,它将为惰性子项关联抛出LazyLoadingException。如果实体仍然连接到Hibernate
Session,它将几乎加载整个数据库。

我尝试使用推土机CustomFieldMapper确定该属性是否为未加载的惰性Hibernate集合,然后返回NULL。

但是,如果我们有双向关联Hibernate的热切加载许多-TO- 一个
侧面和推土机将尝试复制,这将导致在StackOverflow的错误无限循环结束的属性。

我知道解决此问题的唯一解决方法是使用DTO,并将所需的属性仅复制到干净的POJO(DTO)中,然后将其编组到XML /
JSON中。但是,复杂的域模型手动复制属性非常痛苦。

是否有其他干净/简单的方法来(不)编组Hibernate实体?


阅读 215

收藏
2020-06-20

共1个答案

一尘不染

在GWT应用程序中来回传递Hibernate’s
VO时,我遇到了类似的问题,在某些项目中使用Dozer取得了很好的效果,而在其他项目中,使用了本文中介绍的方法,在编组之前,基本上没有Hibernate代理。

希望对您有帮助,

2020-06-20