14/10/2010 Cleidimar Vieira – Framework JGenesis 2
Introdução
O uso de frameworks em software é a saída mais
lucrativa para desenvolvedores e empresas.
Tudo para ontem, gastando pouco, equipe pequena e sistema
tem que funcionar.
14/10/2010 Cleidimar Vieira – Framework JGenesis 3
Roteiro
• Tudo começou...
• O que é?
• Nossa aplicação
• Integração com outros frameworks
• Integração com outros softwares
• Vantagens de usar
• O que é preciso para usar?
• Componentes (Servidor, Cliente e Swing)
• NamedQueries
14/10/2010 Cleidimar Vieira – Framework JGenesis 4
Tudo começou...
Idealizador: Marcos Aurélio Mendes Moura
Equipe de desenvolvimento: Fabrício Barroso de Carvalho e Regis Pires
Magalhães
Equipe Técnica: Cledson Santos, Cleidmar Vieira, Diogo Emílio,
Leandro Henrriques, Marcelo Giovani, Michell Jaim, Luis Renato
Desafios: Agradar a empresa e a equipe técnica.
14/10/2010 Cleidimar Vieira – Framework JGenesis 5
O que é?
É uma framework que provê uma arquitetura genérica de
desenvolvimento de aplicações corporativas de alta-
escalabilidade, cliente/servidor, com padrão MVC.
Desenvolvida em Java, seu foco principal, hoje, é o
Desktop, mas pode ser utilizada em WEB.
Open-source e free.
14/10/2010 Cleidimar Vieira – Framework JGenesis 6
Nossa aplicação
• 259 classes no BO (186 BasicBOImpl e 69 SimpleBOImpl)
• 23 interfaces no DAO
• 10 classes concretas DAO ORM
• 19 classes concretas DAO JDBC
• 403 classes no GUI
• 168 classes no factory de relatórios
• 635 classes jasper
• 232 classes bean
• 9 classes bean “mãe” e 28 subclasses
• 20 sistemas desenvolvidos
14/10/2010 Cleidimar Vieira – Framework JGenesis 7
Nossa aplicação
• Estados do Pará, Piauí, Maranhão, Manaus, São Paulo;
• Empresas: Armaém Paraíba (Socic e Metidieri) e Lojas
Rianil, Louvre Magazine, Rápido London, Cartão CredShop;
• Comunicação via frame-relay, rádio, internet;
• Sistema híbrido ( ZIM e Java );
14/10/2010 Cleidimar Vieira – Framework JGenesis 8
Integração com outros frameworks
Container com diversos serviços:
Padrão de Projeto Inversion-of-Control(IoC) /
Dependency Injection;
Controle de Transaction;
Acesso remoto;
O objetivo do Hibernate é diminuir a complexidade entre
os programas Java, baseado no modelo orientado a
objeto, que precisam trabalhar com um banco de dados
do modelo relacional.
O JGenesis provê a implementação básica para a
camada de acesso a dados (DAO) através do Hibernate.
JPA Uso de Annotations
14/10/2010 Cleidimar Vieira – Framework JGenesis 10
Vantagens de usar
É open-source e “De grátis”;
Todas as vantagens do Java;
Suporta vários bancos de dados;
Configurações em arquivos xml;
Provê um pool de conexões;
Arquitetura Client/Server (3-tier); ( RMI, Hessian ou HTTP )
Uso Design Pattern BD, DAO e BO ( MVC );
Vários componentes Swing ( automatizados );
14/10/2010 Cleidimar Vieira – Framework JGenesis 11
Vantagens de usar
Equipe de desenvolvimento focada. ( não na infra-estrutura
por trás do desenvolvimento);
Reduz esforços de codificação;
Aumenta a produtividade;
Reduz a possibilidade de erros;
Torna a arquitetura da aplicação homogênea, facilitando sua
manutenção.
14/10/2010 Cleidimar Vieira – Framework JGenesis 12
O que é preciso para usar?
Conhecimento em OO, Java, Annotation ou xml,
Design Pattern;
Conhecer o JGenesis;
Configurar os arquivos xml especfíficos:
jgenesis.xml, jgenesis-bo.xml e hibernate.cfg.xml;
Acoplar o módulo ao NetBeans;
Ter um banco de dados;
14/10/2010 Cleidimar Vieira – Framework JGenesis 13
O que é preciso para usar?
Bibliotecas dos “parceiros”;
jgenesis.xml - Declara os (data sources), as fábricas de sessões
(hibernate), os DAOs e o query loader (data sources de queries).
jgenesis-bo.xml - Declara os BOs e alguns parâmetros para a
comunicação remota (RMI ou HTTP).
hibernate.cfg.xml - Configuração da fábrica de sessão e
arquivos de mapemento dos Beans ( xml ou annotation )
log4j.properties – Configuração da propriedades da API de
logging Log4j,
14/10/2010 Cleidimar Vieira – Framework JGenesis 18
Componentes no Servidor
CAMADA MODELO
JgenesisDAO – interface de acesso a dados, encapsula CRUD;
BasicHibernateDAO - Impl. JGenesisDAO, utiliza o Hibernate;
BasicJdbcDAO - Impl. JGenesisDAO, utiliza o JDBC;
CAMADA CONTROLE
JgenesisBO e SimpleBO - Interfaces para a lógica de negócio;
SimpleBOImpl – Impl. SimpleBO (métodos doRequest e
doAction);
BasicBOImpl - Impl. JGenesisBO com o básico que um BO
deve oferecer (actions save, update, delete, find );
14/10/2010 Cleidimar Vieira – Framework JGenesis 19
Componentes no Servidor
CAMADA CONTROLE - SimpleBO
Método doRequest – é o início do tráfego cliente/BO.
JGRequest – Objeto que transmite informações do cliente que
serão usada no BO;
JGResponse – Objeto usado para transportar as informações
do BO para o cliente;
Método doAction – Semelhante do doRequest, porém pode ser
usado no BO;
JGContext – Contêiner de objetos e parâmetros em qualquer
ponto do BO;
InfoBO - Interface com métodos com informações do servidor;
InfoBOImpl - Impl. InfoBO;
14/10/2010 Cleidimar Vieira – Framework JGenesis 20
Componentes no Cliente
CAMADA VISÃO
PersistentBD - Impl. padrão Business Delegate, utilizado pelo
cliente para invocar métodos (que podem ser, inclusive,
remotos)do BO;
BeanWrapper -Pode ser usado tanto no cliente como no
servidor. Encapsula o bean
14/10/2010 Cleidimar Vieira – Framework JGenesis 21
BD
BeanManager
Data Access Object
Servidor
Modelo
Bussiness Delegate
Cliente
Visão
Bussiness Object
Servidor
Controle
DAO BO
14/10/2010 Cleidimar Vieira – Framework JGenesis 22
Componentes Swing
BeanManager - Responsável por gerenciar objetos de uma
classe persistente, em outras palavras, de um Bean. Ele aciona
a lógica de negócio (JGenesisBO) através do PersistentBD;
É o elo principal entre as camadas do processo;
É atributo essencial aos componentes Swing;
Está associado a um bean;
Pode estar associado ao um BO ( senão pega o default );
Através do JGBeanNavigator aciona as actions do BO.
14/10/2010 Cleidimar Vieira – Framework JGenesis 23
Componentes Swing
JGBeanNavigator - Barra de ferramentas para gerir o bean;
JGButtonPanel – Botões variados;
BeanSetTableManager - Responsável por gerenciar objetos
uma tabela (JTable) de beans;
JGStatusBar - Uma barra de status que exibe o Tooltip do
componente em foco no formulário, e uma barra de progresso.
JGFindBean - Jjanela de buscas;
JGFindButton - Invoca uma janela de consulta JGFindBean;
JGFindTextField - Consulta por um atributo do bean;
JGTextField e "sua turma mascarada" - São caixa de texto;
(JGMaskTextField, JGNumberTextField, JGDateTextField)
JGComboBox e JGLookupComboBox – Combobox;
JGOptionPane – Janelas de diálogos;
14/10/2010 Cleidimar Vieira – Framework JGenesis 25
Named queries
Declaração de um query loader no jgenesis-bo.xml;
Queries no banco de dados através do FqueryMain;
Chamada a query do banco através de parâmetros
como nome e parâmetros;