Un servicio de maestros permite tener centralizados en un único servicio aquellos elementos que nos sirvan para identificar otros, por ejemplo, para un candidato, la procedencia de ese candidato, si ha sido por medio de un reclutador, de un empleado, a través de Linkedin… Estas tablas serán elementos que puedan repetirse en múltiples registros y nos interesa saber que elementos tienen para poder gestionarlos. Crearemos un servicio llamado MasterService, que contenga todos los DAO que puedan pertenecer a esta categoría.
Estableciendo los DAO
Si comprobamos la tabla de CANDIDATE de la base de datos, observamos que hay varias columnas que pueden ser factibles para ser una tabla de maestros que estén asociados a este nuevo servicio.
Crearemos la tablas asociadas a esos datos. Las tablas contendrán una estructura de 2 columnas, un identificador y una descripción.
Código SQL
Añadiremos claves foráneas a la tabla de CANDIDATE asociando sus columnas con las nuevas tablas.
Código SQL
Insertamos un registro en cada una de ellas, para que puedan tener datos.
Código SQL
Ahora se crearán los DAO correspondientes a esas tablas, tanto los elementos las clases en Java como los ficheros *.xml
EducationDao.xml
EducationDao.java
ExperienceLevelDao.xml
ExperienceLevelDao.java
OriginDao.xml
OriginDao.java
ProfileDao.xml
ProfileDao.java
StatusDao.xml
StatusDao.java
hr
hr-api
src
main
java
com
ontimize
hr
api
core
service
ICandidateService.java
IUserService.java
pom.xml
hr-boot
src
main
java
com
ontimize
hr
ServerApplication.java
resources
application.yml
pom.xml
hr-model
src
main
db
templateDB.script
templateDB.txt
java
com
ontimize
hr
model
core
dao
CandidateDao.java
EducationDao.java
ExperienceLevelDao.java
OriginDao.java
ProfileDao.java
StatusDao.java
UserDao.java
UserRoleDao.java
service
CandidateService.java
UserService.java
resources
dao
CandidateDao.xml
EducationDao.xml
ExperienceLevelDao.xml
OriginDao.xml
placeholders.properties
ProfileDao.xml
RoleDao.xml
RoleServerPermissionDao.xml
ServerPermissionDao.xml
StatusDao.xml
UserDao.xml
UserRoleDao.xml
pom.xml
hr-ws
src
main
java
com
ontimize
hr
ws
core
rest
CandidateRestController.java
MainRestController.java
TestRestController.java
UserRestController.java
pom.xml
.gitignore
Archetype_ontimize_boot.postman_collection.json
pom.xml
Crear la interfaz del servicio de maestros
Crearemos una interfaz para el servicio de maestros, pensando en que se usarán los DAO creados en el punto anterior.
IMasterService.java
hr
hr-api
src
main
java
com
ontimize
hr
api
core
service
ICandidateService.java
IMasterService.java
IUserService.java
pom.xml
hr-boot
src
main
java
com
ontimize
hr
ServerApplication.java
resources
application.yml
pom.xml
hr-model
src
main
db
templateDB.script
templateDB.txt
java
com
ontimize
hr
model
core
dao
CandidateDao.java
EducationDao.java
ExperienceLevelDao.java
OriginDao.java
ProfileDao.java
StatusDao.java
UserDao.java
UserRoleDao.java
service
CandidateService.java
UserService.java
resources
dao
CandidateDao.xml
EducationDao.xml
ExperienceLevelDao.xml
OriginDao.xml
placeholders.properties
ProfileDao.xml
RoleDao.xml
RoleServerPermissionDao.xml
ServerPermissionDao.xml
StatusDao.xml
UserDao.xml
UserRoleDao.xml
pom.xml
hr-ws
src
main
java
com
ontimize
hr
ws
core
rest
CandidateRestController.java
MainRestController.java
TestRestController.java
UserRestController.java
pom.xml
.gitignore
Archetype_ontimize_boot.postman_collection.json
pom.xml
Creación del servicio de maestros
De la misma manera que hemos creado el servicio para CandidateService, vamos a crear el servicio para MasterService, que implementará la recién creada interfaz IMasterService. Es necesario anotarlo con @Service (cuyo valor será MasterService) y con @Lazy
MasterService.java
hr
hr-api
src
main
java
com
ontimize
hr
api
core
service
ICandidateService.java
IMasterService.java
IUserService.java
pom.xml
hr-boot
src
main
java
com
ontimize
hr
ServerApplication.java
resources
application.yml
pom.xml
hr-model
src
main
db
templateDB.script
templateDB.txt
java
com
ontimize
hr
model
core
dao
CandidateDao.java
EducationDao.java
ExperienceLevelDao.java
OriginDao.java
ProfileDao.java
StatusDao.java
UserDao.java
UserRoleDao.java
service
CandidateService.java
MasterService.java
UserService.java
resources
dao
CandidateDao.xml
EducationDao.xml
ExperienceLevelDao.xml
OriginDao.xml
placeholders.properties
ProfileDao.xml
RoleDao.xml
RoleServerPermissionDao.xml
ServerPermissionDao.xml
StatusDao.xml
UserDao.xml
UserRoleDao.xml
pom.xml
hr-ws
src
main
java
com
ontimize
hr
ws
core
rest
CandidateRestController.java
MainRestController.java
TestRestController.java
UserRestController.java
pom.xml
.gitignore
Archetype_ontimize_boot.postman_collection.json
pom.xml
Creación del controlador de maestros
Ahora crearemos el controlador REST para el servicio de maestros. Tenemos que crear una clase nueva que extienda de ORestController, cuyo tipo de dato será la interfaz creada para el servicio, IMasterService. Esta clase contendrá las anotaciones @RestController, que indicará que esta clase servirá de controlador REST y @RequestMapping("/master") que establecerá la url del controlador.
MasterRestController
hr
hr-api
src
main
java
com
ontimize
hr
api
core
service
ICandidateService.java
IMasterService.java
IUserService.java
pom.xml
hr-boot
src
main
java
com
ontimize
hr
ServerApplication.java
resources
application.yml
pom.xml
hr-model
src
main
db
templateDB.script
templateDB.txt
java
com
ontimize
hr
model
core
dao
CandidateDao.java
EducationDao.java
ExperienceLevelDao.java
OriginDao.java
ProfileDao.java
StatusDao.java
UserDao.java
UserRoleDao.java
service
CandidateService.java
MasterService.java
UserService.java
resources
dao
CandidateDao.xml
EducationDao.xml
ExperienceLevelDao.xml
OriginDao.xml
placeholders.properties
ProfileDao.xml
RoleDao.xml
RoleServerPermissionDao.xml
ServerPermissionDao.xml
StatusDao.xml
UserDao.xml
UserRoleDao.xml
pom.xml
hr-ws
src
main
java
com
ontimize
hr
ws
core
rest
CandidateRestController.java
MainRestController.java
MasterRestController.java
TestRestController.java
UserRestController.java
pom.xml
.gitignore
Archetype_ontimize_boot.postman_collection.json
pom.xml
Arrancamos la aplicación y ya podemos hacer nuevas peticiones desde Postman.