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/
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/