Inicio Programacion Java Relaciones JPA Parte 2

Relaciones JPA Parte 2

Usar puntuación: / 0
MaloBueno 
Tweeteame!
Programación - Java
Escrito por Adrián Toledo   
Jueves, 09 de Octubre de 2008 02:23

(Continua de parte 1)

La entidad para nuestro estudiante la declaramos de la siguiente forma:

@Entity
public class Estudiante {

   
@Id
   
@GeneratedValue(strategy = GenerationType.IDENTITY)
   
private int estudianteId;

   
@Basic
   
@Column(nullable = false)
   
private String nombre;

   
@OneToOne
   
@JoinColumn(nombre="proyecto_id")
   
private Proyecto proyecto;

   
public Estudiante(String nombre) {
       
this.nombre = nombre;
   
}
   
public String getNombre() {
       
return nombre;
   
}
       
// Getters and Setters
}

Para correr este ejemplo he usado Apache OpenJPA, con lo que el archivo persistence.xml quedará de la siguiente forma:

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
   
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   
version="1.0">
   
<persistence-unit name="ejemplo_debugmodeon.com" transaction-type="RESOURCE_LOCAL">
       
<class>ejemplo.Organizacionclass>
       
<class>ejemplo.Proyectoclass>
       
<class>ejemplo.Estudianteclass>
       
<properties>
           
<property name="openjpa.jdbc.SynchronizeMappings"
               
value="buildSchema"/>
           
<property name="openjpa.ConnectionURL"
               
value="jdbc:mysql://localhost/OpenJPARelations"/>
           
<property name="openjpa.ConnectionDriverName"
               
value="com.mysql.jdbc.Driver"/>
           
<property name="openjpa.ConnectionUserName"
               
value="user"/>
           
<property name="openjpa.ConnectionPassword"
               
value="password"/>
       
<property name="openjpa.Log"
       
value="File=../RelationsExample.log,
                DefaultLevel=WARN,SQL=TRACE"
/>
       
properties>
   
persistence-unit>
persistence>

Finalmente creamos los métodos para insertar y leer las entidades:

public void insertaValores() {
   
// Creamos el la factoría de EntityManagers con el
   
// nombre que le hemos dado a en la declaración del xml
   
// persistence-unit name="ejemplo_debugmodeon.com"
   
EntityManagerFactory factory = Persistence.
        createEntityManagerFactory
("ejemplo_debugmodeon.com",      
           
System.getProperties());

   
EntityManager em = factory.createEntityManager();
    em
.getTransaction().begin();
   
Organizacion organizacion =
       
new Organizacion(" The Apache Software Foundation");

   
Proyecto proyecto =
       
new Proyecto("Streaming LOB support (for OpenJPA)");
   
Estudiante estudiante = new Estudiante("Ignacio Andreu");
    estudiante
.setProyecto(proyecto);
    proyecto
.setEstudiante(estudiante);
    proyecto
.setOrganizacion(organizacion);
    organizacion
.addProyecto(proyecto);

    proyecto
= new Proyecto("Maven Dependency Visualization");
    estudiante
= new Estudiante("Peter Kolbus");
    estudiante
.setProyecto(proyecto);
    proyecto
.setEstudiante(estudiante);
    proyecto
.setOrganizacion(organizacion);
    organizacion
.addProyecto(proyecto);

    em
.persist(organizacion);

    organizacion
= new Organizacion(" Mono Proyecto");
    proyecto
= new Proyecto("Gendarme Tasks");
    estudiante
= new Estudiante("Néstor Salceda");
    estudiante
.setProyecto(proyecto);
    proyecto
.setEstudiante(estudiante);
    proyecto
.setOrganizacion(organizacion);
    organizacion
.addProyecto(proyecto);

    em
.persist(organizacion);

    em
.getTransaction().commit();
    em
.close();
    factory
.close();
}

public void leeValores() {
   
EntityManagerFactory factory = Persistence.
        createEntityManagerFactory
("ejemplo_debugmodeon.com",      
           
System.getProperties());

   
EntityManager em = factory.createEntityManager();

   
Query q = em.createQuery("select o from Organizacion o");

   
for (Organizacion organizacion : (List)q.getResultList()) {
       
System.out.println("Organizacion: "
           
+ organizacion.getName());
       
if (organizacion.getProyectos() != null &&
            organizacion
.getProyectos().size() > 0) {
           
for (Proyecto p : organizacion.getProyectos()) {
               
System.out.println("-"
                   
+ p.getName()
                   
+ " asignado a "
                   
+ p.getEstudiante().getName());
           
}
       
} else {
           
System.out.println("No contiene proyectos todavia");
       
}
   
}
    em
.close();
    factory
.close();
}

La salida por pantalla sería algo como:

[java] Organizacion: The Apache Software Foundation
[java] -Streaming LOB support (for OpenJPA) asignado a Ignacio Andreu
[java] -Maven Dependency Visualization asignado a Peter Kolbus
[java] Organizacion: Mono Project
[java] -Gendarme Tasks asignado a Néstor Salceda
Fuente: www.debugmodeon.com 

 

 


rssfeed Siguenos con tu lector de noticias preferido.
Si te ha gustado este artículo y si crees que lo que está escrito vale la pena compartirlo, entonces compártelo con la comunidad que prefieras mediante los links que están debajo. Gracias por visitarnos.
Email Drucken Favoriten Twitter Facebook Myspace Stumbleupon Digg MR. Wong Technorati aol blogger google reddit YahooWebSzenario
Última actualización el Jueves, 09 de Octubre de 2008 02:25
 

Escribir un comentario


Código de seguridad
Refescar

follow me twitter

Anuncios

Enlaces
Joomla!
Joomla! El mas popular CMS del mundo!!, es gratis y extensible.

Hosting Positivo Networks


Hosting y Diseño Web Profesional

Items relacionados