Desarrollo
La solución la vamos a realizar de la siguiente manera vamos a crear un proyecto tipo modular con maven,la persistencia de datos con hibernate 5,spring 4.7 y front end primefaces 7.0 comenzemos:Abrimos nuestro IDE eclipse y seleccionamos en File->New->Maven Project

Seleccionamos en Create a simple project y presionamos Next

LLenamos los siguientes campos y presionamos Finish:
- Group Id: mx.com.tutosoftware.cleanservice
- Artifact Id: cleanservice
- Packaging: pom
- Name: Clean Service

En el archivo pom.xml escribimos lo siguiente
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<verbose>true</verbose>
<fork>true</fork>
<executable>${JAVA_HOME}/bin/javac</executable>
<compilerVersion>1.8</compilerVersion>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4.2</version>
<configuration>
<jvm>${JAVA_HOME}/bin/java</jvm>
<forkMode>once</forkMode>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.3.1</version>
<inherited>true</inherited>
<executions>
<execution>
<id>enforce</id>
<configuration>
<rules>
<DependencyConvergence />
<requireJavaVersion>
<version>1.8</version>
</requireJavaVersion>
</rules>
</configuration>
<goals>
<goal>enforce</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<versionRange>[1.0.0,)</versionRange>
<goals>
<goal>enforce</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
Una vez realizado esta parte en nuestro editor eclipse selecionamos File->New->Other

Destendemos la pestaña que dice Maven y seleccionamos Maven Module y presionamos Next

En la siguiente pantalla seleccionamos Create a simple project (skip archetype selection) , luego en Module name: lo nombramos como cleanservice-web y en Parent project: seleccionamos cleanservice y presionamos Next

Llenamos los siguientes datos:
- Group id:mx.com.tutosoftware.cleanservice
- Version:0.0.1-SNAPSHOT
- Packaging:seleccionar war
- name:CleanService Web

Ahora creamos el modulo core donde tendremos nuestra persistencia de datos y servicios, volvemos a selecionar
File->New->Other

Destendemos la pestaña que dice Maven y seleccionamos Maven Module y presionamos Next

En la siguiente pantalla seleccionamos Create a simple project (skip archetype selection) , luego en Module name: lo nombramos como cleanservice-core y en Parent project: seleccionamos cleanservice y presionamos Next

Llenamos los siguientes datos:
- Group id:mx.com.tutosoftware.cleanservice
- Version:0.0.1-SNAPSHOT
- Packaging:seleccionar jar
- name:CleanService Core

Marca un error en el módulo marcado con que sería cleanservice-webporque no tiene el archivo web.xml , pero lo solucionaremos de la siguiente manera, hacemos clic derecho en el proyecto y selecionamos Properties

Selecionamos Project Facets en el recuadro seleccionamos Dynamic Web Module 3.1 y Java Server Faces 2.2 y presionamos Apply posterriormente OK

Creamos una carpeta en src/main/webapp llamada WEB-INF.Creamos el archivo web.xml y escribimos lo siguiente:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> <display-name>cleanservice</display-name> <absolute-ordering /> <!-- load spring configuration --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-config.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Development</param-value> </context-param> <context-param> <param-name>primefaces.THEME</param-name> <param-value>start</param-value> </context-param> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping> <session-config> <session-timeout>30</session-timeout> </session-config> <welcome-file-list> <welcome-file>faces/index.xhtml</welcome-file> </welcome-file-list> </web-app>
Ahora nos vamos al modulo padre llamado cleanserviceHaciendo clic derecho y seleccionamos Run As->Maven clean

y en consola aparece lo siguiente:

De nuevo sobre cleanserviceHacemos clic derecho y seleccionamos Run As->Maven install

y en consola aparece lo siguiente:

Ahora lo que vamos hacer es instalar los jars nos vamos a cleanservice dejando el archivo pom.xml de la siguiente forma:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>mx.com.tutosoftware.cleanservice</groupId>
<artifactId>cleanservice</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>CleanService</name>
<repositories>
<repository>
<id>prime-repo</id>
<name>PrimeFaces Maven Repository</name>
<url>http://repository.primefaces.org/</url>
<layout>default</layout>
</repository>
</repositories>
<properties>
<csc.version>0.0.1-SNAPSHOT</csc.version>
<primefacestheme.version>1.0.10</primefacestheme.version>
<primefaces.version>7.0</primefaces.version>
<spring.version>4.3.7.RELEASE</spring.version>
<jsf2.version>2.2.10</jsf2.version>
<hibernate.version>5.2.9.Final</hibernate.version>
<jstl.version>1.2</jstl.version>
<jsp-api.version>2.1</jsp-api.version>
<servlet-api.version>3.1.0</servlet-api.version>
<mysql.version>8.0.11</mysql.version>
<itext.version>2.1.7</itext.version>
<poi.version>3.17</poi.version>
<elri.version>1.0</elri.version>
<javaeewebapi.version>7.0</javaeewebapi.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>mx.com.tutosoftware.cleanservice</groupId>
<artifactId>cleanservice-core</artifactId>
<version>${csc.version}</version>
</dependency>
<!-- Spring and Transactions -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Spring ORM support -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>${jsf2.version}</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>${jsf2.version}</version>
</dependency>
<!-- Hibernate dependencies -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>${jsp-api.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet-api.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>
<dependency>
<groupId>com.sun.el</groupId>
<artifactId>el-ri</artifactId>
<version>${elri.version}</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>${javaeewebapi.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>${primefaces.version}</version>
</dependency>
<dependency>
<groupId>org.primefaces.themes</groupId>
<artifactId>all-themes</artifactId>
<version>${primefacestheme.version}</version>
</dependency>
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>${itext.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>${poi.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<verbose>true</verbose>
<fork>true</fork>
<executable>${JAVA_HOME}/bin/javac</executable>
<compilerVersion>1.8</compilerVersion>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4.2</version>
<configuration>
<jvm>${JAVA_HOME}/bin/java</jvm>
<forkMode>once</forkMode>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.3.1</version>
<inherited>true</inherited>
<executions>
<execution>
<id>enforce</id>
<configuration>
<rules>
<DependencyConvergence />
<requireJavaVersion>
<version>1.8</version>
</requireJavaVersion>
</rules>
</configuration>
<goals>
<goal>enforce</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<versionRange>[1.0.0,)</versionRange>
<goals>
<goal>enforce</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<modules>
<module>cleanservice-web</module>
<module>cleanservice-core</module>
</modules>
</project>
cleanservice-core
Lo que sigue es integrar las capas de dao y servicio nos vamos al modulo cleanservice-core y en el archivo pom.xml escribimos lo siguiente:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>mx.com.tutosoftware.cleanservice</groupId>
<artifactId>cleanservice</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>cleanservice-core</artifactId>
<name>CleanService Core</name>
<dependencies>
<!-- Spring 4 dependencies -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<!-- Hibernate dependencies -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
</dependency>
<!-- mysql dependencie -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
</project>
Seguimos en cleanservice-core y en src/main/java creamos el paquete mx.com.tutosoftware.cleanservice.util

En ese paquete creamos la clase HibernateUtil
package mx.com.tutosoftware.cleanservice.util;
import java.io.Serializable;
import java.util.List;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository
public class HibernateUtil {
@Autowired
private SessionFactory sessionFactory;
public <T> Serializable create(final T entity) {
return sessionFactory.getCurrentSession().save(entity);
}
public <T> T update(final T entity) {
sessionFactory.getCurrentSession().update(entity);
return entity;
}
public <T> void delete(final T entity) {
sessionFactory.getCurrentSession().delete(entity);
}
public <T> void delete(Serializable id, Class<T> entityClass) {
T entity = fetchById(id, entityClass);
delete(entity);
}
@SuppressWarnings("unchecked")
public <T> List<T> fetchAll(Class<T> entityClass) {
return sessionFactory.getCurrentSession().createQuery(" FROM "+entityClass.getName()).list();
}
@SuppressWarnings("unchecked")
public <T> List<T> fetchAll(String hql) {
return sessionFactory.getCurrentSession().createQuery(hql).list();
}
public <T> T fetchById(Serializable id, Class<T> entityClass) {
return (T)sessionFactory.getCurrentSession().get(entityClass, id);
}
@SuppressWarnings("unchecked")
public <T> T fetchByUniqueResult(String hql) {
return (T)sessionFactory.getCurrentSession().createQuery(hql).uniqueResult();
}
}
Ahora creamos el paquete llamado mx.com.tutosoftware.cleanservice.entity y en creamos la clase HomeClean
package mx.com.tutosoftware.cleanservice.entity;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="homeclean")
public class HomeClean implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long idHomeClean;
@Column(name="departamento")
private Double departamento;
@Column(name="casa")
private Double casa;
@Column(name="residencia")
private Double residencia;
@Column(name="zonahabitacional")
private Double zonaHabitacional;
@Column(name="zonaprivadadepa")
private Double zonaPrivadaDepa;
@Column(name="edificio")
private Double edificio;
@Column(name="piso")
private Double piso;
@Column(name="dospisos")
private Double dosPisos;
@Column(name="maspisos")
private Double masPisos;
@Column(name="privadaaccesopeatonal")
private Double privadaAccesoPeatonal;
@Column(name="privadaaccesovehicular")
private Double privadaAccesoVehicular;
@Column(name="accesoabierto")
private Double accesoAbierto;
@Column(name="habitacion")
private Double habitacion;
@Column(name="habitacion2")
private Double habitacion2;
@Column(name="habitacion3")
private Double habitacion3;
@Column(name="habitacionmas3")
private Double habitacionMas3;
@Column(name="bano1")
private Double bano1;
@Column(name="bano2")
private Double bano2;
@Column(name="bano3")
private Double bano3;
@Column(name="banomas3")
private Double banoMas3;
@Column(name="barrerpisos")
private Double barrerPisos;
@Column(name="lavarvidriosint")
private Double lavarVidriosInt;
@Column(name="lavartrastes")
private Double lavarTrastes;
@Column(name="sacudir")
private Double sacudir;
@Column(name="lavarpisos")
private Double lavarPisos;
@Column(name="trapearPisos")
private Double trapearPisos;
@Column(name="cambiarsabanas")
private Double cambiarSabanas;
@Column(name="tirarbasura")
private Double tirarBasura;
public Double getTirarBasura() {
return tirarBasura;
}
public void setTirarBasura(Double tirarBasura) {
this.tirarBasura = tirarBasura;
}
public long getIdHomeClean() {
return idHomeClean;
}
public void setIdHomeClean(long idHomeClean) {
this.idHomeClean = idHomeClean;
}
public Double getDepartamento() {
return departamento;
}
public void setDepartamento(Double departamento) {
this.departamento = departamento;
}
public Double getCasa() {
return casa;
}
public void setCasa(Double casa) {
this.casa = casa;
}
public Double getResidencia() {
return residencia;
}
public void setResidencia(Double residencia) {
this.residencia = residencia;
}
public Double getZonaHabitacional() {
return zonaHabitacional;
}
public void setZonaHabitacional(Double zonaHabitacional) {
this.zonaHabitacional = zonaHabitacional;
}
public Double getZonaPrivadaDepa() {
return zonaPrivadaDepa;
}
public void setZonaPrivadaDepa(Double zonaPrivadaDepa) {
this.zonaPrivadaDepa = zonaPrivadaDepa;
}
public Double getEdificio() {
return edificio;
}
public void setEdificio(Double edificio) {
this.edificio = edificio;
}
public Double getPiso() {
return piso;
}
public void setPiso(Double piso) {
this.piso = piso;
}
public Double getDosPisos() {
return dosPisos;
}
public void setDosPisos(Double dosPisos) {
this.dosPisos = dosPisos;
}
public Double getMasPisos() {
return masPisos;
}
public void setMasPisos(Double masPisos) {
this.masPisos = masPisos;
}
public Double getPrivadaAccesoPeatonal() {
return privadaAccesoPeatonal;
}
public void setPrivadaAccesoPeatonal(Double privadaAccesoPeatonal) {
this.privadaAccesoPeatonal = privadaAccesoPeatonal;
}
public Double getPrivadaAccesoVehicular() {
return privadaAccesoVehicular;
}
public void setPrivadaAccesoVehicular(Double privadaAccesoVehicular) {
this.privadaAccesoVehicular = privadaAccesoVehicular;
}
public Double getAccesoAbierto() {
return accesoAbierto;
}
public void setAccesoAbierto(Double accesoAbierto) {
this.accesoAbierto = accesoAbierto;
}
public Double getHabitacion() {
return habitacion;
}
public void setHabitacion(Double habitacion) {
this.habitacion = habitacion;
}
public Double getHabitacion2() {
return habitacion2;
}
public void setHabitacion2(Double habitacion2) {
this.habitacion2 = habitacion2;
}
public Double getHabitacion3() {
return habitacion3;
}
public void setHabitacion3(Double habitacion3) {
this.habitacion3 = habitacion3;
}
public Double getHabitacionMas3() {
return habitacionMas3;
}
public void setHabitacionMas3(Double habitacionMas3) {
this.habitacionMas3 = habitacionMas3;
}
public Double getBano1() {
return bano1;
}
public void setBano1(Double bano1) {
this.bano1 = bano1;
}
public Double getBano2() {
return bano2;
}
public void setBano2(Double bano2) {
this.bano2 = bano2;
}
public Double getBano3() {
return bano3;
}
public void setBano3(Double bano3) {
this.bano3 = bano3;
}
public Double getBanoMas3() {
return banoMas3;
}
public void setBanoMas3(Double banoMas3) {
this.banoMas3 = banoMas3;
}
public Double getBarrerPisos() {
return barrerPisos;
}
public void setBarrerPisos(Double barrerPisos) {
this.barrerPisos = barrerPisos;
}
public Double getLavarVidriosInt() {
return lavarVidriosInt;
}
public void setLavarVidriosInt(Double lavarVidriosInt) {
this.lavarVidriosInt = lavarVidriosInt;
}
public Double getLavarTrastes() {
return lavarTrastes;
}
public void setLavarTrastes(Double lavarTrastes) {
this.lavarTrastes = lavarTrastes;
}
public Double getSacudir() {
return sacudir;
}
public void setSacudir(Double sacudir) {
this.sacudir = sacudir;
}
public Double getLavarPisos() {
return lavarPisos;
}
public void setLavarPisos(Double lavarPisos) {
this.lavarPisos = lavarPisos;
}
public Double getTrapearPisos() {
return trapearPisos;
}
public void setTrapearPisos(Double trapearPisos) {
this.trapearPisos = trapearPisos;
}
public Double getCambiarSabanas() {
return cambiarSabanas;
}
public void setCambiarSabanas(Double cambiarSabanas) {
this.cambiarSabanas = cambiarSabanas;
}
}