Prueba tecnica Java Basico HACKABOSS bootcamp por Laura Rodriguez Contador
Creacion de Proyecto Maven en IntelliJ , donde primero he cambiado el nombre por defecto de la carpeta principal del proyecto por "pruebaTecnica1"
Es importante tener en cuenta que en el archivo pom.xml
debemos añadir las dependencias de JPA y MySQL, para ello añadimos las siguientes dependencias:
Tras esto, creamos una serie de paquetes en el proyecto, que serán los siguientes: logica
y persistencia
Además de esto añadiremos la carpeta META-INF een resources y dentro de esta carpeta añadiremos el archivo persistence.xml
que será el archivo de configuración de la base de datos.
Para la realización de los objetivos de la actividad debemos empezar creando una base de datos en mysql llamado : empleados
create database empleados;
Una vez creada la base de datos, debemos configurar en el archivo persistence.xml la conexión a la base de datos, en mi caso la conexión es la siguiente:
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/empleados?serverTimezone=UTC"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="javax.persistence.jdbc.password" value=""/>
<property name="jakarta.persistence.schema-generation.database.action" value="create"/>
<property name="javax.persistence.schema-generation.database.action" value="create"/>
</properties>
Por ultimo vamos a añadir a la carpeta persistencia
la carpeta aportada por el profesor llamada exceptions
que contiene las clases IllegalOrphanException, NonexistentEntityException y PreexistingEntityException que nos ayudarán a gestionar las excepciones en la base de datos.
Dentro del paquete logica
creamos la clase Empleado
que será la clase que representará a los empleados de la empresa. Haciendo esta clase JPA creará una tabla en la base de datos con los atributos de la clase.
Es importante usar correctamente las anotaciones de JPA que nos ha enseñado el profesor en clase.
Es tambien importante marcar el atributo id
como clave primaria y autoincremental, asi como crear un constructor vacio y un constructor con todos los atributos menos el id , todos sus getters y setters.
Tras terminar con la clase Empleado debemos añadir en el archivo persistence.xml
la clase Empleado para que JPA la reconozca y cree la tabla en la base de datos si no existe.
Esta clase será la encargada de realizar las operaciones CRUD en la base de datos, para ello debemos crear una serie de métodos que nos permitan realizar estas operaciones. En clase el profesor nos a proporcionado ejemplo de como deberia ser esta clase, por lo que la creare siguiendo el ejemplo del profesor. A pesar de no indagar mucho en el funcionamiento de esta clase, he intentado entenderla y adaptarla a mi proyecto.
Esta clase será la encargada de gestionar las operaciones CRUD en la base de datos, para ello debemos crear una serie de métodos que nos permitan realizar estas operaciones. Es basicamente una clase que se encargará de llamar a los métodos de la clase EmpleadoJpaController
.
Lo primero que haremos será crear un objeto de la clase EmpleadoJpaController
y en el constructor de la clase inicializaremos este objeto.
Ahora podemos empezar a crear todos los metodos que nos pide la actividad :
1️⃣ Agregar un nuevo empleado:
public void createEmpleado(Empleado pers) {
empleadoJPA.create(pers);
}
2️⃣ Listar empleados:
public List<Empleado> getAllEmpleados () {
return empleadoJPA.findEmpleadoEntities();
}
3️⃣ Actualizar información de un empleado:
public void updateEmpleado (Empleado pers) {
try {
empleadoJPA.edit(pers);
} catch (Exception ex) {
Logger.getLogger(ControladoraPersistencia.class.getName()).log(Level.SEVERE, null, ex);
}
}
4️⃣ Eliminar un empleado:
public void deleteEmpleado(Long id) {
try {
empleadoJPA.destroy(id);
} catch (NonexistentEntityException ex) {
Logger.getLogger(ControladoraPersistencia.class.getName()).log(Level.SEVERE, null, ex);
}
}
5️⃣ Buscar empleados por cargo:
public List<Empleado> getEmpleadoByCargo(String cargo){
List<Empleado> empleadosCargo = new ArrayList<>();
for(Empleado empleado : empleadoJPA.findEmpleadoEntities()){
if(empleado.getCargo().equalsIgnoreCase(cargo)){
empleadosCargo.add(empleado);
}
}
return empleadosCargo;
}
Para probar la aplicación, crearé una aplicación de consola en la clase Main, donde crearemos un objeto de la clase ControladoraPersistencia
.
No voy a realizar ninguna excepción ya que mi nivel de Java es básico y no he llegado a ver como se realizan.
Usaré bucles para que el usuario pueda realizar las operaciones CRUD de la aplicación.
En una lista defino las opciones y comienzo el bucle while y un switch para realizar las operaciones.
Para la primera opción, añadir un empleado, pido al usuario que introduzca los datos del empleado y llamo al método createEmpleado
de la clase ControladoraPersistencia
.
Para la segunda opción, listar empleados, llamo al método getAllEmpleados
de la clase ControladoraPersistencia
y muestro los empleados por pantalla.
Para la tercera opción, he creado una funcion en la clase ControladoraPersistencia
que busca empleados por id, para poder seleccionar primero el empleado que queremos modificar y luego modificarlo.
Una vez sabemos que empleado queremos modificar, he creado una nueva lista de opciones de edición:
Y dependiendo de la opción que elija el usuario, se modificará el empleado en dicha opción.
Para la cuarta opción, eliminar un empleado, pido al usuario que introduzca el id del empleado que quiere eliminar, luego confirmamos si es el usuario que quiere eliminar y llamo al método deleteEmpleado
de la clase ControladoraPersistencia
.
Finalmente, para la quinta opción, buscar empleados por cargo, pido al usuario que introduzca el cargo del empleado que quiere buscar, si existe ese cargo, llamo al método getEmpleadoByCargo
de la clase ControladoraPersistencia
y muestro los empleados por pantalla.