DAO
DAO (Data Access Object) es un patrón de diseño que se utiliza para separar la lógica de acceso a datos de la lógica de negocio de una aplicación. El objetivo es proporcionar una interfaz común para acceder a diferentes fuentes de datos, como bases de datos, archivos o servicios web.
Un ejemplo de cómo crear un DAO en Java sería:
Crear una interfaz DAO que define los métodos que se utilizarán para acceder a los datos:
java
public interface EmployeeDAO {
public Employee getEmployeeById(int id);
public void addEmployee(Employee employee);
public void updateEmployee(Employee employee);
public void deleteEmployee(int id);
}
Crear una clase DAO concreta que implementa la interfaz DAO y contiene la lógica de acceso a datos:
java
public class EmployeeDAOImpl implements EmployeeDAO {
// lógica de acceso a datos para obtener, agregar, actualizar y eliminar empleados
}
Utilizar la clase DAO en la lógica de negocio de la aplicación:
java
public class EmployeeService {
private EmployeeDAO employeeDAO;
public EmployeeService() {
employeeDAO = new EmployeeDAOImpl();
}
public Employee getEmployeeById(int id) {
return employeeDAO.getEmployeeById(id);
}
// otros métodos de negocio
}
En este ejemplo, la clase EmployeeDAOImpl es la clase concreta que se encarga de acceder a los datos, mientras que la interfaz EmployeeDAO proporciona una interfaz común para todas las implementaciones de acceso a datos. Esto permite cambiar fácilmente la implementación de acceso a datos sin afectar a la lógica de negocio de la aplicación.
Otro ejemplo de como hacer DAO en Java con JPA(Java Persistence API) sería:
@Entity
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String name;
private String email;
// getters and setters
}
public interface EmployeeDAO extends JpaRepository<Employee, Integer> {
}
En este caso estamos utilizando JPA y extender de la interfaz JpaRepository, esto nos permite tener acceso a métodos como save, findAll, findById, entre otros, sin tener que escribir la lógica de acceso a datos.
En ambos casos, se está separando la lógica de acceso a datos de la lógica de negocio.