非代理Hibernate对象的优雅方式 [英] Elegant way of unproxy Hibernate objects

查看:107
本文介绍了非代理Hibernate对象的优雅方式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在用Jax-RS和GSON创建一个Web服务。现在,GSON无法转换HibernateProxy对象,我有一些问题。我有一个API,以便我可以加载和延迟加载。当我想要重载时,我使用Hibernate.initialize(...)。但是,这似乎并不能保证一个对象是没有问题的?

I am creating a web service with Jax-RS and GSON. Now, GSON can't convert HibernateProxy objects and I have some questions. I am having an API so that I can eager load and lazy load. When I want to eagerload I use Hibernate.initialize(...). However this does not seem to guarantee that a object is unproxied?

那么,何时,何时以及如何取消对某个对象的处理?如何处理这个问题,当对象也可能有其他的对象也需要取消处理?

So where, when and how would you unproxy an object? And how do you deal with this when the object also may have releations to other objects that also need to be unproxied?

推荐答案

是一个示例代码:

Here is a sample code:

public <P> List<P> unproxy(Collection<P> objects) {
    Session session = sessionFactory.getCurrentSession();
    List<P> result = new ArrayList<P>();
    for (P t : objects) {
        Object unproxied = ((SessionImplementor)session).getPersistenceContext().unproxy(t);
        result.add((P) unproxied);
    }
    return result;
}

这篇关于非代理Hibernate对象的优雅方式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆