Este documento descreve as características dos entity beans com persistência gerenciada pelo container (CMP) em EJB. Em três frases: (1) CMP permite que o programador se concentre apenas na lógica de negócios, sem ter que lidar diretamente com a persistência; (2) O container gera automaticamente o código para realizar operações de banco de dados, como criação de tabelas e implementação de métodos de acesso; (3) As consultas aos dados são feitas através da linguagem EJB-QL, mapeada pelo container para SQL.
Este documento descreve uma aplicação J2EE completa como exemplo para um laboratório sobre EJB e J2EE. A aplicação simula uma loja online simples com relacionamentos entre entidades como Produto, Cliente e Compra. Inclui entity beans, session beans, message-driven beans, tabelas no banco de dados, interfaces, deploy e testes de clientes.
O documento resume os principais conceitos de EJB, incluindo: 1) EJB são componentes padrão do lado do servidor para aplicações distribuídas e escaláveis; 2) Bean de Entidade usam JPA para mapear classes para tabelas de banco de dados; 3) Session Beans podem ser stateless, stateful ou MDBs e fornecem serviços para aplicações.
O documento fornece um resumo sobre JDBC (Java Database Connectivity), descrevendo suas principais características como uma interface baseada em Java para acesso a bancos de dados através de SQL e apresentando conceitos como DriverManager, Connection, Statement, ResultSet e transações.
O documento discute coleções em Java, abordando tópicos como vetores, listas, conjuntos, mapas, iteradores e classes relacionadas. É apresentada a interface Collection e suas subclasses principais (List e Set), com exemplos de implementações como ArrayList, LinkedList, HashSet e HashMap.
Este documento fornece uma introdução aos principais componentes e conceitos dos Enterprise JavaBeans (EJB), incluindo:
1) Os componentes necessários para implantar um EJB corretamente são uma classe bean, interfaces, descritor de implantação.
2) As classes bean implementam a lógica de negócios e podem acessar o contexto do EJB através da interface EJBContext.
3) Os interceptadores EJBObject e EJBHome gerados pelo container permitem acesso remoto e local aos beans e implementam serviços do EJB.
O documento descreve como recuperar parâmetros de formulários em Servlets utilizando o método getParameter() e como passar valores de Servlets para JSPs utilizando o método setAttribute(). É explicado como recuperar valores de campos do tipo checkbox como arrays e como utilizar RequestDispatcher para repassar o fluxo da requisição e resposta para uma JSP.
O documento descreve o desenvolvimento de um sistema de login web simples utilizando arquitetura MVC. Ele inclui instruções para criar a estrutura do projeto, modelagem de dados, classes de modelo, camada de acesso a dados e separação em pacotes.
Este documento descreve uma aplicação J2EE completa como exemplo para um laboratório sobre EJB e J2EE. A aplicação simula uma loja online simples com relacionamentos entre entidades como Produto, Cliente e Compra. Inclui entity beans, session beans, message-driven beans, tabelas no banco de dados, interfaces, deploy e testes de clientes.
O documento resume os principais conceitos de EJB, incluindo: 1) EJB são componentes padrão do lado do servidor para aplicações distribuídas e escaláveis; 2) Bean de Entidade usam JPA para mapear classes para tabelas de banco de dados; 3) Session Beans podem ser stateless, stateful ou MDBs e fornecem serviços para aplicações.
O documento fornece um resumo sobre JDBC (Java Database Connectivity), descrevendo suas principais características como uma interface baseada em Java para acesso a bancos de dados através de SQL e apresentando conceitos como DriverManager, Connection, Statement, ResultSet e transações.
O documento discute coleções em Java, abordando tópicos como vetores, listas, conjuntos, mapas, iteradores e classes relacionadas. É apresentada a interface Collection e suas subclasses principais (List e Set), com exemplos de implementações como ArrayList, LinkedList, HashSet e HashMap.
Este documento fornece uma introdução aos principais componentes e conceitos dos Enterprise JavaBeans (EJB), incluindo:
1) Os componentes necessários para implantar um EJB corretamente são uma classe bean, interfaces, descritor de implantação.
2) As classes bean implementam a lógica de negócios e podem acessar o contexto do EJB através da interface EJBContext.
3) Os interceptadores EJBObject e EJBHome gerados pelo container permitem acesso remoto e local aos beans e implementam serviços do EJB.
O documento descreve como recuperar parâmetros de formulários em Servlets utilizando o método getParameter() e como passar valores de Servlets para JSPs utilizando o método setAttribute(). É explicado como recuperar valores de campos do tipo checkbox como arrays e como utilizar RequestDispatcher para repassar o fluxo da requisição e resposta para uma JSP.
O documento descreve o desenvolvimento de um sistema de login web simples utilizando arquitetura MVC. Ele inclui instruções para criar a estrutura do projeto, modelagem de dados, classes de modelo, camada de acesso a dados e separação em pacotes.
1) O documento apresenta o Java Persistence API (JPA) e como mapear classes de entidade para tabelas no banco de dados usando anotações. 2) É mostrado como fazer operações básicas como inclusão, alteração, exclusão e consulta de registros usando testes unitários com JUnit. 3) Também são demonstrados relacionamentos entre classes como herança, many-to-one e consultas.
O documento descreve os conceitos de Stateful Session Beans no Java EE, incluindo: 1) Stateful Session Beans mantêm estado entre chamadas de método através de ativação e passivação; 2) Métodos como ejbCreate(), ejbRemove(), ejbPassivate() e ejbActivate() são implementados; 3) O ciclo de vida de um Stateful Session Bean é gerenciado pelo container.
O documento introduz a ferramenta Apache Ant, que é usada para gerenciar projetos Java de forma automatizada através de arquivos XML. Ant permite compilar, empacotar, testar e implantar aplicações de forma independente de IDEs. Ele executa tarefas como compilação, geração de documentação e empacotamento usando roteiros definidos em arquivos XML chamados buildfiles.
Este documento fornece uma introdução ao framework Cactus, que permite testar componentes J2EE no próprio container do servidor. Resume as principais funcionalidades do Cactus em 3 frases:
Cactus estende o JUnit para permitir testar a integração de aplicações J2EE como servlets, JSPs e EJBs com o container do servidor, executando os testes simultaneamente no cliente e no servidor. Ele simula requisições HTTP para testar a funcionalidade dos componentes e verificar se os dados são processados corretamente. Cactus permite
Este documento fornece um resumo sobre WebServlets de acordo com a especificação Java EE 7. Ele contém informações sobre aplicações Web, WebServlets, requisições e respostas HTTP, URLs e redirecionamento, contexto da aplicação, sessão do cliente, filtros interceptadores e arquitetura MVC.
Este documento fornece um resumo das principais mudanças introduzidas na versão 7 do PHP. Em três frases ou menos:
1) Apresenta quebras de compatibilidade e novos recursos como operadores, tipagem escalar, classes anônimas e palavras-chave. 2) Descreve melhorias internas como árvore de sintaxe abstrata, suporte a 64 bits, gerenciamento de memória e desempenho. 3) Menciona o roadmap do PHP.NEXT para evoluir ainda mais a linguagem.
Aqui são apresentados conceitos básicos sobre o paradigma web. Simples e rápido.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
Este documento resume um estudo sobre a programação de componentes definidos pelo usuário no Jason. Discute-se como estender as capacidades dos agentes implementados no Jason através de ações internas e personalização de classes. Apresenta exemplos de como definir novas ações internas em Java e como customizar a classe Agent para alterar o comportamento de seleção de eventos, intenções e mensagens.
Java orientação a objetos (variaveis de instancia e metodos)Armando Daniel
O documento descreve os conceitos de variáveis de instância e métodos em Java. Explica que variáveis de instância armazenam dados específicos de cada objeto e são criadas quando um objeto é instanciado. Também descreve que métodos representam o comportamento de uma classe e podem receber parâmetros, retornar valores e acessar variáveis de instância.
Este documento apresenta os principais conceitos sobre servlets Java e formulários HTML. [1] Apresenta a classe HttpServlet e seus métodos como doGet e doPost. [2] Mostra como mapear URLs para servlets no arquivo web.xml e como receber dados via requisição GET ou POST. [3] Explica os principais elementos de formulário como inputs, textareas, selects e como usá-los.
1. JSP é convertida para Servlet que é compilado e carregado para aguardar requisições.
2. A primeira requisição a uma página JSP é mais lenta, mas subsequentemente o processo é mais rápido se o código não foi alterado.
3. Uma página JSP passa por fases de tradução, compilação, carga, instanciação e execução do método _jspService() a cada requisição.
(1) O documento apresenta uma introdução à linguagem Java, abordando sua história, características da plataforma e fundamentos da linguagem como variáveis, operadores e estruturas condicionais;
(2) São apresentados conceitos como tipos primitivos, declaração de classes e variáveis, operadores unários, incremento/decremento e representação de sinal;
(3) O documento também explica conceitos importantes como escopo de variáveis e realiza um exercício prático para fixação dos conceitos apresentados.
Este documento resume os principais tópicos da especificação Java EE 6, incluindo novidades como JAX-RS, CDI e Bean Validation, além de detalhar conceitos como mapeamento de entidades JPA, tipos de relacionamentos, estratégias de herança e cache.
O documento descreve o I Encontro do PHPSP sobre o framework Zend. Ele apresenta os objetivos do encontro que são discutir a arquitetura e componentes do Zend Framework e boas práticas de desenvolvimento. Também resume os principais conceitos e componentes do framework como MVC, models, views, controllers, autenticação e autorização.
Este documento apresenta um curso sobre testes automatizados, abordando testes unitários, de integração e funcionais. A unidade III discute testes de integração com ênfase em TestNG, Mockito, testes com banco de dados usando DBUnit e Seam.
1) O documento apresenta os detalhes de uma aula sobre programação orientada a objetos com Java, incluindo avaliação, conteúdo da prova e agenda.
2) A agenda inclui tópicos como operador ternário, enums, varargs, autoboxing/unboxing, definindo e sobrecarregando construtores e uso do método this.
3) Exemplos de código são fornecidos para ilustrar esses tópicos.
1) O documento discute como realizar consultas no banco de dados usando o framework Hibernate. 2) Existem três maneiras de fazer consultas no Hibernate: HQL, Critérios e SQL nativo. 3) Vários exemplos de consultas HQL são apresentados, incluindo parâmetros, joins, funções agregadas e consultas nomeadas.
Este documento discute relacionamentos entre objetos em aplicações Java usando Enterprise JavaBeans (EJB). Apresenta os conceitos de cardinalidade, direção e visibilidade de relacionamentos, e exemplifica a implementação de relacionamentos um-para-um entre entidades em EJB usando tanto o modelo de persistência por campo (BMP) quanto o modelo de persistência por coluna (CMP).
O documento discute estratégias de mapeamento de herança em frameworks ORM, incluindo single table, joined e table per class. Ele também cobre callbacks e caches no JPA.
Las reglas de netiqueta tratan de regular la conducta de los usuarios en internet para que sean educados y respetuosos. Algunas de las reglas principales incluyen tratar a los demás con respeto, ser razonable y ético para no afectar a otros, y ser conscientes de los límites de lo permitido en cada sitio o chat.
O documento discute objetos distribuídos em Java, abordando tecnologias como Enterprise JavaBeans, Java RMI, RMI-IIOP e CORBA. Apresenta os principais conceitos e etapas para desenvolvimento de aplicações distribuídas nessas tecnologias.
1) O documento apresenta o Java Persistence API (JPA) e como mapear classes de entidade para tabelas no banco de dados usando anotações. 2) É mostrado como fazer operações básicas como inclusão, alteração, exclusão e consulta de registros usando testes unitários com JUnit. 3) Também são demonstrados relacionamentos entre classes como herança, many-to-one e consultas.
O documento descreve os conceitos de Stateful Session Beans no Java EE, incluindo: 1) Stateful Session Beans mantêm estado entre chamadas de método através de ativação e passivação; 2) Métodos como ejbCreate(), ejbRemove(), ejbPassivate() e ejbActivate() são implementados; 3) O ciclo de vida de um Stateful Session Bean é gerenciado pelo container.
O documento introduz a ferramenta Apache Ant, que é usada para gerenciar projetos Java de forma automatizada através de arquivos XML. Ant permite compilar, empacotar, testar e implantar aplicações de forma independente de IDEs. Ele executa tarefas como compilação, geração de documentação e empacotamento usando roteiros definidos em arquivos XML chamados buildfiles.
Este documento fornece uma introdução ao framework Cactus, que permite testar componentes J2EE no próprio container do servidor. Resume as principais funcionalidades do Cactus em 3 frases:
Cactus estende o JUnit para permitir testar a integração de aplicações J2EE como servlets, JSPs e EJBs com o container do servidor, executando os testes simultaneamente no cliente e no servidor. Ele simula requisições HTTP para testar a funcionalidade dos componentes e verificar se os dados são processados corretamente. Cactus permite
Este documento fornece um resumo sobre WebServlets de acordo com a especificação Java EE 7. Ele contém informações sobre aplicações Web, WebServlets, requisições e respostas HTTP, URLs e redirecionamento, contexto da aplicação, sessão do cliente, filtros interceptadores e arquitetura MVC.
Este documento fornece um resumo das principais mudanças introduzidas na versão 7 do PHP. Em três frases ou menos:
1) Apresenta quebras de compatibilidade e novos recursos como operadores, tipagem escalar, classes anônimas e palavras-chave. 2) Descreve melhorias internas como árvore de sintaxe abstrata, suporte a 64 bits, gerenciamento de memória e desempenho. 3) Menciona o roadmap do PHP.NEXT para evoluir ainda mais a linguagem.
Aqui são apresentados conceitos básicos sobre o paradigma web. Simples e rápido.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
Este documento resume um estudo sobre a programação de componentes definidos pelo usuário no Jason. Discute-se como estender as capacidades dos agentes implementados no Jason através de ações internas e personalização de classes. Apresenta exemplos de como definir novas ações internas em Java e como customizar a classe Agent para alterar o comportamento de seleção de eventos, intenções e mensagens.
Java orientação a objetos (variaveis de instancia e metodos)Armando Daniel
O documento descreve os conceitos de variáveis de instância e métodos em Java. Explica que variáveis de instância armazenam dados específicos de cada objeto e são criadas quando um objeto é instanciado. Também descreve que métodos representam o comportamento de uma classe e podem receber parâmetros, retornar valores e acessar variáveis de instância.
Este documento apresenta os principais conceitos sobre servlets Java e formulários HTML. [1] Apresenta a classe HttpServlet e seus métodos como doGet e doPost. [2] Mostra como mapear URLs para servlets no arquivo web.xml e como receber dados via requisição GET ou POST. [3] Explica os principais elementos de formulário como inputs, textareas, selects e como usá-los.
1. JSP é convertida para Servlet que é compilado e carregado para aguardar requisições.
2. A primeira requisição a uma página JSP é mais lenta, mas subsequentemente o processo é mais rápido se o código não foi alterado.
3. Uma página JSP passa por fases de tradução, compilação, carga, instanciação e execução do método _jspService() a cada requisição.
(1) O documento apresenta uma introdução à linguagem Java, abordando sua história, características da plataforma e fundamentos da linguagem como variáveis, operadores e estruturas condicionais;
(2) São apresentados conceitos como tipos primitivos, declaração de classes e variáveis, operadores unários, incremento/decremento e representação de sinal;
(3) O documento também explica conceitos importantes como escopo de variáveis e realiza um exercício prático para fixação dos conceitos apresentados.
Este documento resume os principais tópicos da especificação Java EE 6, incluindo novidades como JAX-RS, CDI e Bean Validation, além de detalhar conceitos como mapeamento de entidades JPA, tipos de relacionamentos, estratégias de herança e cache.
O documento descreve o I Encontro do PHPSP sobre o framework Zend. Ele apresenta os objetivos do encontro que são discutir a arquitetura e componentes do Zend Framework e boas práticas de desenvolvimento. Também resume os principais conceitos e componentes do framework como MVC, models, views, controllers, autenticação e autorização.
Este documento apresenta um curso sobre testes automatizados, abordando testes unitários, de integração e funcionais. A unidade III discute testes de integração com ênfase em TestNG, Mockito, testes com banco de dados usando DBUnit e Seam.
1) O documento apresenta os detalhes de uma aula sobre programação orientada a objetos com Java, incluindo avaliação, conteúdo da prova e agenda.
2) A agenda inclui tópicos como operador ternário, enums, varargs, autoboxing/unboxing, definindo e sobrecarregando construtores e uso do método this.
3) Exemplos de código são fornecidos para ilustrar esses tópicos.
1) O documento discute como realizar consultas no banco de dados usando o framework Hibernate. 2) Existem três maneiras de fazer consultas no Hibernate: HQL, Critérios e SQL nativo. 3) Vários exemplos de consultas HQL são apresentados, incluindo parâmetros, joins, funções agregadas e consultas nomeadas.
Este documento discute relacionamentos entre objetos em aplicações Java usando Enterprise JavaBeans (EJB). Apresenta os conceitos de cardinalidade, direção e visibilidade de relacionamentos, e exemplifica a implementação de relacionamentos um-para-um entre entidades em EJB usando tanto o modelo de persistência por campo (BMP) quanto o modelo de persistência por coluna (CMP).
O documento discute estratégias de mapeamento de herança em frameworks ORM, incluindo single table, joined e table per class. Ele também cobre callbacks e caches no JPA.
Las reglas de netiqueta tratan de regular la conducta de los usuarios en internet para que sean educados y respetuosos. Algunas de las reglas principales incluyen tratar a los demás con respeto, ser razonable y ético para no afectar a otros, y ser conscientes de los límites de lo permitido en cada sitio o chat.
O documento discute objetos distribuídos em Java, abordando tecnologias como Enterprise JavaBeans, Java RMI, RMI-IIOP e CORBA. Apresenta os principais conceitos e etapas para desenvolvimento de aplicações distribuídas nessas tecnologias.
[1] O documento descreve os serviços básicos de localização de recursos no Java EE, incluindo localização de componentes, fontes de dados e objetos compartilhados através da interface JNDI.
[2] JNDI permite associar nomes a recursos computacionais como objetos e referências, e localizar recursos a partir de seus nomes. Contextos formam um sistema de nomes hierárquico onde objetos podem ser mapeados.
[3] O documento explica conceitos-chave de JNDI como contextos, sistemas de nomes,
Este documento presenta un proyecto para crear un móvil inspirado en la obra de arte "El amor del colibrí" de Manuel Ocaranza, con el objetivo de promover y vender obras del Museo Nacional de Arte. Describe el proceso de diseño del móvil, incluidos los bocetos, módulos, empaque y folleto promocional. También resume la biografía de Ocaranza, la obra de arte en sí, y el mercado objetivo y estrategia de marketing para el móvil.
Este documento discute Entity Beans no Java EE. [1] Introduz conceitos básicos de Entity Beans como objetos persistentes que representam dados armazenados em bancos de dados. [2] Apresenta os tipos de Entity Beans (BMP e CMP) e explica como eles sincronizam instâncias em memória com dados no banco de dados. [3] Fornece exemplos de interfaces, classes primárias e métodos para criar e acessar Entity Beans.
O documento descreve os conceitos básicos de objetos remotos em Java usando RMI. Ele explica que objetos remotos permitem que métodos sejam chamados remotamente como se fossem locais, e que RMI usa proxies e stubs para abstrair a complexidade da comunicação em rede. Ele também resume os 10 passos principais para implementar objetos remotos em RMI: 1) definir a interface remota, 2) implementar o objeto remoto, 3) estabelecer um servidor, 4) compilar, 5) gerar stubs e skeletons, 6) escrever e compilar o
JDBC é uma interface Java para acesso a bancos de dados através de SQL. O documento explica os fundamentos de JDBC, incluindo como estabelecer conexões, executar consultas, processar resultados e fechar conexões. Também discute drivers JDBC, transações, prepared statements, stored procedures e recursos relacionados a metadados.
O documento apresenta uma introdução ao Java Database Connectivity (JDBC), descrevendo sua arquitetura e os principais conceitos, como tipos de drivers, processos de conexão e execução de consultas, tratamento de resultados e erros. É apresentada a história e os tipos de interfaces para acesso a bancos de dados, como ODBC, CLI e JDBC.
O documento fornece um resumo sobre o framework JDBC no Java, descrevendo suas principais características como interface baseada em Java para acesso a bancos de dados através de SQL e como permite integrar aplicações Java com bancos de dados relacionais.
1) O documento discute a manipulação de bancos de dados com Java, incluindo a criação de uma fonte de dados entre o banco de dados e o Java.
2) É explicado como configurar o sistema para acessar o banco de dados em Java através da criação de uma fonte ODBC.
3) São descritos os principais passos para manipular bancos de dados em Java, como carregar o driver, conectar-se, criar comandos e consultar dados.
O documento discute JavaServer Faces (JSF), um framework para desenvolvimento web em Java. JSF facilita a criação de interfaces gráficas, expressões de linguagem para acessar objetos e validação de campos. O documento também explica como configurar beans, formulários, controllers e arquivos de configuração para construir aplicações web simples com JSF.
Dsi 015 - poo e php - conexão com bancos de dados usando pdoJorge Luís Gregório
O documento descreve como conectar e acessar bancos de dados usando PHP Data Objects (PDO) no PHP. Resume três pontos principais: 1) PDO fornece uma API consistente para acesso a bancos de dados independente do SGBD; 2) Exemplos de como conectar ao PostgreSQL e MySQL, inserir, atualizar e excluir dados; 3) Recomenda-se configurar PDO para lançar exceções para tratamento de erros.
Este documento discute a evolução e o estado atual dos Enterprise JavaBeans (EJB). Começa explicando o que são EJBs e como eles permitem a criação de aplicações corporativas em Java, e então descreve como os EJBs foram simplificados na versão 3.0 para usar anotações e POJOs. Por fim, discute possíveis direções futuras para os EJBs, como versões mais leves para aplicações simples.
A apresentação visa repensar os padrões JavaEE para evitar o uso de padrões obsoletos, focando no container server-side, para criar arquiteturas enxutas.
O documento discute princípios de programação em JavaScript, incluindo comentários, nomeação de variáveis e funções, módulos, namespaces e o princípio SOLID de ter classes/módulos com uma única responsabilidade. Ele recomenda escrever código conciso, claro e fácil de ler para facilitar a manutenção no futuro.
O documento descreve os principais conceitos e etapas para se conectar e realizar operações em uma base de dados usando JDBC no Java, incluindo carregar o driver apropriado, estabelecer uma conexão, criar statements, executar queries e updates, obter e tratar resultados.
Spring + Tapestry Um novo paradigma de desenvolvimento webelliando dias
O documento discute o framework Spring, incluindo sua organização, inversão de controle, integração com bancos de dados e frameworks web, transações declarativas, uso de mocks e projetos relacionados. O Spring é um container leve que facilita o desenvolvimento web, diminui código e integra com diversas tecnologias de forma portável e testável.
O documento discute o Java Database Connectivity (JDBC), uma API Java para acesso a bancos de dados relacionais. Ele explica os tipos de drivers JDBC, como estabelecer conexões, executar comandos SQL e tratar resultados. Também apresenta o JavaDB, um banco de dados relacional incluído no Java SE, e como utilizá-lo através do JDBC.
RMI permite que objetos Java se comuniquem através de uma rede, permitindo que métodos sejam chamados remotamente em outros computadores. Um exemplo é um sistema bancário onde terminais podem requisitar informações de clientes de um servidor central. RMI encapsula as requisições em objetos stub e skeleton para codificar e decodificar parâmetros e retornos entre cliente e servidor.
JavaServer Faces Produtividade em DesenvolvimentoEduardo Bregaida
O documento discute as vantagens e funcionalidades do framework JavaServer Faces (JSF), incluindo especificações, managed beans, ciclo de vida, templates e novidades no JSF 2.0. Uma apresentação passa por tópicos como produtividade no desenvolvimento com JSF, implementações e IDEs suportadas.
O documento discute o padrão MVC com JSP e Servlets, separando as funcionalidades em três camadas: Model, View e Controller. Apresenta também um mini-tutorial sobre como implementar este padrão em um sistema simples de sugestão de cervejas.
Aqui são apresentados conceitos básicos sobre o paradigma web. Simples e rápido.
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
1) O documento discute a evolução do JavaScript desde sua criação em 1995 até os dias atuais, com foco nos padrões ES e frameworks mais populares.
2) É apresentado o padrão MVC e como ele pode ser aplicado com classes e objetos JavaScript para separar modelo e visualização.
3) Diferentes frameworks são citados como Angular, React e Knockout para implementar o padrão MVC em projetos JavaScript.
Este documento apresenta um treinamento sobre JavaServer Faces (JSF) e REST. Apresenta brevemente o palestrante e seu background, faz perguntas sobre JSF e explica o que é JSF, suas especificações e como funciona. Também explica o que é REST, sua arquitetura e como implementar serviços REST com Jersey.
O documento introduz o framework Spring, descrevendo seus principais conceitos como Inversão de Controle, Injeção de Dependência e uso de POJOS. Também apresenta exemplos de como configurar e usar o Spring para gerenciar o ciclo de vida de objetos e suas dependências.
Este documento descreve a estrutura do projeto Snep utilizando o framework Zend. Ele explica a organização de arquivos, o uso do padrão MVC, bibliotecas como Zend_Db para acesso a dados e Zend_Forms para criação de formulários. Também aborda internacionalização com Zend_Translate e o registro de objetos com Zend_Registry.
Este documento fornece informações sobre como construir aplicações gráficas e applets em Java. Ele discute as bibliotecas AWT e Swing para interfaces gráficas, componentes como JFrame e JButton, layouts como FlowLayout e BorderLayout, e como criar applets e aplicações que podem rodar tanto no navegador quanto em uma janela standalone.
O documento discute classes internas em Java, incluindo suas quatro categorias (classes dentro de instruções, métodos, objetos e estáticas) e seus usos. Classes internas podem ser usadas para maior reutilização de código e flexibilidade, mas também aumentam a complexidade do código.
O documento discute entrada e saída de dados em Java, abordando classes como File, InputStream, OutputStream, Reader, Writer e RandomAccessFile para manipulação de arquivos e fluxos de dados. Também apresenta tópicos como serialização de objetos, compactação com GZIP e recursos básicos de logging.
O documento discute coleções em Java, incluindo vetores, listas, conjuntos e mapas. Ele explica como manipular e ordenar coleções usando a API Collections e classes como ArrayList, LinkedList, HashSet e TreeMap. Além disso, aborda tópicos como interfaces Collection e Map, comparáveis e comparadores.
O documento apresenta os fundamentos da programação concorrente em Java, discutindo tópicos como threads, classes Thread e Runnable, controle de threads, deadlocks e comunicação entre threads usando wait() e notify(). É apresentado um exemplo de produtor-consumidor usando uma pilha compartilhada para ilustrar o uso desses conceitos.
Este documento fornece uma introdução aos testes de unidade com a ferramenta JUnit em Java. Ele discute os objetivos e benefícios dos testes de unidade, apresenta os conceitos fundamentais do JUnit e fornece exemplos de como implementar testes com JUnit.
O documento discute o controle de erros em Java usando exceções. Resumidamente:
1. Exceções são objetos que sinalizam condições excepcionais em tempo de execução e podem ser capturadas usando blocos try-catch.
2. Há três tipos principais de erros em tempo de execução: erros de lógica, erros devido a condições ambientais, e erros graves onde não há recuperação possível.
3. Exceções podem ser lançadas usando throw e capturadas em métodos an
O documento descreve os conceitos de polimorfismo e interfaces em Java. [1] Polimorfismo permite que objetos de subclasses sejam usados no lugar de objetos da classe pai, desde que implementem a mesma interface. [2] Isso garante que programas podem usar objetos de forma genérica através de interfaces, sem precisar conhecer as subclasses específicas.
O documento discute técnicas de reuso em Java, como herança e composição. Apresenta quando usar cada uma e como implementá-las corretamente, incluindo o uso de modificadores como public, protected, private e final.
Este documento fornece um resumo sobre o Apache Ant, uma ferramenta para gerenciamento de projetos Java baseada em arquivos XML. O documento explica como o Apache Ant pode ser usado para automatizar tarefas como compilação, empacotamento, documentação e teste.
Este documento discute pacotes e encapsulamento em Java, abordando os principais pacotes da API Java como java.lang e java.util, além de explicar como criar pacotes e classes em Java, implementando métodos como equals() e clone().
Este documento discute conceitos importantes sobre construção de classes e objetos em Java, incluindo: 1) como criar construtores e sobrecarregá-los; 2) o uso de this() e super() em construtores; 3) problemas com a inicialização de objetos.
Este documento discute operadores e estruturas de controle de fluxo na linguagem Java. Ele explora os tipos de operadores matemáticos, lógicos e de atribuição, bem como estruturas como if/else, for loops e while loops. O documento também discute conversão e promoção de tipos, além de operadores como instanceof.
O documento fornece instruções sobre como usar a documentação da API Java, explicando onde ela está localizada na instalação do Java SDK, como navegar pela documentação online e encontrar classes, métodos e detalhes técnicos. Ele também apresenta exemplos de como gerar documentação JavaDoc para classes personalizadas.
Este documento fornece instruções para configurar um ambiente de desenvolvimento Java usando ferramentas open-source como JEdit, Ant e JDK. Ele descreve como instalar e personalizar essas ferramentas, criar projetos no JEdit, usar plug-ins e executar compilações com Ant. O documento também discute problemas comuns e alternativas de IDEs.
Este documento fornece um resumo dos principais conceitos de programação orientada a objetos em Java, incluindo:
(1) Conceitos como classe, objeto, atributo, método e interface;
(2) Características da OO como abstração, encapsulamento, herança e polimorfismo;
(3) Sintaxe Java para construção de classes e objetos.
O documento fornece uma introdução à tecnologia Java, abordando seus principais conceitos e ferramentas. Em 3 frases:
Apresenta os conceitos fundamentais da linguagem Java, como classes, objetos e APIs, além da máquina virtual Java. Detalha as ferramentas do SDK para desenvolvimento de aplicações Java, como o compilador javac e interpretador java. Fornece exemplos práticos de aplicações Java simples para familiarizar o leitor com os conceitos apresentados.
Este documento fornece uma introdução aos conceitos básicos de programação de rede em Java, cobrindo classes como Socket, ServerSocket e URL. Ele explica como criar clientes e servidores TCP/IP, ler e escrever dados de conexões e endereçamento na Internet. O documento também inclui exercícios para aplicar os conceitos aprendidos.
Este documento resume um módulo sobre a ferramenta XDoclet, que permite gerar automaticamente artefatos Java como EJBs a partir de código-fonte e comentários Javadoc. O documento explica como configurar o XDoclet no Ant, criar templates, e usar a tarefa EJBDocletTask para gerar interfaces, deployment descriptors e outros arquivos para EJBs.
O documento descreve os conceitos de autenticação e controle de acesso em EJB. A especificação EJB define autenticação de clientes e controle de acesso a métodos de forma declarativa, mas não abrange outros aspectos de segurança. O Java Authentication and Authorization Service (JAAS) é usado para implementar a autenticação, enquanto papéis lógicos mapeados a usuários e grupos determinam o acesso aos métodos.
1. J530 - Enterprise JavaBeans
Entity Beans
com persistência
implícita (CMP)
Helder da Rocha (helder@acm.org)
argonavis.com.br
1
2. Características de EJB CMP
Com container-managed persistence o
programador do bean não implementa
lógica de persistência
O bean não precisa usar APIs como JDBC
O container se encarrega de criar as
tabelas (no deployment), criar os beans e
os dados, removê-los e alterá-los
O container gera automaticamente
o JDBC ao estender a classe do bean
criada pelo programador
O entity bean verdadeiro é o que foi
gerado: a combinação da classe
implementada pelo programador e a
gerada pelo container
«interface»
javax.ejb.EntityBean
Contém lógica de
dados escrita pelo
programador
MyEntityBean
Contém lógica de
persistência gerada
pelo container
ContainerEntityBean
2
3. Entity Beans CMP não têm ...
... campos de dados declarados
São implementados na subclasse* (criada pelo container)
Programador declara seus campos no deployment descriptor
(abstract persistence schema) usando <cmp-field>
... implementação de métodos de acesso
Programador declara todos os seus métodos de acesso
(get/set) como abstract
Os nomes dos métodos devem ser compatíveis com os
nomes dos campos declarados:
Se há getCoisa() no bean, e no deployment descriptor deve haver:
<cmp-field><field-name>coisa</field-name></cmp-field>
Subclasse gerada pelo container implementa os métodos (o
container pode usar BMP, por exemplo)
3
4. EJB-QL
Como não há como fazer queries JDBC com entity beans
CMP, há uma linguagem para fazer queries nos próprios
beans: Enterprise JavaBean Query Language (EJB-QL)
EJB-QL é uma linguagem com sintaxe semelhante a SQL
para pesquisar entity beans. Possui
cláusula SELECT
cláusula FROM
cláusula WHERE, opcional
EJB-QL é colocado nos deployment descriptors no contexto
da declaração do método
Todos os finders são implementados com EJB-QL
O servidor transforma expressões EJB-QL em SQL e realiza
as chamadas no banco de dados
Isto pode ser configurado no servidor usando recursos proprietários
4
5. Métodos de Entity Beans que usam CMP
setEntityContext() / unsetEntityContext()
Mesmo comportamento de entity beans com BMP
ejbFindXXX(...)
Não são implementados no bean em CMP
Declarados no deployment descriptor (DD) e têm lógica em EJB-QL
ejbSelectXXX(...)
Usados para fazer queries genéricos para o bean
É método de negócio mas não pode ser chamado pelo cliente
Declarados como abstract com lógica descrita no DD em EJB-QL
ejbHomeXXX(...)
Usado para definir métodos que não são específicos a uma instância
Deve chamar um ou mais ejbSelect() para realizar as operações
ejbCreate(...) / ejbPostCreate(...)
Chama os métodos de acesso abstratos inicializando-os com os dados
que serão usados pelo container para criar novo registro
Deve retornar null
5
6. Métodos (2)
ejbActivate() / ejbPassivate()
Mesmo comportamento que BMP
ejbLoad()
Chamado ao carregar dados do banco para o bean
Pode ser vazio ou conter rotinas para transformar dados recebidos
ejbStore()
Chamado ao atualizar o banco com alterações no bean
Pode ser vazio ou conter rotinas p/ transformar dados antes do envio
ejbRemove()
Chamado por home.remove(), remove os dados do banco (não
remove a instância - que pode ser reutilizada)
Pode ser vazio ou conter código para ser executado antes da
remoção dos dados
6
7. Diferenças BMP-CMP
Diferença
Container-Managed
Persistence
Bean-Managed
Persistence
Definição da classe
Abstrata
Concreta
Chamadas de acesso ao banco
de dados
Gerada pelas ferramentas no
deployment
Representadas como campos
persistentes virtuais
Codificada pelo
programador
Codificadas como variáveis
de instância
Obrigatórios (abstract)
Não há
Estado persistente
Métodos de acesso a campos
persistentes e relacionamentos
Método findByPrimaryKey
Gerado pelo container
Métodos finder customizados
Gerados pelo container mas
programador escreve EJB-QL
Codificado pelo
programador
Codificado pelo
programador
Métodos select
Gerados pelo container
Não há
Valor de retorno de ejbCreate() Deve ser null
Fonte: J2EE Tutorial
Deve ser a chave primária
7
8. Exemplo: Como executar
Diretório cap08/exemplos/mejb/
Configuração
Configure o arquivo build.properties com seu ambiente
Inicie o JBoss
Inicialização
> ant drop.table
> ant clean
Deployment
> ant jboss.deploy (observe as mensagens de criação
das tabelas no JBoss)
Execução do cliente
> ant run jboss.client
> ant select.all
(faz SELECT na tabela)
8
9. Componentes de um EJB-JAR que usa CMP
Interfaces Home e Component e classe Primary Key
Idênticas às interfaces e classe Primary Key de um entity bean
equivalente que usa BMP
PK não pode conter campos de relacionamento (CMR)
Classe Enterprise bean (muito menor que classe BMP)
Métodos ejbLoad(), ejbStore() não possuem código de persistência
Classe é abstrata; métodos de acesso são abstratos; métodos
ejbSelectXXX() são abstratos
Métodos de negócio contém apenas lógica de negócio
Métodos finder não são declarados
Deployment descriptor (maior que versão BMP)
Definição da lógica de métodos e relacionamentos
Arquivos de configuração do fabricante (JBoss)
Mapeamento de tipos, mapeamento de esquema
9
10. Enterprise Bean
public abstract class ProdutoBean implements EntityBean {
protected EntityContext ctx;
Métodos de negócio
abstratos (lógica no
deployment descriptor)
public abstract String getName();
public abstract void setName(String name);
public abstract String getCodigo();
public abstract void setCodigo(String codigo);
Não expor na interface
(...)
public void ejbStore() {}
ejbLoad e ejbStore são implementados
public void ejbLoad() {}
pelo container
public void ejbPassivate() {}
ejbFindBy não são declarados
public void ejbRemove() {}
(lógica está no deployment descriptor)
public void ejbActivate() {}
public void setEntityContext(EntityContext c) {ctx = c;}
public void unsetEntityContext() {ctx = null;}
public void ejbPostCreate(String codigo, String name,...) {}
public void ejbCreate(String codigo, String name, ...) {
setCodigo(codigo);
setName(name);
ejbCreate chama métodos abstratos
(...)
para passar dados recebidos
}
}
10
13. Primary Key
A Primary Key de um bean CMP, se implementada com uma
classe, deve ter campos de dados públicos com os mesmos
identificadores que os campos persistentes que a compõem
Por exemplo, se uma PK simples é representada pelo campo codigo,
deve ter uma variável de instância codigo e ela deve ser pública
Se for uma PK composta, cada um dos campos que a representa
deve ter o mesmo identificador que seus atributos públicos
Se esta regra não for observada, o container não terá como
descobrir quem é a Primary Key do objeto
Os métodos que alteram atributos pertencentes a uma PK
não devem ser expostos através das interfaces e só devem ser
chamados uma vez dentro do bean
Para os atributos do PK, bean deve ter par get/set para cada
atributo, mas interface Local ou Remote só deve ter o método get().
13
14. EJB-QL
Toda pesquisa no banco é feita através de
Enterprise JavaBeans Query Language (EJB-QL)
O servidor mapeia expressões EJB-QL a expressões
SQL para realizar as pesquisas no banco
EJB-QL é usado no deployment descriptor
Não há SQL ou EJB-QL na classe do bean. O bean lida
apenas com lógica de negócio
O bean pode usar métodos que retornam queries
customizados, previamente definidos no deployment
descriptor em EJB-QL
14
15. Exemplos de EJB-QL
O que vai ser selecionado
Abstract
schema
name Declara variável p como
sendo um Produto
SELECT p.codigo
FROM Produto AS p
WHERE p.codigo = '123'
Objeto (bean) sendo
selecionado
Parâmetro
AS é opcional
SELECT OBJECT(p)
FROM Produto p
Parâmetro do
método
WHERE p.nome = ?1
15
16. Palavras-chave EJB-QL
Usadas na cláusula SELECT
DISTINCT, OBJECT
Usadas na cláusula FROM
AS, IN
Usadas na cláusula WHERE
AND, OR, NOT
BETWEEN
LIKE, IS, MEMBER, OF
TRUE, FALSE
EMPTY, NULL
UNKNOWN
16
17. Cláusula FROM
A cláusula FROM é quem informa o esquema
abstrato que está sendo pesquisado, e declara
variáveis usados no resto do query
Cada variável tem um identificador e um tipo
O identificador é qualquer palavra não-reservada
O tipo faz parte do esquema abstrato do bean (campos
de dados e abstract schema name)
A palavra-chave AS conecta o tipo ao identificador, mas é
opcional
Tipo
Identificador
FROM Produto AS p
17
18. Cláusula SELECT
A cláusula SELECT informa o que se deseja obter com a
pesquisa. Pode retornar
Objetos (interfaces locais ou remotas)
Atributos dos objetos (tipos dos campos <cmp-field>)
A palavra SELECT pode ser seguida de DISTINCT para
eliminar valores duplicados nos resultados
SELECT utiliza uma variável declarada na cláusula FROM
Se retorna um objeto, é preciso usar OBJECT(variavel)
Exemplos
SELECT OBJECT(p) FROM Produto p
Retorna
objetos
SELECT DISTINCT OBJECT(p) FROM Produto p
SELECT p.codigo FROM Produto p
Retorna
campos
SELECT DISTINCT p.codigo FROM Produto p
18
19. Cláusula WHERE
A cláusula WHERE é opcional e restringe os
resultados da pesquisa com base em uma ou mais
expressões condicionais concatenadas
As expressões podem usar
Literais (strings, booleanos ou números)
Identificadores (declarados no FROM)
Operadores
Funções
Parâmetros do método que utiliza a pesquisa (?1, ?2,...)
Literais
Strings são representados entre apóstrofes: 'nome'
Números têm mesmas regras de literais Java long e double
Booleanos são TRUE e FALSE (case-insensitive)
19
20. Operadores EJB-QL
Expressões matemáticas
+, -, *, /
Expressões de comparação
=, >, >=, <, <=, <>
Operadores lógicos
NOT, AND, OR
Outros operadores
BETWEEN, NOT BETWEEN
IN, NOT IN
LIKE, NOT LIKE
NULL, NOT NULL
IS EMPTY, IS NOT EMPTY
MEMBER, NOT MEMBER
Operadores do LIKE
_ representa um único caractere
% representa uma seqüência de zero ou mais caracteres
caractere de escape (necessário para usar _ ou %) literalmente 20
21. Funções EJB-QL
CONCAT (String, String)
Retorna String. Concatena dois strings
SUBSTRING(String, int start, int length)
Retorna String. Parte um string em um string menor
LOCATE(String, String, [start])
Retorna um inteiro mostrando onde um string está localizado dentro
de outro String
LENGTH(String)
Retorna um inteiro com o comprimento do String
ABS(numero)
Retorna o valor absoluto de um número (int, double)
SQRT(double numero)
Retorna a raiz quadrada de um número (double)
MOD(int, int)
Retorna inteiro com o resto da divisão
21
22. Não existem em EJB-QL 2.0
Várias funções e tipos comuns em SQL não existem
em EJB-QL 2.0. Para obter o mesmo efeito, é
preciso às vezes recorrer à combinação de métodos
ejbSelect() ou mesmo a BMP
Em último caso, pode-se recorrer a extensões
proprietárias sacrificando-se a portabilidade
Funções ausentes
ORDER BY
MIN, MAX
COUNT
SUM
Se puder, use um servidor
que suporte EJB 2.1 para
não comprometer a
independência de fabricante
Tipos ausentes
DATE (use long para guardar datas)
22
23. Exemplos de EJB-QL (de [1])
Encontre todos os produtos que são chips e cuja margem de
lucro é positiva
SELECT OBJECT(p)
FROM Produto p
WHERE (p.descricao = 'chip'
AND (p.preco - p.custo > 0)
Encontre todos os produtos cujo preço é pelo menos 1000 e
no máximo 2000
SELECT OBJECT(p)
FROM Produto p
WHERE p.preco BETWEEN 1000 AND 2000
Encontre todos os produtos cujo fabricante é Sun ou Intel
SELECT OBJECT(p)
FROM Produto p
WHERE p.fabricante IN ('Intel', 'Sun')
23
24. Exemplos de EJB-QL (2)
Encontre todos os produtos com IDs que começam com 12
e terminam em 3
SELECT OBJECT(p)
FROM Produto p
WHERE p.id LIKE '12%3'
Encontre todos os produtos que têm descrições null
SELECT OBJECT(p)
FROM Produto p
WHERE p.descricao IS NULL
Encontre todos os pedidos que não têm itens (coleção)
SELECT OBJECT(pedido) FROM Pedido pedido
WHERE pedido.itens IS EMPTY
Encontre todos os itens ligados a pedidos em coleção
SELECT OBJECT(item)
FROM Pedido pedido, Item item
WHERE item IS MEMBER pedido.itens
24
25. <query> EJB-QL
<query>
Nome de método de Home ou Remote
<query-method>
<method-name>findByName</method-name>
<method-params>
<method-param>java.lang.String</method-param>
</method-params>
Parâmetro recebido
</query-method>
<ejb-ql><![CDATA[ SELECT OBJECT(obj)
FROM ProdutoBean obj WHERE obj.name = ?1 ]]></ejb-ql>
</query>
abstract schema name
Nome de um cmp-field
...
<query>
<query-method>
<method-name>findAllProducts</method-name>
</query-method>
AS é opcional
<ejb-ql><![CDATA[
SELECT OBJECT(obj) FROM ProdutoBean AS obj
WHERE obj.codigo IS NOT NULL
]]></ejb-ql>
findByPrimaryKey não deve ser declarado!
</query>
25
26. JBoss deployment descriptor
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 3.0//EN"
"http://localhost/dtd/jboss_3_0.dtd">
<jboss>
<enterprise-beans>
<entity>
<ejb-name>ProdutoEJB</ejb-name>
<jndi-name>loja/produtos</jndi-name>
</entity>
</enterprise-beans>
Nome JNDI Global
<resource-managers>
Nome do ENC java:comp/env
<resource-manager>
<res-name>jdbc/LojaDB</res-name>
<res-jndi-name>java:/DefaultDS</res-jndi-name>
</resource-manager>
</resource-managers>
Nome JNDI global domínio java: local
</jboss>
26
27. JBoss CMP: jbosscmp-jdbc.xml
Este arquivo é necessário se a aplicação irá se comunicar
com fonte de dados que tem esquema próprio
<jbosscmp-jdbc>
<enterprise-beans>
<entity>
<ejb-name>ProdutoEJB</ejb-name>
Tabela que será usada
<table-name>produtos</table-name>
(ou criada) no banco
<cmp-field>
<field-name>name</field-name>
Campos CMP
<column-name>nome</column-name>
</cmp-field>
Campos do
<cmp-field>
banco de dados
<field-name>codigo</field-name>
<column-name>id</column-name>
</cmp-field>
<cmp-field>
<field-name>quantidade</field-name>
<column-name>qte</column-name>
</cmp-field>
...
Pode-se ainda redefinir o mapeamento de
</entity>
tipos para todos os beans no arquivo de
</enterprise-beans>
configuração standardjbosscmp-jdbc.xml
</jbosscmp-jdbc>
27
28. ejbSelect()
Método de pesquisa, como um finder, mas que não
é exposto ao cliente através da interface Home
É privativo ao bean: usado internamente como um
método auxiliar na realização de pesquisas genéricas
É declarado no bean como abstract (para que possa ser
usado pelos outros métodos) e provoca FinderException
Com ejbSelect() é possível realizar pesquisas e
devolver objetos e também valores não relacionados
com objetos
Finders são limitados à seleção de objetos (beans) e
coleções de objetos
Seletores podem retornar qualquer coisa
28
29. ejbHome()
Para implementar métodos ejbHome() em CMP é preciso
recorrer a métodos ejbSelect()
Use métodos ejbSelect() dentro de ejbHome() para selecionar
dados e devolver os resultados desejados
Exemplo: getProximoCodigo() em Home, é implementado
no bean como
public String ejbHomeGetProximoCodigo() {
Collection codigos = this.ejbSelectCodigos();
Iterator it = codigos.iterator();
int max = 0;
while(it.hasNext()) {
int cod = Integer.parseInt((String)it.next());
if (cod > max) max = cod;
}
return "" + (max+1);
}
29
30. Exemplo de ejbSelect()
No bean, ejbSelect() são declarados para que
métodos ejbHome() possam usá-los
public abstract Collection ejbSelectCodigos();
No deployment descriptor, são definidos em EJB-QL
<query>
<query-method>
<method-name>ejbSelectCodigos</method-name>
<method-params/>
</query-method>
<ejb-ql><![CDATA[
SELECT obj.codigo FROM ProdutoBean obj
]]></ejb-ql>
</query>
30
31. Resumo
Beans CMP são classes abstratas
Atributos de dados não são declarados na classe do bean
mas no DD como parte do esquema de dados do bean
Métodos get/set têm que combinar com atributos
declarados e devem ser abstract no bean
Nenhum finder é implementado no bean. Todos são
declarados no DD com parâmetros e lógica descritos em
EJB-QL que usa os componentes do esquema de dados
findByPrimaryKey() só é declarado na interface Home
Métodos ejbHome() não são declarados no DD, mas usam
métodos privativos ejbSelect(), abstratos no bean, que não
aparecem no Home mas são especificados em EJB-QL para
realizar suas tarefas.
31
32. Conclusões
CMP é uma solução que permite a criação de componentes
que contém 100% de lógica de negócio
Implementação de persistência é resolvida pelo container
Desenvolvedor se concentra na modelagem e lógica de negócios e
não se preocupa com os detalhes da persistência
Ainda não é possível, sem recorrer a extensões proprietárias,
implementar qualquer modelo entidade-relacionamento
usando CMP
Ideal é quando o modelo de objetos determina a estrutura e
relacionamentos entre as tabelas. É mais difícil implementar CMP
em sistemas legados, com tabelas gigantes, mal-estruturadas, etc.
Pode-se usar BMP em parte da aplicação já que cada bean pode
decidir se terá a persistência controlada pelo container ou não
CMP facilita e flexibiliza relacionamentos entre objetos!
Isto é um tema que será explorado mais adiante
32
33. Exercícios Teóricos
1. Escreva queries CMP para as seguintes situações
(invente referências e nomes significativos)
a) Localizar todas as contas com saldo maior que zero
b) Localizar todas as contas cujos identificadores
começam com '0000-'
c) Localizar as contas cujos saldos sejam menores que
100 ou maiores que 10000
d) Localizar produtos que custam menos que 1000 e que
tenham pelo menos duas unidades em estoque
Queries de relacionamento (extras)
e) Localize todos os clientes que têm pelo menos um
pedido na sua coleção de pedidos (não está vazio)
f) Localize todos os pedidos que façam parte da coleção
de pedidos do cliente cujo userid é 'genghis'
33
34. Exercícios práticos
2. Implemente o exemplo mostrado no capítulo
anterior (Account) em CMP
Faça o deployment
Execute usando o mesmo cliente
3. Adapte o exercício do capítulo anterior (Produto)
para CMP
Faça o deployment
Execute usando o mesmo cliente
Implemente queries sofisticados para pesquisar produtos
(por preço, por nome, por quantidade, etc.)
34