Dali JPA Tools: O/R mappings para EJB 3.0

0
17613

Dali: JPA tools.

0. Índice de contenidos.

1. Introducción

Dali JPA tools es un subproyecto de Eclipse Web Tools Platform 2.0.

Ya hemos visto en adictos Eclipse Web Tools Platform 2.0 de la mano de Alejandro Perez
y éste tutorial se basa en el mismo.

El objetivo del proyecto Dali JPA tools es facilitar el mapeo de objetos con la fuente de datos (O/R mappings) para EJB 3.0.
Para ello, nos proporciona dos utilidades:

  • la creación de las clases (los fuentes), que contienen las entidades de ejb3, en función de las tablas en base de datos,
  • el acceso a la definición de las propiedades de mapeo desde una ventana de detalle que nos ayuda bastante en la definición.

Quizás lo más curioso del proyecto sea su nombre Why Dali?.

2. Entorno.

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Sobremesa Dell Dimension 6400, 2.13 Ghz, 2 Gb RAM
  • Sistema operativo: Windows XP Media center Edition
  • JDK 1.6.0_2
  • Eclipse 3.3.
  • MySQL 5.0

3. Creación de un proyecto con soporte para JPA.

Lo primero que haremos será crear un proyecto de tipo ejb, seleccionar el tipo y Next >

Asignamos un nombre para el proyecto (en nuestro caso Simple) y un «target runtime», un servidor de aplicaciones, en el que correr el proyecto (en nuestro caso Jboss v 4.2), Next >

Seleccionamos la versión de Java (6.0), de EJB (3.0) y la de JPA persistence (1.0), Next >

Pasamos por una ventana intermedia en la que nos pide información sobre el directorio en el que se alojarán los fuentes del proyecto, y llegamos a la siguiente, en la que nos pide
información sobre la fuente de datos y la implementación de JPA:

Necesitamos una conexión con base de datos configurada, como se explica en el tutorial Eclipse Web Tools Platform 2.0,
sino la tenemos podemos crearla pulsando sobre «Add connection».

La implementación de JPA será la que proporcione el servidor de aplicaciones «server runtime».

Pulsamos sobre Finish > y se creará la estructura del proyecto.

4. Generación de entidades en función del modelo de datos.

Sobre el proyecto, botón derecho > JPA Tools > Generate Entities…

Seleccionamos la conexión, definida cuando creamos el proyecto, y el esquema sobre el que vamos a generar las entidades, Next >

Asignamos un paquete para las clases que contendrán las entiades y seleccionamos qué tablas queremos importar, Finish >

En este punto del turorial, nuestro proyecto debería tener un aspecto como el que sigue:

Bajo el paquete seleccionado se han creado tantas clases cono tablas hemos seleccionado, con todo lo necesario para utilizarse como ejb3 the entidad: sus anotaciones correspondientes, la definición de atributos y sus setters y sus getters.

package com.autentia.ejb.dali;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name="User", schema="test") // no es necesario si está bien definida la conexión
public class User implements Serializable 
{
	
	@Id
	private Object id;

	private String login;

	private String password;

	@ManyToOne
	@JoinColumn(name="roleId")
	private Role roleid;

	private static final long serialVersionUID = 1L;

	public User() {
		super();
	}

	public Object getId() {
		return this.id;
	}

	public void setId(Object id) {
		this.id = id;
	}

	public String getLogin() {
		return this.login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getPassword() {
		return this.password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public Role getRoleid() {
		return this.roleid;
	}

	public void setRoleid(Role roleid) {
		this.roleid = roleid;
	}

}

Pueden aparecer warnings o errores porque los nombres de las tablas en base de datos no sean nombres válidos para un atributo de una clase java, lo solucionamos a namo, o ayuándonos como se muestra en el siguiente punto.

Si la base de datos no está bien mapeada puede que aparezca el siguiente error: Schema «root» cannot be resolved for table…
En tal caso, o mapeamos bien contra la base de datos o añadimos la siguiente anotación a nuestra Entity: @Table(name=»NOMBRE_DE_LA_TABLA», schema=»NOMBRE_DEL_ESQUEMA»).

5. Perspectiva JPA y ventanas de propiedades.

Si seleccionamos la perspectiva JPA Development, veremos que al acceder a una clase marcada como @Entity se muestra una ventana como la que sique, en la que se muestran los atributos de la clase marcados con un icono en función del tipo

Si pulsamos sobre ellos, aparece una ventana de propiedades como la que sigue, en la que podremos modificar todo lo referente a sus anotaciones:

Todas las anotaciones que se refieren al mapeo de objetos y sus relaciones, que ya veíamos en el tutorial Anotaciones en EJB 3.0 podemos modificarlas a través de ésta ventana de propiedades sin necesidad de realizarlo a mano.

6. Conclusiones.

La generación de las clases a partir del modelo de datos es un ahorro importante de carga de trabajo y la ventana asistida en la que modificar las propiedades de los campos ayudará a no cometer errores.

Aunque como con todo, siempre habrá quién prefiera hacerlo «a mano».

Un saludo.

Jose Manuel.

Autentia.

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad