|
(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
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.
|