Sie sind auf Seite 1von 3

Relaciones MUCHOS a MUCHOS bidirecional con anotaciones - 1

6.4 RELACIONES MUCHOS A MUCHOS BIDIRECCIONALES CON


ANOTACIONES
1. Se crear la base de datos que no necesitar contenener tablas. 2 Se copiarn las libreras hibernate, hibernate annotation y Msql JDBC connector. 3 Se crear la clase Materia que no necesitar mapeado: @Entity public class Materia implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; private String nombre; @ManyToMany(mappedBy="materias") private List<Estudiante> estudiantes = new ArrayList<Estudiante>(); public Materia() { } //getters setters y protected setId //para aadir un estudiante public void addEstudiante(Estudiante estudiante) { this.estudiantes.add(estudiante); estudiante.addMateria(this); } } 3 Se crear la clase Estudiante que no necesitar mapeado: @Entity public class Estudiante implements Serializable { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private long id; private String nombre; @ManyToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER) private List<Materia> materias = new ArrayList<Materia>(); public Estudiante() { } // getters setters protected setId //para aadir nueva materia public void addMateria(Materia materia) { this.materias.add(materia); } } 4 Crear la clase HibernateUtil para la sesin: import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.HibernateException; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; public class HibernateUtil { private static final SessionFactory sessionFactory;

Relaciones MUCHOS a MUCHOS bidirecional con anotaciones - 2


static { try { sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory(); } catch (HibernateException he) { System.err.println("Ocurri un error en la inicializacin de la SessionFactory: " + he); throw new ExceptionInInitializerError(he); } } public static SessionFactory getSessionFactory() { return sessionFactory; } } 5 Crear hibernate.cfg.xml para la conexin a la base de datos: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- parametros para la conexion a la base de datos --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/pruebahibernate</property> <property name="connection.username">raat</property> <property name="connection.password">canudos</property> <!-- Configuracion del pool interno --> <property name="connection.pool_size">1</property> <!-- Dialecto de la base de datos --> <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> <!-- Otras propiedades importantes --> <property name="show_sql">true</property> <property name="hbm2ddl.auto">create-drop</property> <!-- Aqui iran los archivos de mapeo --> <mapping class="Estudiante" /> <mapping class="Materia" /> </session-factory> </hibernate-configuration> 6 Crear Main: import org.hibernate.Session; public class Main { public static void main(String[] args) { Estudiante estudiante1 = new Estudiante(); estudiante1.setNombre("estudiante1"); Materia materia1 = new Materia(); materia1.setNombre("materia1"); Materia materia2 = new Materia(); materia2.setNombre("materia2"); Materia materia3 = new Materia(); materia3.setNombre("materia3"); estudiante1.addMateria(materia1); estudiante1.addMateria(materia2); estudiante1.addMateria(materia3);

Relaciones MUCHOS a MUCHOS bidirecional con anotaciones - 3

Estudiante estudiante2 = new Estudiante(); estudiante2.setNombre("estudiante2"); Materia materia4 = new Materia(); materia4.setNombre("materia4"); Materia materia5 = new Materia(); materia5.setNombre("materia5"); Materia materia6 = new Materia(); materia6.setNombre("materia6"); estudiante2.addMateria(materia4); estudiante2.addMateria(materia5); estudiante2.addMateria(materia6); Session sesion = HibernateUtil.getSessionFactory().openSession(); sesion.beginTransaction(); sesion.save(estudiante1); sesion.save(estudiante2); sesion.getTransaction().commit(); sesion.close(); sesion = HibernateUtil.getSessionFactory().openSession(); sesion.beginTransaction(); sesion.delete(estudiante1); sesion.getTransaction().commit(); sesion.close(); } }

Das könnte Ihnen auch gefallen