SlideShare una empresa de Scribd logo
1 de 40
Java Business Controller
Framework de controle da camada de
negócio para projetos em Java
Rodrigo Leandro Marconato
Apresentação
• Rodrigo Leandro Marconato;
• Analista de sistemas na empresa B3 Informática desde 2009
• PTI – Parque Tecnológico de Itaipu
• Bacharel em Sistemas de Informação pela UDC
• Pós-Graduado em Administração e desenvolvimento de Banco de dados
pela UTFPR – Campus de Medianeira
• Sete anos de experiência em desenvolvimento de sistemas Java, utilizando
plataformas Desktop, Web e Mobile.
• Sólida vivência em gerenciamento e coordenação de projetos.
• Blog JBC: http://jbc-framework.blogspot.com.br/
• Auxiliado pelo Analista de sistemas Alison Diego Harka Machado
Cronograma
• Introdução
• O que é JBC?
• Como usar JBC
• Recursos utilizados
• Requisitos para implementação
• O que o JBC faz?
• JavaDoc
• JBC na prática
• Reimplementação de métodos da classe br.com.jbc.Controller
• Suporte para leitura de arquivo de propriedade hibernate.
• Case de sucesso
http://jbc-framework.blogspot.com.br/
Introdução
• Sistemas N-Camadas - No princípio do desenvolvimento de sistemas quando os
aplicativos eram executados em computadores de grande porte, era comum
encontrar todas as funcionalidades em uma única grande camado, a manutenção
deste código era muito complexa. Este código era chamda de “Código Monolítico”.
http://jbc-framework.blogspot.com.br/
Introdução
• Com o objetivo de poder utilizar vários aplicativos e uma única base de dados, a
arquitetura evoluiu para uma arquitetura de duas camadas, também conhecida
como cliente/servidor, onde passou a existir uma camada única para armazenar
regra de negócio para acesso a base de dados. Esta camada podia ser utilizada por
muitos aplicativos e facilmente trocada em caso de troca de banco de dados.
http://jbc-framework.blogspot.com.br/
Introdução
• Com o pasar do tempo a arquitetura de duas camadas começou a ser insuficiente,
pois a lógica de negócio e de apresentação estavam reunidas em uma única
camada. Em seguida surge a Internet, neste cenário a lógica de negócio era
executada no cliente, sendo inviável o tempo de espera para atualizar o aplicativo.
http://jbc-framework.blogspot.com.br/
Introdução
• A separação das três camadas torna o aplicativo mais flexível, pois as camadas
podem ser alteradas independentemente, de modo que as outras camadas não
sofram nenhuma alteração.
http://jbc-framework.blogspot.com.br/
O que é o JBC?
• É um framework de controle da camada de negócio para projetos desenvolvidos
em Java.
http://jbc-framework.blogspot.com.br/
O que é o JBC?
• Seu principal objetivo é otimizar o tempo de desenvolvimento que é usado para
projetar códigos repetitivos, que por sua vez são muito frequentes quando se trata
de controle de transação e persistência em banco de dados.
http://jbc-framework.blogspot.com.br/
Camada de visualização
Controller ou Transaction – Mantem controle de
transação
Facade – Disponibiliza uma interface simplificada
Dao – Data Access Object
Banco de dados
Recursos utilizados no JBC
• Java – Uma das mais populares linguagens de programação da atualidade
• Orientação a objeto;
• Distribuída;
• Polimorfismo;
• Entre outros...
• Hibernate – Framework de persistência Java
• Mapeamento das classes no banco de dados relacional;
• Annotations – Permite mapeamento ORM (Object-relational-mapping) sem utilizar XML;
• Persistência de forma transparente;
• Entre outros...
http://jbc-framework.blogspot.com.br/
Comparação
• Modelo tradicional
• Modelo JBC
http://jbc-framework.blogspot.com.br/
Aplicação do modelo tradicional
• Bean
http://jbc-framework.blogspot.com.br/
Aplicação do modelo tradicional
• DAO
http://jbc-framework.blogspot.com.br/
Aplicação do modelo tradicional
• Facade
http://jbc-framework.blogspot.com.br/
Aplicação do modelo tradicional
• Controller
http://jbc-framework.blogspot.com.br/
Aplicação do modelo tradicional
• View
http://jbc-framework.blogspot.com.br/
Aplicação do modelo
JBC
• VIEW
http://jbc-framework.blogspot.com.br/
Conclusão
• Para desenvolver um sistema completo, necessitamos de uma infinidade de
operações de transação e consulta na camada de negócio, então imagine ter que
desenvolver todas estas operações para cada entidade do seu negócio.
• A ideia do JBC foi generalizar todas essas operações através de um Framework que
desse suporte para todo e qualquer tipo de negócio, indiferente de
funcionalidades e regras, deixando com que o desenvolvedor dedique a maior
parte de seu tempo com o desenvolvimento da camada de visualização,
implementação que requer mais atenção e que tem grande variedade entre um
sistema e outro.
• Download dos modelos tradicional e JBC podem ser baixados no repositório github
https://github.com/marconato/jbc-framework/tree/master/sample
ou ainda através do blog JBC
http://jbc-framework.blogspot.com.br/p/como-usar.html
http://jbc-framework.blogspot.com.br/
Recursos utilizados
• Java
• Generics – A programação genérica é uma característica muito importante que foi
adicionada no Java 5.
http://jbc-framework.blogspot.com.br/
Recursos utilizados
• Java
• Reflection – Presente no Java desde a versão 1.1, permite um programa Java olhar e
examinar suas propriedades e estrutura. Com isso, você pode, por exemplo obter o
nome de todos os membros de uma classe, como atributos e métodos, bem como
executar um método:
http://jbc-framework.blogspot.com.br/
Recursos utilizados
• Hibernate
• Conexão com o banco de dados – Credenciais são informadas através de um arquivo de
configuração:
• hibernate.dialect = org.hibernate.dialect.MySQLDialect
• hibernate.connection.driver_class = com.mysql.jdbc.Driver
• hibernate.connection.url = jdbc:mysql://localhost:3306/nomedabasededados
• hibernate.connection.username = root
• hibernate.connection. password = password
• Annotations – Permite mapeamento ORM sem utilizar XML;
• HQL – Hibernate Query Language – Similar a SQL, porém é orientada a objetos, suportando
recursos como:
• Herança
• Polimorfismo
• Associações
• Entre outros...
http://jbc-framework.blogspot.com.br/
Recursos utilizados
• Hibernate
• Criteria - O Criteria Query API permite construir expressão query em Java, possibilitando, assim, a
checagem em tempo de compilação. O Criteria API permite, de forma programática, construir
objetos a partir da interface org.hibernate.Criteria
• Para persistir um objeto da classe, usamos o método createCriteria() da interface Session, que
retorna um objeto Criteria, que permite ter acesso a instância de persistência da classe.
• Utiliza as APIs org.hibernate.Criteria e org.hibernate.criterion.Restrinctions
http://jbc-framework.blogspot.com.br/
Recursos utilizados
• Hibernate
• Restriction – No Criteria através da desta API, temos métodos que nos ajudam na implementação
das operações simples:
• gt() = maior que
• ge() = maior ou igual que
• lt() = menor que
• le() = menor ou igual que
http://jbc-framework.blogspot.com.br/
Requisitos para implementação
• Utilizar a versão 3 do Hibernate em sua aplicação, pois esta é a versão
utilizada no JBC;
• O arquivo de configuração Hiberante (hibernate.cfg.xml) deve ser colocado na
raiz do projeto;
• A chave primária de todas as entidades deve se chamar “id”, sendo
indiferente o tipo de dados. Esta regra é necessária pois o JBC trabalha com
reflection, e em determinados pontos, como para adicionar Restrições no
Criteria, o JBC se baseia que a chave primária de todas as entidades sempre
será “id”.
• Os atributos que representam relacionamentos, como Many-To-One e One-
To-Many, tem que ter o mesmo nome da classe que implementa. Por
exemplo:
• Para a declaração do atributo do tipo Cidade dentro de Pessoa, deve ser declarado de
uma das seguintes maneiras:
– Cidade cidade;
– CidadeVO cidadeVO;
– CidadeEntity cidadeEntity;
• O importante é que sempre o nome do atributo seja igual ao nome da classe, e SEMPRE
COM A PRIMEIRA LETRA EM MINÚSCULA.
• Reforçando que isto é necessário que o JBC saiba lidar com as Restrições adicionadas
ao Criteria.
http://jbc-framework.blogspot.com.br/
O que o JBC faz?
• Controle de transação;
– Commit;
– Rollback;
• Consultas HQL;
• Busca paginada;
http://jbc-framework.blogspot.com.br/
Consulta HQL
• Permite consultas HQL através da API br.com.jbc.controller.Controller
http://jbc-framework.blogspot.com.br/
http://jbc-framework.blogspot.com.br/2012/10/consulta-hql.html
Busca paginada
• A classe br.com.jbc.controller.Controller tem um método de busca paginada com a
seguinte assinatura:
– filter: Objeto Bean/VO contendo os filtros de consulta populados em seus atributos. Este atributo é
genérico, e será definido na instância da classe br.com.jbc.controller.Controller
– firstResult: Número da página que a consulta irá mostrar os resultados;
– maxResult: Número de registros por página;
– sortField: Nome do atributo da entidade que será ordenado, aqui será passado o nome do atributo
em formato String;
– orderByType: Tipo de ordenação da Lista, os valores devem
ser br.com.jbc.controller.Controller.ORDER_ASC ou br.com.jbc.controller.Controller.ORDER_DESC
• O método retorna um objeto br.com.jbc.util.SearchPaginate, que contém a lista de
registros paginada e a quantidade de registros total da consulta
http://jbc-framework.blogspot.com.br/
JavaDoc JBC
• Documentação da API para consultar as interfaces de acesso do framework
– Jbc.orgfree.com
http://jbc-framework.blogspot.com.br/
JBC na prática
http://jbc-framework.blogspot.com.br/
JBC na prática
• Netbeans IDE
• Banco de dados MySQL
– Pacote WampServer
• http://www.wampserver.com/
– Criar a base de dados através do phpMyAdmin
• Baixar JBC do repositório:
– https://github.com/marconato/jbc-framework/
• Adicionar o JBC no Netbeans
– Menu: Ferramentas/bibliotecas Ant/
• Nova biblioteca
• Adicionar .jar no classpath
• Adicionar javaDoc na biblioteca
http://jbc-framework.blogspot.com.br/
JBC na prática
• Criar novo projeto Java
– Menu: Novo projeto/Java/Aplicativo Java
• Incluir bibliotecas
– JBC
– Hibernate
– Persistence
– Driver JDBC do MySQL
• Criar arquivo Hibernate de configuração
– Menu: Novo/Outro/Hibernate/Assistente para configuração de Hibernate
– Informar conexão com banco de dados MySql
– Adicionar Propriedades variadas:
• Hibernate.hbm2ddl.auto = update
• Criar o pacote de código fonte
– br.com.minicuro.projetoaula
http://jbc-framework.blogspot.com.br/
JBC na prática
• Criar classe Perfil no pacote br.com.minicuro.projetoaula
http://jbc-framework.blogspot.com.br/
JBC na prática
• Realizar o mapeamento hbm na classe Perfil
http://jbc-framework.blogspot.com.br/
JBC na prática
• Adicionar o Mapeamento no arquivo de configuração Hibernate
http://jbc-framework.blogspot.com.br/
JBC na prática
• Criar classe Main
• Criar instancia da classe br.com.jbc.controller.Controller
• Criar instancia da classe perfil
• Invocar método insert da classe controller
http://jbc-framework.blogspot.com.br/
Exercício 1
• Criar um novo projeto, que será o sistema console;
• Importar o projeto de negócio
• Implementar as operções na classe Perfil;
– Inserir
– Listar
– Atualizar
– Deletar
http://jbc-framework.blogspot.com.br/
Exercício 2
• Implementar a classe Usuário
– Usuario.java
– Anotações hbm para o relacionamento perfil
• @ManyToOne(fetch = FetchType.EAGER)
• @JoinColumn(name = "PERFIL_ID", nullable = false)
• @Fetch(FetchMode.JOIN)
• @Cascade(CascadeType.SAVE_UPDATE)
http://jbc-framework.blogspot.com.br/
Reimplementação de métodos
da classe br.com.jbc.controller.Controller
• Reimplementar o método inserir da classe controller de Usuário
– Criptografia de senha
• Criar pacote br.com.minicurso.projetoaula.util e copiar classe MD5.java do repositório
• Implementar o método de login
– Retornar o usuário logado
• Visualizar o exemplo de cadastro de venda no blog jbc
http://jbc-framework.blogspot.com.br/
Case de sucesso
• Até o momento dois projeto foram concluídos com os benefícios do framework, no qual otimizou o
processo de regra de negócio das aplicações:
• Elton Hadriel Paula: Trabalhei em um projeto web que utilizava o JBC framework, com isso ganhamos
agilidade em termo de consultas no banco de dados, não era mais necessário desenvolver toda a estrutura
de paginação, simplesmente me preocupava com a lógica de negócio da aplicação. Desta forma avisava
ao framework as entidades que devem ser consultada no banco de dados, e as consultas eram realizadas
com paginação.
• Jackeline Puschel: Trabalhei em um projeto Java desktop em que a utilização desta ferramenta foi
primordial para a agilidade e qualidade final do produto. Com a utilização do framework JBC o esforço de
horas gastas na camada de negócios é minimizado, o que possibilita um maior foco no funcionamento
geral de um sistema, por exemplo. Excelente solução, com certeza recomendo!
• Alison Diego H. Machado: Excelente framework para desenvolvimento de software de aplicações JAVA.
Permite uma maior flexibilização em questões de implementação de consultas básicas ao banco de dados.
Torna o processo mais ágil focando mais na parte lógica do sistema. Participei em um projeto para
desktop utilizando o JBC e me permitiu ter uma visão mais ampla no que se diz respeito a camada de
negócio.
http://jbc-framework.blogspot.com.br/
Obrigado!
http://jbc-framework.blogspot.com.br/
Rodrigo Leandro Marconato

Más contenido relacionado

La actualidad más candente

Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2rodrigoareis
 
JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com PrimefacesFabio Noth
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122Bruno Souza
 
Aferindo a qualidade do serviço com testes de desempenho - MVP Virtual Confer...
Aferindo a qualidade do serviço com testes de desempenho - MVP Virtual Confer...Aferindo a qualidade do serviço com testes de desempenho - MVP Virtual Confer...
Aferindo a qualidade do serviço com testes de desempenho - MVP Virtual Confer...Igor Abade
 
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E JpaDominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E JpaAna Albert
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaEduardo Bregaida
 
IBM Web Content Management - Melhores práticas
IBM Web Content Management - Melhores práticasIBM Web Content Management - Melhores práticas
IBM Web Content Management - Melhores práticasrodrigoareis
 
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfacesJSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfacesEder Magalhães
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
 
Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourcetdc-globalcode
 
Java 8 - A Evolução da Linguagem
Java 8 - A Evolução da LinguagemJava 8 - A Evolução da Linguagem
Java 8 - A Evolução da LinguagemPetronio Candido
 
Programação para Web II: Estrutura de um projeto Java Web
Programação para Web II: Estrutura de um projeto Java WebProgramação para Web II: Estrutura de um projeto Java Web
Programação para Web II: Estrutura de um projeto Java WebAlex Camargo
 
CakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro boloCakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro boloelliando dias
 
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Anderson Araújo
 
Java, NetBeans e Orientação a Objetos
Java, NetBeans e Orientação a ObjetosJava, NetBeans e Orientação a Objetos
Java, NetBeans e Orientação a ObjetosJoão Longo
 

La actualidad más candente (20)

Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2
 
JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com Primefaces
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
 
Aferindo a qualidade do serviço com testes de desempenho - MVP Virtual Confer...
Aferindo a qualidade do serviço com testes de desempenho - MVP Virtual Confer...Aferindo a qualidade do serviço com testes de desempenho - MVP Virtual Confer...
Aferindo a qualidade do serviço com testes de desempenho - MVP Virtual Confer...
 
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E JpaDominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.java
 
IBM Web Content Management - Melhores práticas
IBM Web Content Management - Melhores práticasIBM Web Content Management - Melhores práticas
IBM Web Content Management - Melhores práticas
 
GUJavaSC - Unit Testing com Java EE
GUJavaSC - Unit Testing com Java EEGUJavaSC - Unit Testing com Java EE
GUJavaSC - Unit Testing com Java EE
 
Tutorial Java EE
Tutorial Java EETutorial Java EE
Tutorial Java EE
 
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfacesJSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
 
Alm open source
Alm open sourceAlm open source
Alm open source
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSource
 
Java 8 - A Evolução da Linguagem
Java 8 - A Evolução da LinguagemJava 8 - A Evolução da Linguagem
Java 8 - A Evolução da Linguagem
 
Programação para Web II: Estrutura de um projeto Java Web
Programação para Web II: Estrutura de um projeto Java WebProgramação para Web II: Estrutura de um projeto Java Web
Programação para Web II: Estrutura de um projeto Java Web
 
CakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro boloCakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro bolo
 
GUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EEGUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EE
 
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Como escolher o Framework Java para web?
Como escolher o Framework Java para web?
 
Java, NetBeans e Orientação a Objetos
Java, NetBeans e Orientação a ObjetosJava, NetBeans e Orientação a Objetos
Java, NetBeans e Orientação a Objetos
 
MC - Java Enterprise Edition 6 (Java EE)
MC - Java Enterprise Edition 6 (Java EE)MC - Java Enterprise Edition 6 (Java EE)
MC - Java Enterprise Edition 6 (Java EE)
 

Destacado

Ganhar ou Perder Tempo: Descubra Como Usar as Tecnologias a Seu Favor
Ganhar ou Perder Tempo: Descubra Como Usar as Tecnologias a Seu FavorGanhar ou Perder Tempo: Descubra Como Usar as Tecnologias a Seu Favor
Ganhar ou Perder Tempo: Descubra Como Usar as Tecnologias a Seu FavorSerge Rehem
 
Desenvolvimento Web/Java com Framework Demoiselle
Desenvolvimento Web/Java com Framework DemoiselleDesenvolvimento Web/Java com Framework Demoiselle
Desenvolvimento Web/Java com Framework DemoiselleSerge Rehem
 
MVP Canvas: Protótipos Organizados, Negócios Acelerados
MVP Canvas: Protótipos Organizados, Negócios AceleradosMVP Canvas: Protótipos Organizados, Negócios Acelerados
MVP Canvas: Protótipos Organizados, Negócios AceleradosSerge Rehem
 
Micro-Lançamentos em 7 Passos
Micro-Lançamentos em 7 PassosMicro-Lançamentos em 7 Passos
Micro-Lançamentos em 7 PassosSerge Rehem
 
Empreendedorismo, Startups e Lançamentos Digitais
Empreendedorismo, Startups e Lançamentos DigitaisEmpreendedorismo, Startups e Lançamentos Digitais
Empreendedorismo, Startups e Lançamentos DigitaisSerge Rehem
 
O que uma Matryoshka me ensinou sobre Marketing Digital
O que uma Matryoshka me ensinou sobre Marketing Digital O que uma Matryoshka me ensinou sobre Marketing Digital
O que uma Matryoshka me ensinou sobre Marketing Digital Serge Rehem
 
Vendas SPIN: Perguntas que vendem CARO!
Vendas SPIN: Perguntas que vendem CARO!Vendas SPIN: Perguntas que vendem CARO!
Vendas SPIN: Perguntas que vendem CARO!Serge Rehem
 

Destacado (7)

Ganhar ou Perder Tempo: Descubra Como Usar as Tecnologias a Seu Favor
Ganhar ou Perder Tempo: Descubra Como Usar as Tecnologias a Seu FavorGanhar ou Perder Tempo: Descubra Como Usar as Tecnologias a Seu Favor
Ganhar ou Perder Tempo: Descubra Como Usar as Tecnologias a Seu Favor
 
Desenvolvimento Web/Java com Framework Demoiselle
Desenvolvimento Web/Java com Framework DemoiselleDesenvolvimento Web/Java com Framework Demoiselle
Desenvolvimento Web/Java com Framework Demoiselle
 
MVP Canvas: Protótipos Organizados, Negócios Acelerados
MVP Canvas: Protótipos Organizados, Negócios AceleradosMVP Canvas: Protótipos Organizados, Negócios Acelerados
MVP Canvas: Protótipos Organizados, Negócios Acelerados
 
Micro-Lançamentos em 7 Passos
Micro-Lançamentos em 7 PassosMicro-Lançamentos em 7 Passos
Micro-Lançamentos em 7 Passos
 
Empreendedorismo, Startups e Lançamentos Digitais
Empreendedorismo, Startups e Lançamentos DigitaisEmpreendedorismo, Startups e Lançamentos Digitais
Empreendedorismo, Startups e Lançamentos Digitais
 
O que uma Matryoshka me ensinou sobre Marketing Digital
O que uma Matryoshka me ensinou sobre Marketing Digital O que uma Matryoshka me ensinou sobre Marketing Digital
O que uma Matryoshka me ensinou sobre Marketing Digital
 
Vendas SPIN: Perguntas que vendem CARO!
Vendas SPIN: Perguntas que vendem CARO!Vendas SPIN: Perguntas que vendem CARO!
Vendas SPIN: Perguntas que vendem CARO!
 

Similar a Java Business Controller Framework

Palest"Tecnologias para Desenvolvimento Baseado em Componentes"
Palest"Tecnologias para Desenvolvimento Baseado em Componentes"Palest"Tecnologias para Desenvolvimento Baseado em Componentes"
Palest"Tecnologias para Desenvolvimento Baseado em Componentes"sbcars
 
Padrões de Projeto J2EE para Aplicações Web
Padrões de Projeto J2EE para Aplicações WebPadrões de Projeto J2EE para Aplicações Web
Padrões de Projeto J2EE para Aplicações WebDenis L Presciliano
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysDr. Spock
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Eric Gallardo
 
Desenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFDesenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFEmmanuel Neri
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosThiago Soares
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptxCarlos Gonzaga
 
Slide 02 introdução ao code igniter, utilização do bootstrap
Slide 02   introdução ao code igniter, utilização do bootstrap Slide 02   introdução ao code igniter, utilização do bootstrap
Slide 02 introdução ao code igniter, utilização do bootstrap Raniere de Lima
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaAlexandre Tarifa
 
Java CDI: Usando Java CDI em projetos Jakarta EE ou Microprofile
Java CDI: Usando Java CDI em projetos Jakarta EE ou MicroprofileJava CDI: Usando Java CDI em projetos Jakarta EE ou Microprofile
Java CDI: Usando Java CDI em projetos Jakarta EE ou MicroprofileVictor Osorio
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosRodolfo Fadino Junior
 
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como CódigoCurso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como CódigoGuilhermeJorgeAragod
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Adriano Teixeira de Souza
 
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?tdc-globalcode
 

Similar a Java Business Controller Framework (20)

Palest"Tecnologias para Desenvolvimento Baseado em Componentes"
Palest"Tecnologias para Desenvolvimento Baseado em Componentes"Palest"Tecnologias para Desenvolvimento Baseado em Componentes"
Palest"Tecnologias para Desenvolvimento Baseado em Componentes"
 
Padrões de Projeto J2EE para Aplicações Web
Padrões de Projeto J2EE para Aplicações WebPadrões de Projeto J2EE para Aplicações Web
Padrões de Projeto J2EE para Aplicações Web
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToys
 
W2py pyconpe
W2py pyconpeW2py pyconpe
W2py pyconpe
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
 
Desenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFDesenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSF
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãos
 
Cake PHP
Cake PHPCake PHP
Cake PHP
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
Palestra ASP.NET MVC
Palestra ASP.NET MVCPalestra ASP.NET MVC
Palestra ASP.NET MVC
 
Slide 02 introdução ao code igniter, utilização do bootstrap
Slide 02   introdução ao code igniter, utilização do bootstrap Slide 02   introdução ao code igniter, utilização do bootstrap
Slide 02 introdução ao code igniter, utilização do bootstrap
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
Java CDI: Usando Java CDI em projetos Jakarta EE ou Microprofile
Java CDI: Usando Java CDI em projetos Jakarta EE ou MicroprofileJava CDI: Usando Java CDI em projetos Jakarta EE ou Microprofile
Java CDI: Usando Java CDI em projetos Jakarta EE ou Microprofile
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São Carlos
 
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como CódigoCurso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Introdução a jsf
Introdução a jsfIntrodução a jsf
Introdução a jsf
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
 
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
TDC 2013 SP | Arquitetura Java: Preciso de um Framework, mas qual usar?
 

Java Business Controller Framework

  • 1. Java Business Controller Framework de controle da camada de negócio para projetos em Java Rodrigo Leandro Marconato
  • 2. Apresentação • Rodrigo Leandro Marconato; • Analista de sistemas na empresa B3 Informática desde 2009 • PTI – Parque Tecnológico de Itaipu • Bacharel em Sistemas de Informação pela UDC • Pós-Graduado em Administração e desenvolvimento de Banco de dados pela UTFPR – Campus de Medianeira • Sete anos de experiência em desenvolvimento de sistemas Java, utilizando plataformas Desktop, Web e Mobile. • Sólida vivência em gerenciamento e coordenação de projetos. • Blog JBC: http://jbc-framework.blogspot.com.br/ • Auxiliado pelo Analista de sistemas Alison Diego Harka Machado
  • 3. Cronograma • Introdução • O que é JBC? • Como usar JBC • Recursos utilizados • Requisitos para implementação • O que o JBC faz? • JavaDoc • JBC na prática • Reimplementação de métodos da classe br.com.jbc.Controller • Suporte para leitura de arquivo de propriedade hibernate. • Case de sucesso http://jbc-framework.blogspot.com.br/
  • 4. Introdução • Sistemas N-Camadas - No princípio do desenvolvimento de sistemas quando os aplicativos eram executados em computadores de grande porte, era comum encontrar todas as funcionalidades em uma única grande camado, a manutenção deste código era muito complexa. Este código era chamda de “Código Monolítico”. http://jbc-framework.blogspot.com.br/
  • 5. Introdução • Com o objetivo de poder utilizar vários aplicativos e uma única base de dados, a arquitetura evoluiu para uma arquitetura de duas camadas, também conhecida como cliente/servidor, onde passou a existir uma camada única para armazenar regra de negócio para acesso a base de dados. Esta camada podia ser utilizada por muitos aplicativos e facilmente trocada em caso de troca de banco de dados. http://jbc-framework.blogspot.com.br/
  • 6. Introdução • Com o pasar do tempo a arquitetura de duas camadas começou a ser insuficiente, pois a lógica de negócio e de apresentação estavam reunidas em uma única camada. Em seguida surge a Internet, neste cenário a lógica de negócio era executada no cliente, sendo inviável o tempo de espera para atualizar o aplicativo. http://jbc-framework.blogspot.com.br/
  • 7. Introdução • A separação das três camadas torna o aplicativo mais flexível, pois as camadas podem ser alteradas independentemente, de modo que as outras camadas não sofram nenhuma alteração. http://jbc-framework.blogspot.com.br/
  • 8. O que é o JBC? • É um framework de controle da camada de negócio para projetos desenvolvidos em Java. http://jbc-framework.blogspot.com.br/
  • 9. O que é o JBC? • Seu principal objetivo é otimizar o tempo de desenvolvimento que é usado para projetar códigos repetitivos, que por sua vez são muito frequentes quando se trata de controle de transação e persistência em banco de dados. http://jbc-framework.blogspot.com.br/ Camada de visualização Controller ou Transaction – Mantem controle de transação Facade – Disponibiliza uma interface simplificada Dao – Data Access Object Banco de dados
  • 10. Recursos utilizados no JBC • Java – Uma das mais populares linguagens de programação da atualidade • Orientação a objeto; • Distribuída; • Polimorfismo; • Entre outros... • Hibernate – Framework de persistência Java • Mapeamento das classes no banco de dados relacional; • Annotations – Permite mapeamento ORM (Object-relational-mapping) sem utilizar XML; • Persistência de forma transparente; • Entre outros... http://jbc-framework.blogspot.com.br/
  • 11. Comparação • Modelo tradicional • Modelo JBC http://jbc-framework.blogspot.com.br/
  • 12. Aplicação do modelo tradicional • Bean http://jbc-framework.blogspot.com.br/
  • 13. Aplicação do modelo tradicional • DAO http://jbc-framework.blogspot.com.br/
  • 14. Aplicação do modelo tradicional • Facade http://jbc-framework.blogspot.com.br/
  • 15. Aplicação do modelo tradicional • Controller http://jbc-framework.blogspot.com.br/
  • 16. Aplicação do modelo tradicional • View http://jbc-framework.blogspot.com.br/
  • 17. Aplicação do modelo JBC • VIEW http://jbc-framework.blogspot.com.br/
  • 18. Conclusão • Para desenvolver um sistema completo, necessitamos de uma infinidade de operações de transação e consulta na camada de negócio, então imagine ter que desenvolver todas estas operações para cada entidade do seu negócio. • A ideia do JBC foi generalizar todas essas operações através de um Framework que desse suporte para todo e qualquer tipo de negócio, indiferente de funcionalidades e regras, deixando com que o desenvolvedor dedique a maior parte de seu tempo com o desenvolvimento da camada de visualização, implementação que requer mais atenção e que tem grande variedade entre um sistema e outro. • Download dos modelos tradicional e JBC podem ser baixados no repositório github https://github.com/marconato/jbc-framework/tree/master/sample ou ainda através do blog JBC http://jbc-framework.blogspot.com.br/p/como-usar.html http://jbc-framework.blogspot.com.br/
  • 19. Recursos utilizados • Java • Generics – A programação genérica é uma característica muito importante que foi adicionada no Java 5. http://jbc-framework.blogspot.com.br/
  • 20. Recursos utilizados • Java • Reflection – Presente no Java desde a versão 1.1, permite um programa Java olhar e examinar suas propriedades e estrutura. Com isso, você pode, por exemplo obter o nome de todos os membros de uma classe, como atributos e métodos, bem como executar um método: http://jbc-framework.blogspot.com.br/
  • 21. Recursos utilizados • Hibernate • Conexão com o banco de dados – Credenciais são informadas através de um arquivo de configuração: • hibernate.dialect = org.hibernate.dialect.MySQLDialect • hibernate.connection.driver_class = com.mysql.jdbc.Driver • hibernate.connection.url = jdbc:mysql://localhost:3306/nomedabasededados • hibernate.connection.username = root • hibernate.connection. password = password • Annotations – Permite mapeamento ORM sem utilizar XML; • HQL – Hibernate Query Language – Similar a SQL, porém é orientada a objetos, suportando recursos como: • Herança • Polimorfismo • Associações • Entre outros... http://jbc-framework.blogspot.com.br/
  • 22. Recursos utilizados • Hibernate • Criteria - O Criteria Query API permite construir expressão query em Java, possibilitando, assim, a checagem em tempo de compilação. O Criteria API permite, de forma programática, construir objetos a partir da interface org.hibernate.Criteria • Para persistir um objeto da classe, usamos o método createCriteria() da interface Session, que retorna um objeto Criteria, que permite ter acesso a instância de persistência da classe. • Utiliza as APIs org.hibernate.Criteria e org.hibernate.criterion.Restrinctions http://jbc-framework.blogspot.com.br/
  • 23. Recursos utilizados • Hibernate • Restriction – No Criteria através da desta API, temos métodos que nos ajudam na implementação das operações simples: • gt() = maior que • ge() = maior ou igual que • lt() = menor que • le() = menor ou igual que http://jbc-framework.blogspot.com.br/
  • 24. Requisitos para implementação • Utilizar a versão 3 do Hibernate em sua aplicação, pois esta é a versão utilizada no JBC; • O arquivo de configuração Hiberante (hibernate.cfg.xml) deve ser colocado na raiz do projeto; • A chave primária de todas as entidades deve se chamar “id”, sendo indiferente o tipo de dados. Esta regra é necessária pois o JBC trabalha com reflection, e em determinados pontos, como para adicionar Restrições no Criteria, o JBC se baseia que a chave primária de todas as entidades sempre será “id”. • Os atributos que representam relacionamentos, como Many-To-One e One- To-Many, tem que ter o mesmo nome da classe que implementa. Por exemplo: • Para a declaração do atributo do tipo Cidade dentro de Pessoa, deve ser declarado de uma das seguintes maneiras: – Cidade cidade; – CidadeVO cidadeVO; – CidadeEntity cidadeEntity; • O importante é que sempre o nome do atributo seja igual ao nome da classe, e SEMPRE COM A PRIMEIRA LETRA EM MINÚSCULA. • Reforçando que isto é necessário que o JBC saiba lidar com as Restrições adicionadas ao Criteria. http://jbc-framework.blogspot.com.br/
  • 25. O que o JBC faz? • Controle de transação; – Commit; – Rollback; • Consultas HQL; • Busca paginada; http://jbc-framework.blogspot.com.br/
  • 26. Consulta HQL • Permite consultas HQL através da API br.com.jbc.controller.Controller http://jbc-framework.blogspot.com.br/ http://jbc-framework.blogspot.com.br/2012/10/consulta-hql.html
  • 27. Busca paginada • A classe br.com.jbc.controller.Controller tem um método de busca paginada com a seguinte assinatura: – filter: Objeto Bean/VO contendo os filtros de consulta populados em seus atributos. Este atributo é genérico, e será definido na instância da classe br.com.jbc.controller.Controller – firstResult: Número da página que a consulta irá mostrar os resultados; – maxResult: Número de registros por página; – sortField: Nome do atributo da entidade que será ordenado, aqui será passado o nome do atributo em formato String; – orderByType: Tipo de ordenação da Lista, os valores devem ser br.com.jbc.controller.Controller.ORDER_ASC ou br.com.jbc.controller.Controller.ORDER_DESC • O método retorna um objeto br.com.jbc.util.SearchPaginate, que contém a lista de registros paginada e a quantidade de registros total da consulta http://jbc-framework.blogspot.com.br/
  • 28. JavaDoc JBC • Documentação da API para consultar as interfaces de acesso do framework – Jbc.orgfree.com http://jbc-framework.blogspot.com.br/
  • 30. JBC na prática • Netbeans IDE • Banco de dados MySQL – Pacote WampServer • http://www.wampserver.com/ – Criar a base de dados através do phpMyAdmin • Baixar JBC do repositório: – https://github.com/marconato/jbc-framework/ • Adicionar o JBC no Netbeans – Menu: Ferramentas/bibliotecas Ant/ • Nova biblioteca • Adicionar .jar no classpath • Adicionar javaDoc na biblioteca http://jbc-framework.blogspot.com.br/
  • 31. JBC na prática • Criar novo projeto Java – Menu: Novo projeto/Java/Aplicativo Java • Incluir bibliotecas – JBC – Hibernate – Persistence – Driver JDBC do MySQL • Criar arquivo Hibernate de configuração – Menu: Novo/Outro/Hibernate/Assistente para configuração de Hibernate – Informar conexão com banco de dados MySql – Adicionar Propriedades variadas: • Hibernate.hbm2ddl.auto = update • Criar o pacote de código fonte – br.com.minicuro.projetoaula http://jbc-framework.blogspot.com.br/
  • 32. JBC na prática • Criar classe Perfil no pacote br.com.minicuro.projetoaula http://jbc-framework.blogspot.com.br/
  • 33. JBC na prática • Realizar o mapeamento hbm na classe Perfil http://jbc-framework.blogspot.com.br/
  • 34. JBC na prática • Adicionar o Mapeamento no arquivo de configuração Hibernate http://jbc-framework.blogspot.com.br/
  • 35. JBC na prática • Criar classe Main • Criar instancia da classe br.com.jbc.controller.Controller • Criar instancia da classe perfil • Invocar método insert da classe controller http://jbc-framework.blogspot.com.br/
  • 36. Exercício 1 • Criar um novo projeto, que será o sistema console; • Importar o projeto de negócio • Implementar as operções na classe Perfil; – Inserir – Listar – Atualizar – Deletar http://jbc-framework.blogspot.com.br/
  • 37. Exercício 2 • Implementar a classe Usuário – Usuario.java – Anotações hbm para o relacionamento perfil • @ManyToOne(fetch = FetchType.EAGER) • @JoinColumn(name = "PERFIL_ID", nullable = false) • @Fetch(FetchMode.JOIN) • @Cascade(CascadeType.SAVE_UPDATE) http://jbc-framework.blogspot.com.br/
  • 38. Reimplementação de métodos da classe br.com.jbc.controller.Controller • Reimplementar o método inserir da classe controller de Usuário – Criptografia de senha • Criar pacote br.com.minicurso.projetoaula.util e copiar classe MD5.java do repositório • Implementar o método de login – Retornar o usuário logado • Visualizar o exemplo de cadastro de venda no blog jbc http://jbc-framework.blogspot.com.br/
  • 39. Case de sucesso • Até o momento dois projeto foram concluídos com os benefícios do framework, no qual otimizou o processo de regra de negócio das aplicações: • Elton Hadriel Paula: Trabalhei em um projeto web que utilizava o JBC framework, com isso ganhamos agilidade em termo de consultas no banco de dados, não era mais necessário desenvolver toda a estrutura de paginação, simplesmente me preocupava com a lógica de negócio da aplicação. Desta forma avisava ao framework as entidades que devem ser consultada no banco de dados, e as consultas eram realizadas com paginação. • Jackeline Puschel: Trabalhei em um projeto Java desktop em que a utilização desta ferramenta foi primordial para a agilidade e qualidade final do produto. Com a utilização do framework JBC o esforço de horas gastas na camada de negócios é minimizado, o que possibilita um maior foco no funcionamento geral de um sistema, por exemplo. Excelente solução, com certeza recomendo! • Alison Diego H. Machado: Excelente framework para desenvolvimento de software de aplicações JAVA. Permite uma maior flexibilização em questões de implementação de consultas básicas ao banco de dados. Torna o processo mais ágil focando mais na parte lógica do sistema. Participei em um projeto para desktop utilizando o JBC e me permitiu ter uma visão mais ampla no que se diz respeito a camada de negócio. http://jbc-framework.blogspot.com.br/