Red de conocimiento informático - Conocimiento del nombre de dominio - Tecnología de código abierto: introducción a las anotaciones de Hibernate 3

Tecnología de código abierto: introducción a las anotaciones de Hibernate 3

En los últimos años, Hibernate ha crecido hasta convertirse en el estándar de facto para la persistencia de bases de datos en Java. Es potente, flexible y funciona bien. En este artículo, exploraremos cómo utilizar las anotaciones de Java para simplificar el código de Hibernate y facilitar la codificación de la capa de persistencia.

Tradicionalmente, la configuración de Hibernate se ha basado en archivos XML externos. Tradicionalmente, la configuración de Hibernate se basaba en archivos XML externos. Las asignaciones de bases de datos se definían como un conjunto de archivos de asignación XML y se cargaban al inicio. Hay muchas formas de crear estas asignaciones, automáticamente a partir de un esquema de base de datos existente o un modelo de clase Java, o manualmente.

En las últimas versiones de Hibernate, ha habido un nuevo enfoque inteligente basado en anotaciones de Java, que hace posible publicar todas las asignaciones antiguas a la vez con la ayuda de la nueva biblioteca de anotaciones de Hibernate. Todo se define de la manera que usted desea: las anotaciones se integran directamente en sus clases de Java, lo que proporciona una forma potente y flexible de declarar asignaciones persistentes, con autocompletado automático de código y resaltado de sintaxis, lanzado recientemente. El IDE de Java también admite estas funciones

Hibernate adopta un nuevo enfoque basado en anotaciones de Java. p>

Las anotaciones de Hibernate también admiten la nueva especificación de persistencia EJB, cuyo objetivo es proporcionar un mecanismo de persistencia Java estandarizado. Dado que Hibernate también proporciona extensiones, siga estos estándares y utilice el modelo de programación EJB para la persistencia de Hibernate. codificar en capas

Las anotaciones de Hibernate también admiten la nueva especificación de persistencia EJB, cuyo objetivo es proporcionar un mecanismo de persistencia Java estandarizado. Ahora, comencemos a usar las anotaciones de Hibernate

Instalar las anotaciones de Hibernate

Para usar las anotaciones de Hibernate, necesita al menos Hibernate y Java, que se pueden descargar desde el sitio web de Hibernate. Hibernate y Biblioteca de anotaciones de Hibernate Además del JAR estándar de Hibernate y sus dependencias, también necesita el jar de anotaciones de Hibernate (jar de anotaciones de hibernación) API de persistencia de Java (jar de persistencia lib/ejb). gt;hibernate ga hibernate</groupId> anotación de hibernación ga <.dependency> persistencia de javax api de persistencia < /version>

El siguiente paso es obtener la sesión de Hibernate factory, aunque esto no requiere mucho trabajo, pero no es lo mismo que usar anotaciones de Hibernate.

Necesitas usar la clase AnnotationConfiguration para construir la fábrica de sesiones

sessionFactory = newAnnotationConfiguration() buildSessionFactory()

Aunque es común usar el elemento para declarar una persistencia. clase, debe declararlos en el archivo de configuración de Hibernate (generalmente hibernate cfg xml)

Muchos proyectos Java recientes utilizan marcos de aplicaciones livianos (como Spring).

Si está utilizando el marco Spring, puede crear fácilmente una fábrica de sesiones de Hibernate basada en anotaciones utilizando la clase AnnotationSessionFactoryBean, como se muestra a continuación

< ;nombre de propiedad= dataSource > <.prop key= hibernate dialecto > hibernar dialecto DerbyDialect crear <nombre de propiedad= annotatedClasses > dominio de planos de modelo en Java Tipo de plano dominio de modelplanes en Java ModelPlane

Como cualquier otra aplicación de Hibernate, las clases de persistencia anotadas también son POJO simples, casi como si necesitaras agregar una dependencia a la API de persistencia de Java (persistencia javax *) Lo mismo. Si está utilizando alguna extensión específica de Hibernate, puede ser el paquete de anotaciones de Hibernate (anotaciones de hibernación *), pero aparte de eso, son simplemente POJO con anotaciones de persistencia. El siguiente es un ejemplo simple

@Entity public class ModelPlane { private Long id; private String name; @Id public Long getId() { return id } public void setId(Long id) { this id = id; } public String getName() { return nombre; } public void setName(String nombre) { this name = name }}

Como mencionamos, esto es muy simple: declaración de anotación @Entity La clase; es persistente y la anotación @Id indica qué propiedad de la clase es el identificador único. De hecho, puede mantener la persistencia tanto para los campos (variables miembro anotadas) como para las propiedades (captadores anotados). Una de las ventajas de la persistencia basada en anotaciones es el uso extensivo de valores predeterminados (la mayor ventaja es la convención sobre la configuración), que se utilizará más adelante. Esto no sólo simplifica el código sino que también reduce significativamente la escritura en comparación con el uso de los antiguos archivos de mapeo XML.

Generación de claves primarias

Hibernate hace un excelente trabajo generando claves primarias automáticamente. Las anotaciones de Hibernate también brindan un amplio soporte para la generación automática de claves primarias, lo que permite implementar una variedad de estrategias. El siguiente ejemplo ilustra un enfoque común mediante el cual Hibernate determinará la estrategia de generación de claves adecuada en función de la base de datos subyacente

@Id @GeneratedValue(strategy= GenerationType AUTO) public Long getId() { return id } Custom table; y mapeo de campos

De forma predeterminada, Hibernate asigna clases de persistencia a tablas y campos con nombres coincidentes. Por ejemplo, la clase anterior se puede asignar a una tabla creada con el siguiente código

CREATE TABLE MODELPLANE ( ID long NAME varchar )

Si está generando y manteniendo su propia base de datos, Entonces este enfoque es muy eficiente y simplifica enormemente el mantenimiento del código debido al código omitido. Sin embargo, este enfoque no funciona para todos. Algunas aplicaciones necesitan acceder a bases de datos externas, mientras que otras pueden necesitar seguir la convención de nomenclatura de bases de datos de una empresa. Si es necesario, puede personalizar su propio mapeo de persistencia usando las anotaciones @Table y @Column como se muestra a continuación

@Entity @Table(name= T_MODEL_PLANE) public class ModelPlane { private Long id; @Column(nombre= PLANE_ID ) public Long getId() { devolver id; } public void setId(Long id) { este id = id }@Column(nombre= PLANE_NAME ) public String getName() { devolver nombre } public void; setName(String name) { this name = name } @Id}}

Este contenido se asignará a la siguiente tabla

CREATE TABLE T_MODEL_PLANE ( PLANE_ ID long PLANE_NAME varchar )

También puede personalizar el mapeo usando otras propiedades de gráficos y columnas. El siguiente ejemplo contiene varias propiedades

@Column(name= PLANE_ ID length= nullable=true) public String getName() { return name;} Relación de mapeo

Mapeo de persistencia de Java Uno de El aspecto más importante y complejo del proceso es determinar cómo mapear las relaciones entre tablas. Al igual que otros productos, Hibernate ofrece un alto grado de flexibilidad en este sentido, pero a costa de una mayor complejidad.

Una de las relaciones más utilizadas es la relación de muchos a uno. Suponiendo en el ejemplo anterior que cada ModelPlane está vinculado a través de una relación de muchos a uno (es decir, cada modelo de avión está vinculado a un solo tipo de avión), aunque un tipo de avión específico se puede vincular a siete modelos de avión, cada modelo solo puede ser vinculado a un tipo de aeronave.

(

@ManyToOne( cascade = {CascadeType PERSIST CascadeType MERGE} ) public PlaneType getPlaneType() { return planeType; }

La relación entre CascadeType y PlaneType se puede asignar de la siguiente manera}

El valor CascadeType indica cómo Hibernate debe manejar las operaciones en cascada

Otra relación común es lo opuesto a la relación anterior: una relación de uno a muchos, también conocida como colección. En las versiones de Hibernate, las colecciones eran. Esto puede ser un gran dolor de cabeza al mapear o anotar. Por ejemplo, en el ejemplo anterior, cada objeto PlaneType puede contener una colección ModelPlanes, que se puede mapear de la siguiente manera

@OneToMany. (mappedBy= planeType cascade=CascadeType ALL fetch = FetchType EAGER).FetchType EAGER)@OrderBy( nombre ) public List getModelPlanes() { return modelPlanes } Consultas con nombre

Una de las mejores características de Hibernar consiste en declarar consultas con nombre en el archivo de mapeo y luego llamarlas por su nombre en su código. De esta manera, puede centrarse en la consulta y evitar distribuir código SQL o HQL por toda la aplicación

También puede utilizar anotaciones para implementar consultas con nombre utilizando las anotaciones @NamedQueries y @NamedQuery, como se muestra

p>

@NamedQueries( { @NamedQueries() { @NamedQuery()) NamedQuery( { @NamedQuery( nombre= tipoplano findById consulta= seleccionar p de TipoPlano p unión izquierda buscar p modeloPlanos donde id=:id )@NamedQuery( nombre = tipo de plano buscar todo consulta = seleccionar p de tipo de plano p) @NamedQuery (nombre = tipo de plano eliminar consulta = eliminar de tipo de plano donde id =: id) }))

Después de completar la definición, puede llamar a otras consultas como Llame a otras consultas de la misma manera. Conclusión

Las anotaciones de Hibernate proporcionan una API potente y sofisticada que simplifica el código de persistencia en bases de datos Java y solo se analizan brevemente en este artículo. Puede optar por seguir los estándares y utilizar la API de persistencia de Java, o puede aprovechar las extensiones específicas de Hibernate que se obtienen a expensas de la portabilidad. Estas características proporcionan más funcionalidad y flexibilidad a expensas de la portabilidad. De todos modos, al eliminar la necesidad de archivos de mapeo XML, las anotaciones de Hibernate simplificarán el mantenimiento de la aplicación y le brindarán el poder de EJB. Recursos Sitio de Hibernate Sitio de Spring Acerca del autor John Ferguson Smart ha estado trabajando en la industria de TI desde 2007 y en el desarrollo de JEE desde 2007. lishixinzhi/Article/program/Java/ky/201311/28299