Gerenciador de Clientes é uma aplicação web desenvolvida para gerenciar um cadastro de clientes, permitindo realizar operações básicas de CRUD (Create, Read, Update, Delete) e integrar-se com o serviço ViaCEP para consulta de endereços via CEP. A aplicação foi construída utilizando JavaServer Faces (JSF) para a interface do usuário, Java Persistence API (JPA) para persistência dos dados, e banco de dados MySQL "dockerizado" para armazenamento dos dados.
src/main
├── java/dev/andersonleite/erp
│ ├── controller
│ │ └── ClienteBean.java
│ ├── dto
│ │ └── EnderecoDTO.java
│ ├── model
│ │ └── Cliente.java
│ ├── repository
│ │ └── ClienteRepository.java
│ ├── service
│ │ ├── ClienteService.java
│ │ └── ViaCepService.java
│ └── util
│ ├── EntityManagerProducer.java
│ ├── FacesContextProducer.java
│ ├── FacesMessages.java
│ ├── Transacional.java
│ └── TransacionalInterceptor.java
├── resources
│ ├── dev/andersonleite/erp
│ │ └── Messages.properties
│ ├── META-INF
│ │ ├── beans.xml
│ │ ├── persistence.xml
│ │ └── ValidationMessages.properties
│ └── webapp
│ ├── META-INF
│ │ └── context.xml
│ ├── resources/assets
│ │ ├── estilo.css
│ │ └── logo.png
│ ├── WEB-INF
│ │ ├── template
│ │ │ └── Layout.xhtml
│ │ ├── faces-config.xml
│ │ └── web.xml
│ └── gestao-clientes.xhtml
docker-compose.yaml
A estrutura do projeto segue uma organização modular, com separação de responsabilidades entre controle, modelo, serviço e utilitários:
- Controller: Contém os managed beans que controlam o fluxo de dados entre a UI e a camada de negócio.
- DTO: Objetos de Transferência de Dados usados para comunicar com serviços externos, como o ViaCEP.
- Model: Entidades JPA que representam os dados do sistema.
- Repository: Classes que lidam com a persistência dos dados.
- Service: Contém a lógica de negócio da aplicação.
- Util: Utilitários para a aplicação, como produtores de EntityManager e FacesContext, mensagens de Faces, etc.
- beans.xml: Configuração de CDI.
- persistence.xml: Configuração da persistência JPA.
- context.xml: Configuração do contexto do Tomcat.
- faces-config.xml: Configuração do JSF.
- ValidationMessages.properties:: Mensagens de validação customizadas.
- Messages.properties: Mensagens da aplicação.
- weld-servlet: Implementação de CDI.
- javax.faces: Implementação do JavaServer Faces.
- primefaces: Biblioteca de componentes JSF.
- servlet-api: API de Servlet.
- hibernate-validator: Validador de dados baseado no Bean Validation.
- hibernate-core: ORM Hibernate.
- mysql-connector-java: Conector JDBC para MySQL.
- jaxb-api: API para JAXB.
- poi: Biblioteca para manipulação de documentos do Microsoft Office.
- poi-ooxml: Biblioteca para manipulação de documentos do Microsoft Office no formato OOXML.
- log4j-core: Biblioteca de logging.
- log4j-api: API de logging.
- httpclient: Biblioteca para fazer requisições HTTP.
- gson: Biblioteca para manipulação de JSON.
- Maven Compiler Plugin: Para compilar o projeto utilizando Java 17.
Antes de rodar a aplicação, certifique-se de ter os seguintes requisitos instalados no seu ambiente:
- Java Development Kit (JDK) 17: A aplicação foi desenvolvida utilizando Java 17, portanto, é necessário ter o JDK 17 instalado.
- Apache Maven 3.6.0 ou superior: Utilizado para gerenciar as dependências e construir o projeto.
- Docker: Utilizado para subir o banco de dados MySQL através de um container.
- Servidor de aplicação compatível com Java EE 8 ou superior: Eu utilizei o Apache Tomcat 9, mas você pode utilizar outros, como WildFly, etc.
Para construir e executar o projeto, siga os passos abaixo:
- Clonar o repositório:
git clone https://github.com/andersonleite1/gerenciador-clientes && cd gerenciador-clientes
- Construir o projeto:
mvn clean install
- Subir o banco de dados MySQL com Docker: Certifique-se de ter o Docker instalado e em execução. No diretório do projeto, execute:
docker-compose up -d
-
Executar a aplicação: Utilize seu servidor de aplicação preferido (ex: Tomcat, WildFly). Se estiver utilizando o Tomcat, copie o arquivo WAR gerado (target/gerenciador-clientes.war) para o diretório webapps do Tomcat e inicie o servidor.
-
Acessar a aplicação: Acesse a aplicação no navegador utilizando a URL: http://localhost:8080/gerenciador-clientes
Este projeto foi desenvolvido com o objetivo de demonstrar habilidades em desenvolvimento Java EE, utilização de Docker, e boas práticas em arquitetura MVC. É um exemplo de uma aplicação completa, abrangendo desde a camada de persistência até a interface do usuário.
- Nome: Anderson Leite
- Email: andersonleitedev@gmail.com
- LinkedIn: linkedin.com/in/andersonleitedev