As tecnologias e ferramentas utilizadas nesse exemplo são:
- Netbeans 8.2
- JDK 8.0.151
- Maven 3.3.9
- Tomcat 8.0.27.0
- JavaEE 7
- JSF 2.2.14
- Primefaces 6.1
- Weld-Servlet 2.4.5
- PostgreSql 9.5.4 Driver JDBC 9.4.1212
- Hibernate Core 5.2.12
- Hibernate C3p0 5.2.12
Estrutura do projeto:
Arquivo pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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>com.dnn</groupId>
<artifactId>session-hibernate-cdi</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>session-hibernate-cdi</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- implementação do JSF -->
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.2.14</version>
</dependency>
<!-- biblioteca de componentes do Primefaces -->
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>6.1</version>
</dependency>
<!-- nucleo do hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.12.Final</version>
</dependency>
<!-- pool de conexoes -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>5.2.12.Final</version>
</dependency>
<!-- driver jdbc do postgresql -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4.1212</version>
</dependency>
<!-- biblioteca do javaee -->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
<!-- implementação do cdi -->
<dependency>
<groupId>org.jboss.weld.servlet</groupId>
<artifactId>weld-servlet</artifactId>
<version>2.4.5.Final</version>
</dependency>
</dependencies>
<build>
<finalName>session-hibernate-cdi</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<packagingExcludes>WEB-INF/web.xml</packagingExcludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
Logica do projeto:
Ao iniciar a aplicação a classe SessionFactoryBuilder le o arquivo de configuração hibernate.cfg.xml com dados de acesso ao banco de dados PostgreSql e produz a SessionFactory .
A interface Transactional sera um interceptador de transações implementada pela classe TransactionManger.
A classe TransactionManager gerencia os métodos do hibernate que requer transações como inserir,atualizar e excluir.
A classe AppContext implementa a ServletContextListennerque possui metodos que quando contexto é criado ou destruido,nesse caso quando o servidor Tomcat é finalizado a funcao contextDestroyed() ira limpar os drivers jdbc.
A classe Produto representa a tabela produto no banco de dados
A classe ProdutoDAO possui métodos de inserir,atualizar,excluir,recuperar e listar produtos atraves da SessionFactory injetada, note as anotacoes @Transactional nos metodos inserir,atualizar e excluir.
A classe ProdutoBean é um bean gerenciado vinculada a pagina index.xhtml com escopo de visão que gerencia produtos cadastrados podendo inserir,atualizar,excluir e listar.
A pagina index.xhtml possui componentes do Primefaces para gerenciar os produtos.
O arquivo web.xml fornece informações de configuração e de implementação para os componentes da aplicação web.
O arquivo context.xml é o arquivo de configuração de contexto do Tomcat.
O arquivo beans.xml ativa o cdi
Resultado:
Nenhum comentário:
Postar um comentário