JavaDabbaDoo.org -Tu comunidad Java parlante JPA - Visual Web JSF
Inicio | Cursos infosintesis.net liberados | Java EE | Consultar la tabla de los usuarios reg. con JPA y VW JSF
Consultar la tabla de los usuarios registrados con JPA y VW JSF
Paso 2: Operativa

Crear una Java Persistence Entity Class y una Persistence Unit

Una Java Persistence Entity Class es un POJO (Plain Old Java Object) con anotaciones que representa a una Tabla de una Base de Datos. En nuestro ejemplo el asistente de NetBeans nos va a crear la Clase Usuario que representa a la Tabla usuario de la Base de Datos condor.

Este es el código de la entidad Usuario

package com.empresa.pojos.jpa;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

@Entity
@Table(name
= "usuario")
@NamedQueries({@NamedQuery(name = "Usuario.findAll", query = "SELECT u FROM Usuario u"),
               @NamedQuery(name = "Usuario.findByIdUsuario", query = "SELECT u FROM                                   Usuario u WHERE u.idUsuario = :idUsuario"),
               @NamedQuery(name = "Usuario.findByNombre",
                  query = "SELECT u FROM Usuario u WHERE u.nombre = :nombre"),
               @NamedQuery(name = "Usuario.findByApellido",
                  query = "SELECT u FROM Usuario u WHERE u.apellido = :apellido"),
               @NamedQuery(name = "Usuario.findByEmail",
                  query = "SELECT u FROM Usuario u WHERE u.email = :email"),
               @NamedQuery(name = "Usuario.findByCodigoPostal",
                  query = "SELECT u FROM Usuario u WHERE u.codigoPostal = :codigoPostal"),
               @NamedQuery(name = "Usuario.findByLogin",
                  query = "SELECT u FROM Usuario u WHERE u.login = :login"),
               @NamedQuery(name = "Usuario.findByPassword",
                  query = "SELECT u FROM Usuario u WHERE u.password = :password"),
               @NamedQuery(name = "Usuario.findByNotificaciones",
             query = "SELECT u FROM Usuario u WHERE u.notificaciones = :notificaciones")})

public class Usuario implements Serializable {
 private static final long serialVersionUID = 1L;
 @Id
 @GeneratedValue(
strategy = GenerationType.IDENTITY)
 @Basic(optional
= false)
 @Column(name
= "id_usuario")
 private Integer idUsuario;
 @Basic(optional = false)
 @Column(name = "nombre")
 private String nombre;
 @Basic(optional = false)
 @Column(name = "apellido")
 private String apellido;
 @Basic(optional = false)
 @Column(name = "email")
 private String email;
 @Basic(optional = false)
 @Column(name = "codigo_postal")
 private String codigoPostal;
 @Basic(optional = false)
 @Column(name = "login")
 private String login;
 @Basic(optional = false)
 @Column(name = "password")
 private String password;
 @Basic(optional = false)
 @Column(name = "notificaciones")
 private boolean notificaciones;

 public Usuario() {
 }

 public Usuario(Integer idUsuario) {
  this.idUsuario = idUsuario;
 }

 public Usuario(Integer idUsuario, String nombre, String apellido,
                String email, String codigoPostal, String login,
                String password, boolean notificaciones) {

  this.idUsuario = idUsuario;
  this.nombre = nombre;
  this.apellido = apellido;
  this.email = email;
  this.codigoPostal = codigoPostal;
  this.login = login;
  this.password = password;
  this.notificaciones = notificaciones;
 }

 public Integer getIdUsuario() {
  return idUsuario;
 }

 public void setIdUsuario(Integer idUsuario) {
  this.idUsuario = idUsuario;
 }

 public String getNombre() {
  return nombre;
 }

 public void setNombre(String nombre) {
  this.nombre = nombre;
 }

 public String getApellido() {
  return apellido;
 }

 public void setApellido(String apellido) {
  this.apellido = apellido;
 }

 public String getEmail() {
  return email;
 }

 public void setEmail(String email) {
  this.email = email;
 }

 public String getCodigoPostal() {
  return codigoPostal;
 }

 public void setCodigoPostal(String codigoPostal) {
  this.codigoPostal = codigoPostal;
 }

 public String getLogin() {
  return login;
 }

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

 public String getPassword() {
  return password;
 }

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

 public boolean getNotificaciones() {
  return notificaciones;
 }

 public void setNotificaciones(boolean notificaciones) {
  this.notificaciones = notificaciones;
 }

 @Override
 public int hashCode() {
  int hash = 0;
  hash += (idUsuario != null ? idUsuario.hashCode() : 0);
  return hash;
 }

 @Override
 public boolean equals(Object object) {
  // TODO: Warning - this method won't work in the case the id fields are not set
  if (!(object instanceof Usuario)) {
   return false;
  }
  Usuario other = (Usuario) object;
  if ((this.idUsuario == null && other.idUsuario != null) || (this.idUsuario != null &&    !this.idUsuario.equals(other.idUsuario))) {
   return false;
  }
  return true;
 }

 @Override
  public String toString() {
  return "com.empresa.pojos.jpa.Usuario[idUsuario=" + idUsuario + "]";
 }
}

Para crear la entidad Usuario tenemos que hacer clic con el botón derecho sobre el proyecto proregusuariovwjsf y seleccionar New | Other...

En el cuadro de diálogo New File seleccionamos Persistence | Entity Classes from Database y hacemos clic sobre el botón Next

NetBeans 6 - Crear clases de entidad desde una Base de Datos

En el cuadro de diálogo New Entity Classes from Database indicamos en el combo DataSource: que la fuente de datos (data source) es jdbc/condor.

Nota: Como en la operativa del paso 0 - Configurar un recurso JDBC que enlaza con un Pool de conexiones con GlassFish del curso configuramos GlassFish e indicamos que el nombre JNDI jdbc/condor estaba asociado al Pool de conexiones mySQLPoolCondor, estamos optimizando al máximo todas las conexiones que se tengan que realizar a la Base de Datos tal y como se explica en el Apéndice - Conexiones a BDS a través de un Pool de conexiones transparente

Seguidamente seleccionamos la Tabla usuario y hacemos clic sobre el botón Add >

NetBeans 6 - Crear clases de entidad desde una Base de Datos - Database Tables | Data Source: jdbc/condor | Available Tables: usuario | Add >

Ahora hacemos clic sobre el botón Create persistence Unit...

NetBeans 6 - Crear una unidada de persistencia - Create Persistence Unit...

En el cuadro de diálogo Create Persistence Unit... introducimos la siguiente inofomación de configuarción

Seguidamente hacemos clic sobre el botón Create

NetBeans 6 - Crear una unidada de persistencia - Persistence Unit Name: condorPU | Persistence Provider: TopLinnk(default) | Data Source: jdbc/dondor

Como podemos observar, la entidad Usuario va a representar a la Tabla usuario, y el paquete donde queremos que la entidad se aloje es com.empresa.pojos.jpa

NetBeans 6 - Crear clases de entidad desde una Base de Datos - New Entity Classes from Database | Specfy de names and the location of the entity classes

De momento sólo estamos trabajando con una entidad, si más adelante creamos relaciones con más entidades y estas relaciones fueran one-to-many o many-to-many entonces podemos indicar en el combo CollectioType: que el tipo de colecciones que nos interesan son java.util.List en vez de java.util.Collection

NetBeans 6 - Crear clases de entidad desde una Base de Datos - New Entity Classes from Database | Specify the default mapping options

Cuando abrimos el asistente del documento XML persistence.xml que se encuentra debajo de la carpeta Configuration Files del proyecto proregusuariovwjsf podemos ver que el asistente de NetBeans quiere incluir la entidad que hemos creado en el paquete proregusuariovwjsf.

NetBeans 6 - Crear una unidada de persistencia - Persistence.xml | Persistence Units | Include All Entity Classes in "proregusuariovwjsf" Module

Lo que vamos a hacer es quitar el check de la casilla de verificación Include All Entity Classes in "proregusuariovwjsf" Module y vamos a hacer clic sobre el botón Add Class...

NetBeans 6 - Crear una unidada de persistencia - Persistence.xml | Persistence Units | Include Entity Classes: | Add Class...

En el cuadro de diálogo Add Entity Class añadimos la entidad com.empresa.pojos.jpa.Usuario

NetBeans 6 - Crear una unidada de persistencia - Persistence.xml | Add Entity Class

Al hacer clic sobre el botón XML podemos ver el fichero persistence.xml que ha creado el asistente de NetBeans

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"              xsi:schemaLocation="http://java.sun.com/xml/ns/persistence              http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
>
 <persistence-unit name
="condorPU" transaction-type="JTA">
  <jta-data-source>jdbc/condor</jta-data-source>
  <class>com.empresa.pojos.jpa.Usuario</class>
  <exclude-unlisted-classes>true</exclude-unlisted-classes>
  <properties/>
 </persistence-unit>
</persistence>

Página anterior
Ignasi Pérez Valls
Infosintesis Solutions Group


Junio 2009
JavaDabbaDoo.org
Tu comunidad Java parlante. Cursos abiertos, tutoriales y mucho mucho más ...