En la implementación del patrón, creamos varias clases principales en nuestro proyecto.
En nuestro paquete util
, tenemos la clase DatabaseConnection
, que se encarga de manejar la lógica de la conexión a la base de datos. Utilizamos el patrón Singleton para garantizar que solo tengamos una instancia de conexión en todo el programa. La clase DatabaseConnection
expone un método getInstance()
que nos permite obtener la instancia de la conexión en cualquier parte del programa.
En nuestro paquete model
, tenemos la clase Employee
, que representa el modelo de datos para los empleados. En esta clase, definimos los atributos de los empleados, así como los métodos getter, setter, toString y los constructores (tanto el constructor vacío como el constructor que recibe los datos del empleado).
Por último, tenemos una interfaz Repository que define los métodos comunes para realizar las operaciones CRUD (Create, Read, Update, Delete) y que vamos a desarrollar en nuestra clase EmployeeRepository. Esta interfaz utiliza un tipo genérico para permitir que pueda ser implementada por diferentes clases y trabajar con diferentes tipos de datos. Los métodos comunes que se definen en esta interfaz son findAll()
, getById()
, save()
y delete()
, que representan las operaciones de búsqueda de todos los elementos, búsqueda por ID, guardado y eliminación, respectivamente.
- ```````findAll**()
: Este método devuelve una lista de elementos de tipo **
T`. Es utilizado para obtener todos los elementos almacenados.
getById(Integer id)
: Este método recibe un identificador (id
) y devuelve un elemento de tipo T
que corresponde a ese identificador.
save(T t)
: Este método recibe un objeto de tipo T
y lo guarda. Es utilizado para insertar o actualizar un elemento.
delete(Integer id)
: Este método recibe un identificador (id
) y elimina el elemento correspondiente a ese identificador.
La letra T
es una convención comúnmente utilizada en la programación genérica para representar un tipo genérico. Permite una mayor flexibilidad y reutilización del código, ya que la interfaz Repository
puede ser implementada para trabajar con diferentes tipos de objetos sin tener que especificar un tipo concreto en el momento de su definición.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?