2009-06-05 35 views
33

Cuando anoto una clase con @Entity e intento resolver las dependencias, puedo elegir el paquete entre dos paquetes diferentes, javax.persistence.Entity y org.hibernate.annotations.EntityDiferencia entre la entidad JPA y la entidad Hibernate

El paquete javax es la anotación de entidad de JPA, pero ¿por qué hay una anotación de entidad de hibernación y la diferencia tiene con la anotación de JPA? ¿Es solo una extensión para permitir que se definan más atributos?

Respuesta

34

org.hibernate.annotations.Entity tiene algunos atributos adicionales que javax.persistence.Entity no ha sido estandarizado. Las características adicionales solo funcionarán si se usa el código de Hibernate AnnotationConfiguration directamente o si hibernate es el proveedor de JPA.

de the FAQ: edición: nuevo enlace the specific question: edición: nuevo enlace the answer:

utilizo @ org.hibernate.annotations.Entity y tener una Desconocida excepción entidad

Siempre importa @ javax.persistence.Entity

@ org.hibernate.annotations.Entity completa @ javax.persistence.Entity pero no es un sustituto

Por ejemplo, no es un atributo llamado optimisticLock, que le dice a Hibernate si utilice la columna de la versión estándar o compare todas las columnas al realizar la actualización. Este comportamiento no está en la especificación de JPA, por lo que para configurarlo, debe usar la extensión específica de hibernación que se encuentra en su propia anotación.

De esta manera:

@Entity 
@org.hibernate.annotations.Entity(optimisticLock=OptimisticLockType.ALL) 
public class MyEntity implements Serializable { 
... 
} 
-1

No estoy seguro de las diferencias, pero estoy seguro de que si tiene los frascos de Hibernate en su classpath está utilizando HFP de Jiber. Hibernate proporciona una implementación de JPA. Aunque está utilizando el paquete javax.persistence, está utilizando HFP de Jiber.

La diferencia podría ser solo en la denominación. Pueden proporcionar las mismas clases tanto en el espacio del paquete Hibernate como en el espacio del paquete javax.

1

@ org.hibernate.annotations utilizados en su proyecto, si supongamos que desea utilizar la plantilla de JDBC o ibatis necesitamos cambiar el código. si usamos javax.persistence no hay necesidad de cambiar el código. Esta es la principal diferencia entre org.hibernate.annotations y javax persistence

Cuestiones relacionadas