2008-12-24 7 views
12

Por lo que yo sé, la creación de un proxy Java dinámico requiere que uno tenga una interfaz para trabajar en contra del proxy. Sin embargo, Hibernate parece administrar su generación de proxy dinámico sin requerir que uno escriba interfaces para clases de entidad. ¿Como hace esto? La única pista de la documentación de Hibernate se refiere al hecho de que las clases deben tener como mínimo un constructor visible para el paquete para la generación de proxy.¿Cómo crea Hibernate proxies de clases concretas?

¿Hibernate está ejecutando ingeniería bytecode en tiempo de ejecución con un cargador de clases personalizado? La documentación sugiere que este no es el caso. Entonces, ¿cómo crean sus envolturas de proxy alrededor de los objetos de la entidad concreta? ¿Acaban de crear un proxy de alguna interfaz trivial sin preocuparse por la seguridad del tipo y luego lanzarlo como se desee?

Respuesta

3

Para utilizar el creador de proxy que está en Java, sí, está en lo cierto, pero creo que hibernate usa CGLib para generar sus proxies.

http://cglib.sourceforge.net/

Es un programa fresco, y no requiere de interfaces para generar un proxy.

(y tal vez algún día hibernate pasará a usar AOP y el mundo será un lugar mejor).

+0

sí, se hace uso de cglib –

4

Hibernate utiliza el proveedor de código de bytes configurado en hibernate.properties, por ejemplo:

hibernate.bytecode.provider=javassist 
Cuestiones relacionadas