framework jgenesis
DESCRIPTION
Apresentação realizada pela Cleidimar Vieira no encontro #tasafoemacao #misturado no auditório do CESUPA no dia 14 de Outubro de 2010TRANSCRIPT
14/10/2010 Cleidimar Vieira – Framework JGenesis 1
JGenesis – Aplicações Java/Swing Fácil e Rápido
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 MouraEquipe 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 9
Integração com outros softwares
Log4JC3P0
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 14
O que é preciso para usar?
14/10/2010 Cleidimar Vieira – Framework JGenesis 15
14/10/2010 Cleidimar Vieira – Framework JGenesis 16
14/10/2010 Cleidimar Vieira – Framework JGenesis 17
14/10/2010 Cleidimar Vieira – Framework JGenesis 18
Componentes no Servidor
CAMADA MODELOJgenesisDAO – interface de acesso a dados, encapsula CRUD;BasicHibernateDAO - Impl. JGenesisDAO, utiliza o Hibernate;BasicJdbcDAO - Impl. JGenesisDAO, utiliza o JDBC; CAMADA CONTROLEJgenesisBO 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 - SimpleBOMé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ÃOPersistentBD - 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 ObjectServidorModelo
Bussiness DelegateClienteVisão
Bussiness ObjectServidorControle
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 24
Componentes Swing
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âmetroscomo nome e parâmetros;
14/10/2010 Cleidimar Vieira – Framework JGenesis 26