Estructura de un proyecto usando DAO

Contactar con el profesor

En la capa correspondiente a la vista recogemos nuestros datos de entrada y se los pasaríamos a un enrutado que se los pasaría al Business Object para que lanzase la operación pertiente.

En el siguiente ejemplo he obviado el enrutador y estoy llamando directamente a un método del BO:

if (opt == 1) {
	ProfesorBO profesorBO = new ProfesorBO();
	System.out.println("Inserta el nombre del profesor");
	String nombre = lector.next();
	Profesor p = new Profesor();
	p.setNombre(nombre);
	profesorBO.insertProfesor(p);
}

En el BO establecemos la conexión contra la base de datos, y en caso de que sea neceario, iniciamos una transacción.

A continuación llamamos a uno o varios métodos del DAO que ejecutarán operaciones nucleares y específicas. Por esto, se dice que los DAO son las clases tontas.

public class ProfesorBO {
    public void updateProfesor(Profesor p) {
        EntityManager em = EntityManagerSingleton.getEntityManager();
        em.getTransaction().begin();
        ProfesorDAO profesorDAO = new ProfesorDAO();
        profesorDAO.insertProfesor(em, p);
        em.getTransaction().commit();
        em.close();
    }

En el DAO, ejecutamos la operación contra la base de datos utilizando la conexión (en nuestro caso el EntityManager) que hemos creado en el BO:

public class ProfesorDAO {
	public void insertProfesor(EntityManager em, Profesor p) {
		em.persist(p);
	}

Debemos tener un EntityManager por cada transacción. Para ello, creamos el siguiente Singleton:

public class EntityManagerSingleton{
	private static EntityManagerFactory emf;

	public static EntityManager getEntityManager() {	
		if (emf == null) {
			 emf = Persistence.createEntityManagerFactory("TEST_PERSISTENCE_JPA");
		}
		EntityManager em = emf.createEntityManager();
		return em;
	}
}
← JPA (Java Persistence)
Herencia con discriminador →

Aviso Legal | Política de privacidad