Auditoria Avançada de Persistência com Hibernate, JPA e Envers

Save this PDF as:
 WORD  PNG  TXT  JPG

Tamanho: px
Começar a partir da página:

Download "Auditoria Avançada de Persistência com Hibernate, JPA e Envers"

Transcrição

1 a r t i g o José Yoshiriro Ajisaka Ramos bacharel em Sistema de Informação (IESAM). Mestrando em Ciência da Computação (UFPA). Instrutor na Equilibrium Web e na UAB. Engenheiro de software do Tribunal de Justiça do Pará. Possui as certificações SCJP, SCWCD e SCBCD. Trabalha com Java há 6 anos. Márcia Amaral bacharel em Ciência da Computação (UFPA). Analista de Sistemas do Tribunal de Justiça do Pará. "Java Girl" há mais de 8 anos. Eterna estudante de novas tecnologias. Auditoria Avançada de Persistência com Hibernate, JPA e Envers Aprenda como implementar um robusto e completo sistema de auditoria de persistência com o Hibernate em conjunto com o Envers A auditoria sobre as operações de banco de dados é importantíssima, quando não, indispensável em sistemas de porte corporativo. Essa importância surge a partir de necessidades como correção de inconsistências de dados, detecção de incidentes de segurança etc. Caso os requisitos de um sistema exijam muitos detalhes na auditoria de persistência, torna-se necessário o uso de ferramentas de alto nível para cumpri-los com eficiência. Este artigo visa apresentar o caminho das pedras para implementar auditoria em persistência objeto relacional com Hibernate, JPA e Envers, apresentando um grande leque de recursos para esse tipo de tarefa. A uditar a persistência permite analisar operações que envolvem o acesso a bancos de dados. Uma boa auditoria de persistência deve fornecer informações sobre as operações nas tabelas envolvidas: O nível de detalhe das informações geradas pela auditoria deve ser suficiente para que seja possível desfazer operações sempre que necessário. Muito provavelmente, o tipo de auditoria mais usado atualmente é o baseado em Stored Procedures e Triggers de bancos de dados. As técnicas abordadas neste artigo não entram em conflito com tais mecanismos, podendo até trabalhar em conjunto. Este artigo visa apresentar uma robusta e flexível ferramenta para implementação de auditoria de persistência, composta pelos frameworks Hibernate, JPA e Envers tendo como foco principal o último, que é quem possibilita que a tecnologia de mapeamento objeto relacional dos demais possa contar com um forte sistema de auditoria. 51

2 Hibernate e Envers O Hibernate é um framework de mapeamento objeto relacional muito popular entre os desenvolvedores Java. Atualmente, ele pode ser usado de duas maneiras: como Hibernate Core ou provedor de persistência JPA (Java Persistence API). Na primeira, não se depende dos recursos da JPA, podendo lançar mão de vários recursos exclusivos, como Criteria, por exemplo. Os recursos exclusivos do Hibernate Core que possibilitam a implementação de auditoria são os Interceptors e Events, que não fazem parte do escopo deste artigo. Na segunda, ele se comporta como uma implementação da JPA. A biblioteca que permite que o Hibernate seja usado como provedor JPA é a Hibernate Entity Manager. É só com esse tipo de uso que é possível usar o framework Envers para auditoria de persistência. O JPA é a tecnologia padrão de mapeamento objeto relacional do Java. Na edição 37 da Mundoj, o artigo Auditando persistência com JPA apresentou o mecanismo de Listeners de Callbacks, que permite a implementação de auditoria com JPA. Neste artigo, foram abordados os pontos fracos de se implementar auditoria com JPA, que são a não escuta dos Listaners aos métodos invocados de Query e a não-obtenção do estados antes e depois dos objetos envolvidos na operação de persistência. Conforme será apresentado nas próximas seções, o Envers supera essas limitações e ainda oferece funcionalidades exclusivas. O Envers é um framework que permite criar auditoria através do controle de versões de persistência em mapeamentos objetos relacionais feitos com o Hibernate como provedor JPA. A grande inovação é a geração e alimentação automáticas de tabelas que permitem o controle de versões dos conteúdos das tabelas mapeadas. Cada vez que uma tabela sofre alterações em seus registros, uma nova versão dela é gerada pelo Envers. Assim, este framework torna opcional a criação de tabelas e programação de módulos de sistemas para armazenar as informações de auditoria. O Hibernate e o Envers são mantidos pela JBoss.org e, em 30 de outubro de 2008, o Envers tornou-se um módulo do Hibernate. Todavia, sua biblioteca ainda não vem junto do Hibernate, sendo necessário fazer seu download separadamente. Segundo o site da JBoss, o Hibernate 3.5 já trará as bibliotecas do Envers juntos das suas, assim como já ocorre com C3P0, Ehcache e outros frameworks. Nessa versão, provavelmente será possível usar o Envers também em conjunto com o Hibernate Core e não apenas com o Hibernate como provedor JPA. Configuração do Hibernate. Deve-se configurar o Hibernate para que ele trabalhe em conjunto com o Envers. Na Listagem 1 há um exemplo de como isso pode ser feito em arquivo de configuração JPA. Listagem 1. Configuração do Envers no persistence.xml de um projeto Hibernate/JPA. <persistence-unit > <properties> <!-- configurações comuns --> <property name="hibernate.ejb.event.post-insert" <property name="hibernate.ejb.event.post-update" <property name="hibernate.ejb.event.post-delete" <property name="hibernate.ejb.event.pre-collection-update" <property name="hibernate.ejb.event.pre-collection-remove" <property name="hibernate.ejb.event.post-collection-recreate" </properties> </persistence-unit> Em seu modo padrão de configuração (o que está sendo apresentado até agora), o Envers precisa de uma tabela auxiliar para cada tabela oficial do sistema cuja classe de entidade for marcada para auditoria, além de uma tabela auxiliar única por todo o projeto. Por isso, é uma boa prática configurar a criação automática de tabelas com a propriedade hbm2ddl. auto do Hibernate. A figura 1 mostra como seria um DER preparado para o trabalho com o Envers se houvessem apenas duas tabelas no sistema (tabela jogador e tabela time_futebol ). Detalhes sobre essas tabelas estão na seção Armazenamento das Informações pelo Envers. Criando auditoria de persistência com o framework Envers Até o fechamento desta edição, a versão atual do Envers era GA, compatível com as versões 3.3.x do Hibernate. É com estas configurações que este artigo irá apresentar sua proposta. A seguir, um passo-a-passo de como configurar o Envers em seu projeto. Instalação de bibliotecas. A biblioteca do Envers é composta de um único arquivo, o envers-x.ga-hibernate-3.y.jar, em que X e Y são as versões do Envers e Hibernate da biblioteca, respectivamente. Outras bibliotecas necessárias são: individual. A tabela revinfo é usada por todas as tabelas com sufixo _aud. E existe uma tabela com esse sufixo para cada tabela cuja entidade for marcada para auditoria com o Envers (veja como fazer isso no próximo passo). 52

3 Indicar quais tabelas serão auditadas. Com uma simples anotação é possível indicar quais classes de entidade fiquem sob a escuta do Envers e passarão a fazer parte de seu controle de versão. É a import org.hibernate.envers.audited. Na Listagem 2 há um exemplo de como usá-la. Listagem 2. Marcando a classe de entidade Jogador para auditoria com o Envers. @Table(name = "jogador") public class Jogador implements java.io.serializable { // campos e métodos Se estes três passos forem executados corretamente, sua aplicação já estará sob a auditoria e controle de versão de tabelas do Envers. Armazenamento das informações pelo Envers Vamos supor que na tabela time_futebol foram feitas as seguintes operações a partir de um projeto que usa Hibernate, JPA e Envers configurado no modelo padrão: 1. dois times foram inseridos; 2. o registro de um time sofreu alterações; 3. o registro de um time foi excluído. As figuras 2 e 3 mostram como ficariam as tabelas time_futebol_aud e revinfo, respectivamente. As tabelas de auditoria individuais, as que terminam com _ possuem os mesmos campos das tabelas as quais auditam e mais estes: indica o tipo de operação, em que: indica novo registro indica edição de registro indica exclusão faz a ligação com o campo de mesmo nome na tabela. O Envers usa uma tabela para centralizar o controle de operações, a re-. Ela possui os seguintes campos: faz a ligação com as tabelas de auditoria individuais (as de final _ ). O valor de REV é único por aplicação que usa o Envers, independentemente de quantas tabelas estão sendo auditadas. indica o momento exato (o timestamp ) em que a operação ocorreu. Recursos avançados de auditoria com Envers Os recursos abordados até aqui são suficientes para um sistema mínimo de auditoria, mas não para um sistema profissional em um ambiente corporativo. Para tal, é necessário saber pelo menos que usuário foi responsável pelas operações realizadas. É hora de "lançar mão" do recurso de escuta de revisão (Revision Listener) do Envers e criar uma classe para ser a entidade de revisão do projeto. Uma entidade de revisão é a classe que será usada para representar a tabela revinfo, portanto, deve estar mapeada como uma entidade JPA. Ela pode ser criada estendendo a classe org.hibernate.envers.defaultrevisionentity e criando os campos que achar importante para a auditoria. Essa classe também deve ser anotada para indicar qual classe de escuta de revisões (Revision Listener) irá gerenciá-la. Há um exemplo de entidade de revisão na Listagem 3. Se você preferir que sua tabela central de auditoria não se chame revinfo, basta usar outra palavra no atributo name na ou mesmo omiti-lo para aproveitar o nome da própria classe. Uma característica fantástica deste framework é que ele escuta tanto as operações feitas os métodos CRUD da interface EntityManager (persist, merge,remove e find) quanto às operações feitas pelo uso do método executeupdate() da interface Query. Como o leitor deve ter percebido, o Envers torna muito produtiva a criação de auditoria ao acesso a bancos de dados, uma vez que ele assume a responsabilidade pelas tabelas de auditoria as quais formam históricos parecidos com o que vemos em sistemas de controle de versão de arquivos, como CVS e Subversion, por exemplo. Caso não deseje estender a classe DefaultRevisionEntity para a entidade de revisão, você deve criar pelo menos dois campos devidamente encapsulados (com seus get e set ): 1. do tipo Integer ou int, anotado Number; 2. do tipo Long ou long, anotado Dependendo do tipo e da necessidade de um sistema, uma entidade de revisão pode conter campos como um número IP, um host name, o sistema operacional do usuário etc. A Listagem 4 mostra um exemplo de classe Revision Listener. 53

4 Listagem 3. Exemplo de classe de entidade de revisão. import org.hibernate.envers.revisionentity; import org.hibernate.envers.defaultrevisionentity; Listagem 5. Exemplo de recuperação de identificador usando o Seam. import org.jboss.seam.security.identity; // classe de escuta de revisões public class ExampleRevEntity extends DefaultRevisionEntity { private Integer idusuario; public void newrevision(object revisionentity) { Identity identity = (Identity) Component.getInstance( "org.jboss.seam.security.identity"); Integer idusuario = new Integer(identity.getPrincipal().getName()); // get e set de idusuario entidaderevisoes.setidusuario(idusuario); Listagem 4. Exemplo de classe de escuta de revisões. import public class AuditoriaFutebolListener extends RevisionListener { public void newrevision(object revisionentity) { EntidadeRevisoes entidaderevisoes = (EntidadeRevisoes) revisionentity; Listagem 6. Exemplo de recuperação de identificador usando o Struts2. import com.opensymphony.xwork2.actioncontext; public void newrevision(object revisionentity) { Integer idusuario = (Integer)ActionContext.getContext().getSession(). get("idusuarioatual"); Integer idusuario = ; //Recuperação do identificador do usuário // conforme a tecnologia usada entidaderevisoes.setidusuario(idusuario); entidaderevisoes.setidusuario(idusuario); Uma classe que implementa possui uma instância por. Por isso, muito cuidado com o uso de variáveis de instância. No exemplo da Listagem 4 existem várias formas de recuperar o identificador do usuário, dependo da tecnologia usada. Na Listagem 5 há um exemplo de como fazer isso com o framework JBoss Seam (através de busca de componente) e na Listagem 6, de como fazer com o Apache Struts2 (através de busca de atributo no escopo de sessão). Esse tipo de classe tem comportamento parecido com o dos Interceptors do EJB3 e do Struts2, afinal lida com uma responsabilidade transversal, no caso, a auditoria de persistência. Note que esse recurso não é indicado para estudar a operação em si se foi inclusão, exclusão ou alteração. O método newrevision(object revisionentity) é o único método da interface org.hibernate.envers. RevisionListener. O que interessa nesse tipo de classe é apenas atribuir informações extras para o registro da operação. Para escuta das operações CRUD, deve-se usar o recurso de escuta de eventos do Envers, que será apresentado na próxima seção. Recursos de flexibilização e personalização da auditoria com Envers O Envers tem uma proposta pronta de arquitetura de tabelas para prover auditoria e versionamento de persistência. É uma arquitetura muito inteligente e organizada que permite certas customizações como vistas no tópico anterior. Todavia, pode ser necessário que a arquitetura de tabelas de auditoria seja diferente da proposta pelo Envers. Também pode ser necessário usar outros recursos de registro de auditoria, como envio de s e criação de logs em arquivos-texto, por exemplo. O mecanismo do Envers que permite esse tipo de flexibilização é a escuta de eventos de auditoria (Audit Event Listener). 54

5 Escuta de eventos de auditoria (Audit Event Listener) Para poder usar o Envers em seu modo padrão, é preciso configurá-lo no JPA como visto no 2º passo do tópico Criando auditoria de persistência com o framework Envers. O que é feito na verdade é o mapeamento dos mecanismos de escuta de eventos de auditoria padrão do Envers. Para personalizar essas escutas, basta criar uma ou mais classes que estendam org.hibernate.envers.event.auditeventlistener (exemplo na Listagem 7) e indicá-las na configuração do JPA (exemplo na Listagem 8). Listagem 7. Exemplo de classe de escuta de eventos de auditoria personalizada. package mj.projetofutebol.listeners; import org.hibernate.envers.event.auditeventlistener; public class FutebolListener extends AuditEventListener{ public void onpostinsert(postinsertevent event) { // faça o que quiser com as informações do evento post insert public void onpostdelete(postdeleteevent event) { // faça o que quiser com as informações do evento post delete"" public void (PostUpdateEvent event) { // faça o que quiser com as informações do evento post update Todos os métodos de escuta de eventos de auditoria padrão do Envers possuem como parâmetro um objeto que estende org.hibernate.event. AbstractEvent. Esses objetos de evento permitem recuperar várias informações pertinentes sobre o evento e a entidade envolvida nele. Os principais métodos desses objetos de eventos estão na tabela 1. A Listagem 9 possui um pequeno exemplo de como usar alguns do métodos dessa tabela. Se for invocada a versão da superclasse dos métodos de escuta de eventos, o Envers tenta fazer seu procedimento padrão para a operação (registros numa tabela _aud e na tabela central de controle de revisões). Assim, caso seja necessário apenas acrescentar funcionalidades adicionais ao Envers (como envio de , por exemplo) sem alterar seu mecanismo padrão de armazenamento de dados de auditoria de persistência. Por exemplo: se você quiser que toda vez que um registro de determinada tabela seja excluído o administrador do sistema receba um , mas deseja manter a auditoria padrão do Envers, basta implementar o código de envio de no método onpostdelete(postdeleteevent event) e depois chamar super.onpostdelete(event). Recuperação dos dados de auditoria gerados pelo Envers Além de assumir o trabalho pesado pela alimentação das tabelas de auditoria, o Envers oferece um mecanismo robusto de recuperação de versões das tabelas. Na Listagem 10 há um exemplo de recuperação de versão com o uso da classe org.hibernate.envers.auditreader. Listagem 8. Configuração do Envers no persistence.xml de um projeto Hibernate/JPA. <persistence-unit > <properties> <!-- configurações comuns --> <property name="hibernate.ejb.event.post-insert" value="mj.projetofutebol.listeners.futebollistener" /> <property name="hibernate.ejb.event.post-update" value="mj.projetofutebol.listeners.futebollistener " /> <property name="hibernate.ejb.event.post-delete" value="mj.projetofutebol.listeners.futebollistener " /> </properties> </persistence-unit> O Envers possui um mecanismo de prevenção de criação de versões inúteis nas tabelas de auditorias individuais. Se for feito um pedido de atualização através do método () ou de uma query e os valores enviados forem os mesmos dos que já estão no banco de dados para o registro envolvido na operação, não será gerada uma nova versão da tabela em sua tabela de auditoria individual. E todos os mecanismos de escuta do Envers também são ignorados quando é feito um pedido de atualização que contém dados iguais aos já persistidos. A classe possui os recursos para recuperação de versões de dados de tabelas auditadas. Seus métodos estão na tabela 2. Existem duas outras formas de consultar as informações de auditoria geradas no banco de dados pelo Envers. Ambas utilizam a interface. Essa interface permite fazer consultas mais complexas em cima dos dados que foram armazenados. As queries do Envers são semelhantes às queries do Hibernate Criteria, facilitando a vida dos leitores que já têm familiaridade com a interface. A primeira forma é consultar uma entidade em uma determinada revisão. A segunda é consultar as revisões de uma determinada entidade. A Listagem 11 mostra um exemplo simples de uma consulta de entidade dada uma revisão. A consulta da Listagem 11 retorna uma lista de jogadores na revisão "revisionnumber" e cuja propriedade "nome_em_campo" tem o valor "Ronaldo". A Listagem 12 possui um exemplo simples de consulta a uma das revisões de uma entidade com AuditQuery. 55

6 Listagem 9. Exemplo de classe de escuta de eventos de auditoria personalizada. public class FutebolListener extends AuditEventListener{ public void onpostinsert(postinsertevent event) { Object entidade = event.getentity(); Serializable chave = event.getid(); // faça o que quiser com as informações do evento post insert Método Descrição Eventos Object getentity() Retorna a instância da entidade envolvida no evento. No caso de (), onpostinsert onpostdelete os campos da entidade recuperada por este método vêm com os valores alterados. Java.io.Serializable event. getid() Retorna a chave da entidade envolvida no evento. onpostinsert onpostdelete public void onpostdelete(postdeleteevent event) { Object[] getstate() Retorna um vetor de objetos com os valores dos campos da entidade já sob onpostinsert Object[] estadodeletado = event.getdeletedstate(); os efeitos do evento. // faça o que quiser com as informações do evento post delete Object[] getoldstate() Retorna um vetor de objetos com os valores dos campos da versão antiga public void (PostUpdateEvent event) { Object[] estadonovo = event.getstate(); Object[] estadoantigo = event.getoldstate(); // faça o que quiser com as informações do evento post update Object[]getDeletedState() da entidade (valores de antes de sofrer atualização). Assim pode-se ter acesso ao registro como estava antes da atualização. Equivale ao getstate(), porém só se aplica à escuta de post-delete onpostdelete public void onpreupdatecollection(precollectionupdateevent event) { PersistentCollection colecaoafetada = event.getcollection(); Serializable chavedaentidadequepossuiacolecao = event.getaffectedowneridornull(); String nomeentidadequepossuiacolecao = event.getaffectedownerentityname(); // faça o que quiser com as informações do evento pre update collection org.hibernate.collection. PersistentCollection Retorna a coleção de instâncias das entidades envolvidas no evento. onpostrecreatecollection onpreremovecollection onpreupdatecollection getcollection() Serializable getaffectedowneridornull() Retorna a chave da entidade à qual a coleção pertence. onpostrecreatecollection onpreremovecollection onpreupdatecollection String getaffectedownerentityname Retorna o nome da entidade à qual a coleção pertence. onpostrecreatecollection onpreremovecollection onpreupdatecollection Listagem 10. Recuperando uma determinada versão de registro da tabela time_futebol, sob a auditoria do Envers. import org.hibernate.envers.auditreader; import org.hibernate.envers.auditreaderfactory; public void recuperartimedeauditoria(integer idtime, Integer versao) { EntityManager em =. ; AuditReader leitorauditoria = AuditReaderFactory.get(em); TimeFutebol timerecuperado = leitorauditoria.find(timefutebol.class, idtime, versao); Listagem 11. Recuperando uma lista de versões de registro com AuditQuery. List jogadores = getauditreader().createquery(). forentitiesatrevision(jogador.class, revisionnumber).add(auditentity.property("nome_em_campo").eq("ronaldo")).getresultlist(); Listagem 12. Recuperando uma determinada versão de registro com AuditQuery. Number revision = (Number) getauditreader().createquery().forrevisionsofentity(jogador.class, false, true).setprojection(auditentity.revisionnumber().min()).add(auditentity.id().eq(idjogador)).add(auditentity.revisionnumber().gt(12)).getsingleresult(); A consulta da Listagem 12 retorna a menor versão na qual uma entidade da classe Jogador de id "idjogador" foi alterada, depois da versão 12. A classe AuditQuery tem uma série de métodos que permitem especificar restrições, fazer ordenação, limitar o número de resultados, assim como também é possível fazer uso de agregações e projeções. Abordar todos os seus métodos e combinações tornaria este trabalho muito extenso. Por isso encorajamos o leitor a consultar sua documentação da API (link nas referências) a fim de conhecer melhor os métodos e as possibilidades de utilização. 56

7 Método T find(class<t> cls, Object primarykey, Number revision) T findrevision(class<t> cls, Number revision) Descrição Recupera uma determinada versão (parâmetro revision ) de certo registro (parâmetro primarykey ) de uma determinada classe de entidade (parâmetro cls ). Recupera uma determinada versão (parâmetro revision ) de certo registro (identificado pelo parâmetro primarykey ) de uma determinada classe de entidade (parâmetro cls ). Listagem 13. Recuperando instâncias de objetos mapeados para chaves estrangeiras de entidades recuperadas pelo controle de versão do Envers. import org.hibernate.hibernate; public void recuperarjogadordeauditoria(integer idjogador, Integer versao) { EntityManager em =. ; AuditReader leitorauditoria = AuditReaderFactory.get(em); Jogador jogadorrecuperado = leitorauditoria.find(jogador.class, idjogador, versao); // objeto em Lazy eterno TimeFutebol timerecuperado = jogadorrecuperado.gettimefutebol(); T getcurrentrevision(class<t> revisionentityclass, boolean persist) java.util.list<number> getrevisions(class<?> cls, Object primarykey) Number getrevisionnumberfordate(java.util. Date date) java.util.date getrevisiondate(number revision) Recupera a versão atual da entidade da classe indicada (parâmetro revisionentityclass ). O parâmetro persist indica se o registro retornado deve ou não ser salvo no banco de dados caso ainda não esteja efetivamente salvo. Retorna a lista de versões existentes para um determinado registro (parâmetro primarykey ) de uma determinada classe de entidade (parâmetro cls ). Retorna a última versão de uma determinada data. Retorna a data de uma determinada versão de entidade (parâmetro revision ). Pontos fracos da auditoria com Hibernate e Envers Existe uma informação equivocada na documentação da API do Envers. Nela diz que o método find(class<t> cls, Object primarykey, Number revision) da classe AuditReader retorna null caso seja passada como parâmetro uma versão inexistente na tabela de auditoria individual da tabela. Todavia o que ocorre nesse caso é que o método retorna a última versão da entidade. Nos métodos de recuperação de versões anteriores das entidades sob o controle de versão, os campos mapeados para objetos de outras entidades não são recuperados. É como se estivessem em modo Lazy eternamente, pois o Hibernate não consegue recuperar seus campos em runtime. Para isso, é preciso uma técnica alternativa através do uso de recursos específicos do Hibernate, como mostra a Listagem 13. // única maneira de fazer o objeto ser preenchido Hibernate.initialize(timeRecuperado); Impacto na performance com uso do Envers Um trabalho de estudo do impacto na performance em uma aplicação com uso de Envers seria muito longo, mas, por dedução, acredita-se que o impacto é diretamente proporcional ao número de tabelas marcadas para auditoria e ao número de entidades envolvidas por operação. Para cada entidade mapeada para auditoria com Envers, a cada operação interceptada por ele, um método de escuta (seção Escuta de eventos de auditoria ) é invocado pelo menos uma vez. Caso a entidade possua mapeamentos de um para muitos ou de muitos para muitos em cascata com outras entidades também mapeadas para auditoria, o número de chamadas aos métodos de escuta é proporcional ao número de objetos envolvidos na operação. Portanto, é uma boa prática evitar o mapeamento de todas as classes de entidades e grandes projetos para evitar grandes perdas de performance. Porém, se os requisitos exigirem isso, uma menor performance é um preço a se pagar. Considerações finais Neste artigo foi abordado o framework Envers para auditoria de persistência com o Hibernate. Foram mostrados a configuração básica, alguns aspectos avançados e algumas dificuldades no uso deste framework. Os recursos oferecidos pelo Envers para auditoria com Hibernate e JPA são bem variados e poderosos, portanto, espera-se que este artigo estimule a criação de sistemas de auditoria de persistência robustos que são importantíssimos para a maioria dos tipos de sistema e indispensáveis em sistemas corporativos. Referências 57

Auditando persistência com JPA

Auditando persistência com JPA a r t i g o Em ambientes corporativos, a auditoria sobre as operações de banco de dados é importantíssima, quando não, indispensável. Essa importância surge a partir de um conjunto de necessidades, como:

Leia mais

Hibernate Envers Easy Entity Auditing

Hibernate Envers Easy Entity Auditing Hibernate Envers Easy Entity Auditing Auditando suas classes de persistência com Hibernate Envers Castro (@CastroAlexandre) Consultor (Summa) e Instrutor (Globalcode) SCJP, SCWCD, SCBCD, SCEA-I, SCSNI

Leia mais

Desmistificando o Hibernate Envers em 10 passos

Desmistificando o Hibernate Envers em 10 passos _envers Desmistificando o Hibernate Envers em 10 passos Auditoria de dados? Registro de Log? Trilha de auditoria? Descubra como é fácil, através do Hibernate Envers, rastrear o histórico de mudanças e

Leia mais

Persistindo dados com TopLink no NetBeans

Persistindo dados com TopLink no NetBeans Persistindo dados com TopLink no NetBeans O que é TopLink? O TopLink é uma ferramenta de mapeamento objeto/relacional para Java. Ela transforma os dados tabulares de um banco de dados em um grafo de objetos

Leia mais

Mapeamento Lógico/Relacional com JPA

Mapeamento Lógico/Relacional com JPA Mapeamento Lógico/Relacional com JPA Elaine Quintino da Silva Doutora em Ciência da Computação pelo ICMC-USP/São Carlos Analista de Sistemas UOL PagSeguro Instrutora Globalcode Agenda! Persistência de

Leia mais

Persistência de Dados em Java com JPA e Toplink

Persistência de Dados em Java com JPA e Toplink Persistência de Dados em Java com JPA e Toplink Vinicius Teixeira Dallacqua Curso de Tecnologia em Sistemas para Internet Instituto Federal de Educação, Ciência e Tecnologia - IFTO AE 310 Sul, Avenida

Leia mais

ALTO DESEMPENHO UTILIZANDO FRAMEWORK HIBERNATE E PADRÃO JAVA PERSISTENCE API

ALTO DESEMPENHO UTILIZANDO FRAMEWORK HIBERNATE E PADRÃO JAVA PERSISTENCE API ALTO DESEMPENHO UTILIZANDO FRAMEWORK HIBERNATE E PADRÃO JAVA PERSISTENCE API Tiago Henrique Gomes da Silva Balduino 1, Ricardo Ribeiro Rufino 1 1 Universidade Paranaense (Unipar) Paranavaí PR Brasil tiagobalduino77@gmail.com

Leia mais

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO UTILIZANDO O HIBERNATE Rafael Laurino GUERRA, Dra. Luciana Aparecida Martinez ZAINA Faculdade de Tecnologia de Indaiatuba FATEC-ID 1 RESUMO Este artigo apresenta

Leia mais

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF)

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF) Sessão Prática II JPA entities e unidades de persistência 1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF) a) Criar um Web Application (JPAsecond) como anteriormente:

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Curso: Sistemas de Informações Arquitetura de Software Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 7 JPA A Persistência com JPA Para configurar o JPA

Leia mais

ruirossi@ruirossi.pro.br

ruirossi@ruirossi.pro.br Persistência Com JPA & Hibernate Rui Rossi dos Santos ruirossi@ruirossi.pro.br Mediador: Rui Rossi dos Santos Slide 1 Mapeamento Objeto-Relacional Contexto: Linguagem de programação orientada a objetos

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 10 Persistência de Dados

Leia mais

JPA Passo a Passo. Henrique Eduardo M. Oliveira henrique@voffice.com.br. Globalcode Open4Education

JPA Passo a Passo. Henrique Eduardo M. Oliveira henrique@voffice.com.br. Globalcode Open4Education JPA Passo a Passo Henrique Eduardo M. Oliveira henrique@voffice.com.br 1 Palestrante Henrique Eduardo M. Oliveira (henrique@voffice.com.br) > Trabalha: Arquiteto JEE / Instrutor Java > Formação: Ciências

Leia mais

Prova Específica Cargo Desenvolvimento

Prova Específica Cargo Desenvolvimento UNIVERSIDADE FEDERAL DO PIAUÍ Centro de Educação Aberta e a Distância CEAD/UFPI Rua Olavo Bilac 1148 - Centro CEP 64.280-001 Teresina PI Brasil Fones (86) 3215-4101/ 3221-6227 ; Internet: www.uapi.edu.br

Leia mais

Etc & Tal. Volume 2 - Número 1 - Abril 2009 SBC HORIZONTES 44

Etc & Tal. Volume 2 - Número 1 - Abril 2009 SBC HORIZONTES 44 Armazenando Dados em Aplicações Java Parte 2 de 3: Apresentando as opções Hua Lin Chang Costa, hualin@cos.ufrj.br, COPPE/UFRJ. Leonardo Gresta Paulino Murta, leomurta@ic.uff.br, IC/UFF. Vanessa Braganholo,

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Curso: Engenharia de Software Arquitetura de Software Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 9 Mapeamento em JPA Introdução O mapeamento objeto-relacional

Leia mais

Desenvolvimento de aplicações Web. Java Server Pages

Desenvolvimento de aplicações Web. Java Server Pages Desenvolvimento de aplicações Web Java Server Pages Hamilton Lima - athanazio@pobox.com 2003 Como funciona? Servidor web 2 Internet 1 Browser 3 Arquivo jsp 4 JSP Compilado 2 Passo a passo 1 browser envia

Leia mais

Persistência de dados com JPA. Hélder Antero Amaral Nunes haanunes@gmail.com

Persistência de dados com JPA. Hélder Antero Amaral Nunes haanunes@gmail.com Persistência de dados com JPA Hélder Antero Amaral Nunes haanunes@gmail.com O que é persistência? A persistência de dados é o fato de pegar um dado e torná-lo persistente, ou seja, salvar em algum banco

Leia mais

Hibernate. Mapeamento Objeto-Relacional. Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior

Hibernate. Mapeamento Objeto-Relacional. Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior Hibernate Mapeamento Objeto-Relacional Baseado nas notas de aula de João Dalyson e Raphaela Galhardo Fernandes Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior Objetivos Aprender MOR usando Hibernate

Leia mais

Aula 2 - Revisão de JPA (Java Persistence API)

Aula 2 - Revisão de JPA (Java Persistence API) Aula 2 - Revisão de JPA (Java Persistence API) Professor: Ricardo Luis dos Santos IFSUL 2015 Tabela para Revisão Assunto (JPA) Interesse? 1 Vantagens e Desvantagens 4 2 Principais Conceitos 7 3 Anotações

Leia mais

Java e Banco de Dados: JDBC, Hibernate e JPA

Java e Banco de Dados: JDBC, Hibernate e JPA Java e Banco de Dados: JDBC, Hibernate e JPA 1 Objetivos Apresentar de forma progressiva as diversas alternativas de persistência de dados que foram evoluindo na tecnologia Java, desde o JDBC, passando

Leia mais

Aula 2 - Revisão de JPA (Java Persistence API)

Aula 2 - Revisão de JPA (Java Persistence API) Aula 2 - Revisão de JPA (Java Persistence API) Professor: Ricardo Luis dos Santos IFSUL 2015 Tabela para Revisão Assunto (JPA) Interesse? 1 Vantagens e Desvantagens 4 2 Principais Conceitos 7 3 Anotações

Leia mais

Nome Número: Série. Relacionamentos

Nome Número: Série. Relacionamentos Nome Número: Série Relacionamentos Competências: Organizar dados coletadas de acordo com as ferramentas de gerenciamento e Selecionar ferramentas para manipulação de dados; Habilidades: Utilizar um ambiente

Leia mais

JPA: Persistência padronizada em Java

JPA: Persistência padronizada em Java JPA: Persistência padronizada em Java FLÁVIO HENRIQUE CURTE Bacharel em Engenharia de Computação flaviocurte.java@gmail.com Programação Orientada a Objetos X Banco de Dados Relacionais = Paradigmas diferentes

Leia mais

Pró-Reitoria de Educação a Distância. Manual do Ambiente Virtual de Aprendizagem para alunos

Pró-Reitoria de Educação a Distância. Manual do Ambiente Virtual de Aprendizagem para alunos Pró-Reitoria de Educação a Distância Manual do Ambiente Virtual de Aprendizagem para alunos Como acessar o ambiente 1. Entre no Ambiente Virtual de Aprendizagem localizado na página principal do Portal

Leia mais

Busca fonética. um jeito mais inteligente e eficiente de procurar nomes TONY%

Busca fonética. um jeito mais inteligente e eficiente de procurar nomes TONY% Busca fonética um jeito mais inteligente e eficiente de procurar nomes Tony Calleri França (tonylampada@gmail.com) é Engenheiro de Computação formado pelo ITA, e atua há 10 anos com desenvolvimento de

Leia mais

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse Como criar um EJB Criando um projeto EJB com um cliente WEB no Eclipse Gabriel Novais Amorim Abril/2014 Este tutorial apresenta o passo a passo para se criar um projeto EJB no Eclipse com um cliente web

Leia mais

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano Programação Servidor para Sistemas Web 1 Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano Objetivo: Apresentar a teoria por trás dos padrões na construção de aplicações Web. INTRODUÇÃO Nas aulas anteriores

Leia mais

Treinamento de Administrador. Zoho CRM

Treinamento de Administrador. Zoho CRM Treinamento de Administrador Zoho CRM Objetivos Apresentar os principais recursos do CRM a fim de propiciar ao administrador do sistema autonomia para: Criar e alterar campos; Acrescentar, renomear e customizar

Leia mais

Parte II Persistência entre Modelos de Dados

Parte II Persistência entre Modelos de Dados Parte II Persistência entre Modelos de Dados Clodis Boscarioli Agenda: Hibernate Introdução; Configurações; Mapeamento com XML; Exemplos; Associações: 1-n; n-1; n-n; 1-1. Hibernate - Introdução O Hibernate

Leia mais

Framework utilizando reflexão e aspectos para persistência de objetos em java

Framework utilizando reflexão e aspectos para persistência de objetos em java Framework utilizando reflexão e aspectos para persistência de objetos em java Antonio Carlos Rolloff (UNIPAR) acrolloff@gmail.com Arthur Cattaneo Zavadski (UNIPAR) arthur@datacoper.com.br Maria Aparecida

Leia mais

JPA (Java Persistence API) Marcos Kalinowski (kalinowski@ic.uff.br)

JPA (Java Persistence API) Marcos Kalinowski (kalinowski@ic.uff.br) JPA (Java Persistence API) (kalinowski@ic.uff.br) Agenda Conceitos básicos do JPA Mapeamento objeto relacional utilizando JPA Utilizando JPA para a persistência na prática EntityManager JPQL (Java Persistence

Leia mais

DESENVOLVIMENTO DE SOFTWARE

DESENVOLVIMENTO DE SOFTWARE VARIAÁ VEL Antes de iniciarmos os comandos referentes a Banco de Dados, precisamos de uma breve descrição técnica sobre Variáveis que serão uma constante em programação seja qual for sua forma de leitura.

Leia mais

HIBERNATE EM APLICAÇÃO JAVA WEB

HIBERNATE EM APLICAÇÃO JAVA WEB HIBERNATE EM APLICAÇÃO JAVA WEB Raul Victtor Barbosa Claudino¹, Ricardo Ribeiro Rufino¹ ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil victtor.claudino@gmail.com, ricardo@unipar.br Resumo: Este

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Curso: Engenharia de Software Arquitetura de Software Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 11 Mapeamento em JPA - Continuação Objetos Embutidos

Leia mais

4 Implementação e Ambiente de Simulação

4 Implementação e Ambiente de Simulação 4 Implementação e Ambiente de Simulação Conforme apresentado no capítulo anterior, o protocolo HIP não estava implementado em nenhum framework do OMNeT++. Estudando os frameworks disponíveis para esse

Leia mais

WebWork 2. João Carlos Pinheiro. jcpinheiro@cefet-ma.br

WebWork 2. João Carlos Pinheiro. jcpinheiro@cefet-ma.br WebWork 2 João Carlos Pinheiro jcpinheiro@cefet-ma.br Versão: 0.5 Última Atualização: Agosto/2005 1 Agenda Introdução WebWork 2 & XWork Actions Views Interceptadores Validação Inversão de Controle (IoC)

Leia mais

Hibernate. Mapeamento O/R Marcio Aguiar Ribeiro aguiar.marcio@gmail.com

Hibernate. Mapeamento O/R Marcio Aguiar Ribeiro aguiar.marcio@gmail.com Hibernate Mapeamento O/R Marcio Aguiar Ribeiro aguiar.marcio@gmail.com Hibernate O que é? Ferramenta para mapeamento O/R em Java Uma das mais difundidas Transparência Independência quanto ao tipo de base

Leia mais

IPv6: Introdução. Escrito por Paul Stalvig Gerente Técnico de Marketing

IPv6: Introdução. Escrito por Paul Stalvig Gerente Técnico de Marketing IPv6: Introdução Assim como outras pessoas, eu acredito que algumas complicam demais a vida. Talvez seja a segurança do emprego, o efeito "Chicken Little" ou o fato de que isso dá ao mundo de TI uma plataforma

Leia mais

Material de Apoio 5. int getres() { return res; O que estas classes possuem em comum? 1) 2) 3)

Material de Apoio 5. int getres() { return res; O que estas classes possuem em comum? 1) 2) 3) pg. 1/6 Material de Apoio 5 Herança Observe o código das classes Fatorial e Fibonacci apresentados abaixo. class Fatorial { class Fibonacci { private int n, res; private int n, res; public Fatorial( int

Leia mais

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS Tratamento de Eventos Professor: Danilo Giacobo OBJETIVOS DA AULA Apresentar os modelos mais comuns de tratamento de eventos da plataforma Android. Aprender a utilizar

Leia mais

Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede

Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede O servidor de arquivos fornece um ponto centralizado na rede para armazenamento e compartilhamento de arquivos entre os usuários. Quando

Leia mais

Manual do Usuário Publicador

Manual do Usuário Publicador Manual do Usuário Publicador Portal STN SERPRO Superintendência de Desenvolvimento SUPDE Setor de Desenvolvimento de Sítios e Portais DEDS2 Versão 1.1 Fevereiro 2014 Sumário Sobre o Manual... 3 Objetivo...

Leia mais

PROJETO PEDAGÓGICO DE CURSOS

PROJETO PEDAGÓGICO DE CURSOS 1 de 6 PROJETO PEDAGÓGICO DE CURSOS BURITREINAMENTOS MANAUS-AM MARÇO / 2015 2 de 6 PACOTES DE TREINAMENTOS BURITECH A Buritech desenvolveu um grupo de pacotes de treinamentos, aqui chamados de BuriPacks,

Leia mais

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC .business @BusinessController TurmaBC TurmaBC TurmaBC

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC .business @BusinessController TurmaBC TurmaBC TurmaBC Módulo 5 No módulo anterior adaptamos nosso projeto para persistir as informações no banco de dados utilizando as facilidades da extensão demoiselle-jpa. Experimentamos o controle transacional do Framework

Leia mais

para persistência de objetos na Google App Engine

para persistência de objetos na Google App Engine capa_ Usando JSON para persistência de objetos na Google App Engine A criação de aplicações de larga escala com dados distribuídos exige que repensemos nossos modelos de persistência de objetos. Ambientes

Leia mais

Especificação do Trabalho

Especificação do Trabalho Especificação do Trabalho I. Introdução O objetivo deste trabalho é abordar a prática da programação orientada a objetos usando a linguagem Java envolvendo os conceitos de classe, objeto, associação, ligação,

Leia mais

Usando o Conference Manager do Microsoft Outlook

Usando o Conference Manager do Microsoft Outlook Usando o Conference Manager do Microsoft Outlook Maio de 2012 Conteúdo Capítulo 1: Usando o Conference Manager do Microsoft Outlook... 5 Introdução ao Conference Manager do Microsoft Outlook... 5 Instalando

Leia mais

JSF e PrimeFaces. Professor: Ricardo Luis dos Santos IFSUL Campus Sapucaia do Sul

JSF e PrimeFaces. Professor: Ricardo Luis dos Santos IFSUL Campus Sapucaia do Sul JSF e PrimeFaces Professor: Ricardo Luis dos Santos IFSUL 2015 Agenda Introdução Desenvolvimento Web Java Server Faces Exercício 2 Introdução Ao longo dos anos diversas linguagens de programação foram

Leia mais

Conectar diferentes pesquisas na internet por um menu

Conectar diferentes pesquisas na internet por um menu Conectar diferentes pesquisas na internet por um menu Pré requisitos: Elaboração de questionário Formulário multimídia Publicação na internet Uso de senhas na Web Visualização condicionada ao perfil A

Leia mais

Aula 4. Carlos Eduardo de Carvalho Dantas (carloseduardocarvalhodantas@gmail.com)

Aula 4. Carlos Eduardo de Carvalho Dantas (carloseduardocarvalhodantas@gmail.com) Persistência com JDBC e JPA Aula 4 Carlos Eduardo de Carvalho Dantas (carloseduardocarvalhodantas@gmail.com) A sabedoria não se transmite, é preciso que nós a descubramos fazendo uma caminhada que ninguém

Leia mais

UNIVERSIDADE FEDERAL DA BAHIA INSTITUTO DE MATEMÁTICA CIÊNCIA DA COMPUTAÇÃO LINGUAGENS PARA APLICAÇÃO COMERCIAL. Java Peristence API 1.

UNIVERSIDADE FEDERAL DA BAHIA INSTITUTO DE MATEMÁTICA CIÊNCIA DA COMPUTAÇÃO LINGUAGENS PARA APLICAÇÃO COMERCIAL. Java Peristence API 1. UNIVERSIDADE FEDERAL DA BAHIA INSTITUTO DE MATEMÁTICA CIÊNCIA DA COMPUTAÇÃO LINGUAGENS PARA APLICAÇÃO COMERCIAL Java Peristence API 1.0 Salvador-Ba Março/2009 1 RAMON PEREIRA LOPES Java Peristence API

Leia mais

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE Amarildo Aparecido Ferreira Junior 1, Ricardo Ribeiro Rufino 1 ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil aapfjr@gmail.com

Leia mais

PLANO DE ENSINO INSTITUTO FEDERAL SUL-RIO-GRANDENSE CAMPUS SAPUCAIA DO SUL PRÓ-REITORIA DE ENSINO

PLANO DE ENSINO INSTITUTO FEDERAL SUL-RIO-GRANDENSE CAMPUS SAPUCAIA DO SUL PRÓ-REITORIA DE ENSINO INSTITUTO FEDERAL SUL-RIO-GRANDENSE CAMPUS SAPUCAIA DO SUL PRÓ-REITORIA DE ENSINO Curso: Técnico em Informática Disciplina: Linguagem de Programação III Turma: 4I Professor (a): Ricardo Luis dos Santos

Leia mais

Como já foi muito bem detalhado no Capítulo IV, o jcompany Developer Suite pode ser

Como já foi muito bem detalhado no Capítulo IV, o jcompany Developer Suite pode ser A1Criando um módulo de negócio Capítulo 27 Aplicação dividida em módulos - Introdução Como já foi muito bem detalhado no Capítulo IV, o jcompany Developer Suite pode ser compreendido como uma solução de

Leia mais

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Maio/ 2015

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Maio/ 2015 Manipulação de Banco de Dados com Java Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Maio/ 2015 Acesso a um SGBD Em sistemas mais simples o uso de arquivos pode ser usado mas para aplicações

Leia mais

Introdução ao SQL. O que é SQL?

Introdução ao SQL. O que é SQL? Introdução ao SQL 1 O que é SQL? Inicialmente chamada de Sequel, SQL (Structured Query Language), é a linguagem padrão utilizada para comunicar-se com um banco de dados relacional. A versão original foi

Leia mais

HIBERNATE Criando um projeto em Java + Hibernate do zero

HIBERNATE Criando um projeto em Java + Hibernate do zero HIBERNATE Criando um projeto em Java + Hibernate do zero SUMÁRIO 1 Instalação do NetBeans 2 Instalação do Java Development Kit (JDK) 3 Criar projeto no NetBeans 4 O arquivo hibernate.cfg.xml 5 Criar as

Leia mais

Parte I. Orientação a objetos no PHP. Contato: <lara.popov@ifsc.edu.br> Site: http://professores.chapeco.ifsc.edu.br/lara/

Parte I. Orientação a objetos no PHP. Contato: <lara.popov@ifsc.edu.br> Site: http://professores.chapeco.ifsc.edu.br/lara/ Parte I Programação para WEB II Orientação a objetos no PHP Contato: Site: http://professores.chapeco.ifsc.edu.br/lara/ Programação para WEB II 1 PHP Estruturado Os programadores

Leia mais

LGTi Tecnologia. Manual - Outlook Web App. Soluções Inteligentes. Siner Engenharia

LGTi Tecnologia. Manual - Outlook Web App. Soluções Inteligentes. Siner Engenharia LGTi Tecnologia Soluções Inteligentes Manual - Outlook Web App Siner Engenharia Sumário Acessando o Outlook Web App (Webmail)... 3 Email no Outlook Web App... 5 Criar uma nova mensagem... 6 Trabalhando

Leia mais

Tutorial para criação de componentes JSF Facelets Por Érico GR 07/08/2007

Tutorial para criação de componentes JSF Facelets Por Érico GR 07/08/2007 Tutorial para criação de componentes JSF Facelets Por Érico GR 07/08/2007 Nível: Intermediário Este tutorial tem como objetivo criar um simples componente que renderiza uma tag label utilizando recursos

Leia mais

Capítulo 04: Persistência com SQLite

Capítulo 04: Persistência com SQLite Capítulo 04: Persistência com SQLite Instrutor Programador desde 2000 Aluno de doutorado Mestre em informática pelo ICOMP/UFAM Especialista em aplicações WEB FUCAPI marcio.palheta@gmail.com sites.google.com/site/marcio

Leia mais

Como sobreviver com Java 2? Saulo Arruda

Como sobreviver com Java 2? Saulo Arruda Como sobreviver com Java 2? Saulo Arruda Agenda Apresentação Contexto do mercado Soluções para Java 5+ Soluções para Java 2 Conclusões Apresentação Saulo Arruda (http://sauloarruda.eti.br) Trabalha com

Leia mais

CURSO DESENVOLVEDOR JAVA Edição 2010

CURSO DESENVOLVEDOR JAVA Edição 2010 CURSO DESENVOLVEDOR JAVA Edição 2010 O curso foi especialmente planejado para os profissionais que desejam trabalhar com desenvolvimento de sistemas seguindo o paradigma Orientado a Objetos e com o uso

Leia mais

CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011

CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011 CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011 O curso foi especialmente planejado para os profissionais que desejam trabalhar com desenvolvimento de sistemas seguindo o paradigma

Leia mais

HP Quality Center. Preparar materiais de treinamento e observações para a nova versão 16 Suporte pós-atualização 16 Suporte 17 Chamada à ação 17

HP Quality Center. Preparar materiais de treinamento e observações para a nova versão 16 Suporte pós-atualização 16 Suporte 17 Chamada à ação 17 Documento técnico HP Quality Center Atualize o desempenho Índice Sobre a atualização do HP Quality Center 2 Introdução 2 Público-alvo 2 Definição 3 Determine a necessidade de uma atualização do HP Quality

Leia mais

Desenvolvendo Portlets utilizando JSF, Ajax, Richfaces. Gustavo Lira Consultor 4Linux gustavo@4linux.com.br

Desenvolvendo Portlets utilizando JSF, Ajax, Richfaces. Gustavo Lira Consultor 4Linux gustavo@4linux.com.br Desenvolvendo Portlets utilizando JSF, Ajax, Richfaces Gustavo Lira Consultor 4Linux gustavo@4linux.com.br Especificação para os Portlets Os padrões para Portlets Java EE são definidos por duas JSRs: 168,

Leia mais

Classes de Entidades Persistentes JDB

Classes de Entidades Persistentes JDB Classes de Entidades Persistentes JDB Brasil, Natal-RN, 07 de setembro de 2011 Welbson Siqueira Costa www.jdbframework.com Nota de Retificação: em 11/12/2011 a Listagem 3 desse tutorial sofreu uma pequena

Leia mais

Alteração do POC (Decreto de Lei nº. 35/2005) no sispoc

Alteração do POC (Decreto de Lei nº. 35/2005) no sispoc DOSPrinter Manual do Utilizador Alteração do POC (Decreto de Lei nº. 35/2005) no sispoc Data última versão: 20.03.2006 Versão : 1.1 Data criação: 01.03.2006 Faro R. Dr. José Filipe Alvares, 31 8005-220

Leia mais

Forefront Server Security Management Console: Gerenciamento Simplificado da Segurança para Mensagens e Colaboração White Paper

Forefront Server Security Management Console: Gerenciamento Simplificado da Segurança para Mensagens e Colaboração White Paper Forefront Server Security Management Console: Gerenciamento Simplificado da Segurança para Mensagens e Colaboração White Paper Outubro de 2007 Resumo Este white paper explica a função do Forefront Server

Leia mais

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA Manual do Moodle- Sala virtual UNIFAP MACAPÁ-AP 2012 S U M Á R I O 1 Tela de Login...3 2 Tela Meus

Leia mais

1 Funções básicas de implementação de arquivos

1 Funções básicas de implementação de arquivos 1 Funções básicas de implementação de arquivos 1.1 Definindo registros Depois de um objeto do mundo real ter sido modelado, ou seja, após seus atributos importantes (e relevantes) terem sido identificados,

Leia mais

2 Ferramentas Utilizadas

2 Ferramentas Utilizadas 2 Ferramentas Utilizadas Esta dissertação utiliza vários outros trabalhos para implementar os mecanismos de adaptação abordados. Essas ferramentas são descritas nas seções seguintes. 2.1 Lua Lua [7, 8]

Leia mais

FICHA DE CATALOGAÇÃO DE REVISTAS DE NOTÍCIAS. Coleção

FICHA DE CATALOGAÇÃO DE REVISTAS DE NOTÍCIAS. Coleção Título: SQL Magazine Notas de Título Feita para Desenvolvedores de Software e DBAs. Descrição Geral: Revista focada em banco de dados, análise, projeto e modelagem. Editor(es): Diretor responsável Gladstone

Leia mais

Rotina de Discovery e Inventário

Rotina de Discovery e Inventário 16/08/2013 Rotina de Discovery e Inventário Fornece orientações necessárias para testar a rotina de Discovery e Inventário. Versão 1.0 01/12/2014 Visão Resumida Data Criação 01/12/2014 Versão Documento

Leia mais

Implementando uma Classe e Criando Objetos a partir dela

Implementando uma Classe e Criando Objetos a partir dela Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 04 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 2 Prof. Cristóvão Cunha Implementando uma Classe

Leia mais

Autor: Ricardo Francisco Minzé Júnior - ricardominze@yahoo.com.br Desenvolvendo aplicações em camadas com PHP 5.

Autor: Ricardo Francisco Minzé Júnior - ricardominze@yahoo.com.br Desenvolvendo aplicações em camadas com PHP 5. Desenvolvendo aplicações em camadas com PHP 5. Talvez a primeira vista você ache estranha a palavra Camada em programação, mas o que vem a ser Camada? Segundo o dicionário: Camada 1 - Qualquer matéria

Leia mais

UM ESTUDO PARA A EVOLUÇÃO DO PHP COM A LINGUAGEM ORIENTADA A OBJETOS

UM ESTUDO PARA A EVOLUÇÃO DO PHP COM A LINGUAGEM ORIENTADA A OBJETOS UM ESTUDO PARA A EVOLUÇÃO DO PHP COM A LINGUAGEM ORIENTADA A OBJETOS Jean Henrique Zenzeluk* Sérgio Ribeiro** Resumo. Este artigo descreve os conceitos de Orientação a Objetos na linguagem de programação

Leia mais

PADRÃO PARA MONITORAMENTO DE APLICATIVOS PLATAFORMA DE DESENVOLVIMENTO PINHÃO PARANÁ

PADRÃO PARA MONITORAMENTO DE APLICATIVOS PLATAFORMA DE DESENVOLVIMENTO PINHÃO PARANÁ PADRÃO PARA MONITORAMENTO DE APLICATIVOS PLATAFORMA DE DESENVOLVIMENTO PINHÃO PARANÁ Janeiro 2010 Sumário de Informações do Documento Tipo do Documento: Referência Título do Documento: Padrão para Monitoramento

Leia mais

ÍNDICE. Delphi... 3 CAPÍTULO 1 INTRODUÇÃO... 06 CAPÍTULO 2 INSTALANDO O DELPHI... 10

ÍNDICE. Delphi... 3 CAPÍTULO 1 INTRODUÇÃO... 06 CAPÍTULO 2 INSTALANDO O DELPHI... 10 Delphi 7 ÍNDICE CAPÍTULO 1 INTRODUÇÃO... 06 CAPÍTULO 2 INSTALANDO O DELPHI... 10 CAPÍTULO 3 INICIANDO O Delphi... 18 FORM DESIGN... 19 CODE EDITOR... 23 OBJECT INSPECTOR... 26 OBJECT TREE VIEW... 29 PALHETA

Leia mais

Guia do Cúram Configuration Transport Manager

Guia do Cúram Configuration Transport Manager IBM Cúram Social Program Management Guia do Cúram Configuration Transport Manager Versão 6.0.5 IBM Cúram Social Program Management Guia do Cúram Configuration Transport Manager Versão 6.0.5 Nota Antes

Leia mais

Exercícios de Revisão Java Básico

Exercícios de Revisão Java Básico Exercícios de Revisão Java Básico (i) Programação básica (estruturada) 1) Faça um programa para calcular o valor das seguintes expressões: S 1 = 1 1 3 2 5 3 7 99... 4 50 S 2 = 21 50 22 49 23 48...250 1

Leia mais

Aumentando a performance do Hibernate com Ehcache

Aumentando a performance do Hibernate com Ehcache a r t i g o Aumentando a performance do Hibernate com Ehcache José Yoshiriro Ajisaka Ramos (jyoshiriro@gmail.com) bacharel em Sistemas de Informação (IESAM). Analista/desenvolvedor do TJ Pará. Trabalha

Leia mais

SISTEMAS DE INFORMAÇÃO GERENCIAIS

SISTEMAS DE INFORMAÇÃO GERENCIAIS SISTEMAS DE INFORMAÇÃO GERENCIAIS Aluno: Luiza Cavalcanti Marques Orientador: Silvio Hamacher Introdução A modelagem e a utilização de bancos de dados em atividades gerenciais têm sofrido um aumento significativo

Leia mais

Criar as tabelas para um banco de dados

Criar as tabelas para um banco de dados Treinamento Criar as tabelas para um banco de dados ANTES DE COMEÇAR O primeiro curso desta série, "Criar as tabelas de um novo banco de dados", forneceu uma lista de tabelas e campos para uso no banco

Leia mais

MOODLE NA PRÁTICA PEDAGÓGICA

MOODLE NA PRÁTICA PEDAGÓGICA Carmen Mathias Agosto - 2009 I. CADASTRO 1. Acessar o site de treinamento (teste): http://moodle_course.unifra.br/ 2. Faça o login, clicando em acesso no lado direito superior da tela: 3. Coloque seu nome

Leia mais

INFORMÁTICA (SUBÁREA : DESENVOLVIMENTO E DESENVOLVIMENTO WEB)

INFORMÁTICA (SUBÁREA : DESENVOLVIMENTO E DESENVOLVIMENTO WEB) CONCURSO PÚBLICO DOCENTE IFMS EDITAL Nº 002/2013 CCP IFMS INFORMÁTICA (SUBÁREA : DESENVOLVIMENTO E DESENVOLVIMENTO WEB) Uso exclusivo do IFMS. GABARITO QUESTÃO 1 (Valor 4 pontos) A Lei nº 11.892, de 29

Leia mais

3.1 Definições Uma classe é a descrição de um tipo de objeto.

3.1 Definições Uma classe é a descrição de um tipo de objeto. Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Classes Autoria:Aristófanes Corrêa Silva Adaptação:

Leia mais

Criando um CRUD RESTful com Jersey, JPA e MySQL

Criando um CRUD RESTful com Jersey, JPA e MySQL www.devmedia.com.br [versão para impressão] Link original: http://www.devmedia.com.br/articles/viewcomp.asp?comp=33273 Criando um CRUD RESTful com Jersey, JPA e MySQL Aprenda neste artigo a implementar

Leia mais

Facebook. Java com o. Integrando Aplicações. Descubra como é fácil criar uma aplicação para rodar no Facebook. _capa

Facebook. Java com o. Integrando Aplicações. Descubra como é fácil criar uma aplicação para rodar no Facebook. _capa _capa Integrando Aplicações Java com o Facebook Descubra como é fácil criar uma aplicação para rodar no Facebook Desde o lançamento oficial do Facebook, em 2004, o número de usuários vem aumentando a cada

Leia mais

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO DEPARTAMENTO DE ESTATÍSTICA E INFORMÁTICA BACHARELADO EM SISTEMAS DE INFORMAÇÃO RAPID APPLICATION DEVELOPMENT

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO DEPARTAMENTO DE ESTATÍSTICA E INFORMÁTICA BACHARELADO EM SISTEMAS DE INFORMAÇÃO RAPID APPLICATION DEVELOPMENT UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO DEPARTAMENTO DE ESTATÍSTICA E INFORMÁTICA BACHARELADO EM SISTEMAS DE INFORMAÇÃO RAPID APPLICATION DEVELOPMENT Disciplina: Modelagem a Programação Orientada a Objetos

Leia mais

NOVIDADES DO JAVA PARA PROGRAMADORES C

NOVIDADES DO JAVA PARA PROGRAMADORES C PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB NOVIDADES DO JAVA PARA PROGRAMADORES C Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o Conceito de Classes e Objetos Capacitar para a criação de objetos simples

Leia mais

Tutorial Moodle ESDM - professores

Tutorial Moodle ESDM - professores Primeira entrada: Tutorial Moodle ESDM - professores USUÁRIO - MODIFICAR PERFIL No primeiro login/entrada no MOODLE aparecerá a tela do PERFIL para que o usuário complete seus dados. EDITANDO O PERFIL

Leia mais

Java Persistence API. Entity Entity Campos e Propriedades Entity Chaves Primárias Entity Associações

Java Persistence API. Entity Entity Campos e Propriedades Entity Chaves Primárias Entity Associações Java Persistence API Entity Entity Campos e Propriedades Entity Chaves Primárias Entity Associações Entity Manager Entity Manager API Java Persistence Query Language (JPQL) Persistence Units 1 Java Persistence

Leia mais

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Estruturas de Sistemas Operacionais Um sistema operacional fornece o ambiente no qual os programas são executados. Internamente,

Leia mais

Guia do Usuário. idocs Content Server v.2.0-1 -

Guia do Usuário. idocs Content Server v.2.0-1 - Guia do Usuário idocs Content Server v.2.0-1 - 2013 BBPaper_Ds - 2 - Sumário Introdução... 4 Inicializando a aplicação... 6 Ambiente... 7 Alterando o ambiente... 8 Senhas... 10 Alterando senhas... 10 Elementos

Leia mais

VIGDENGUE - SISTEMA DE APOIO AO ACOMPANHAMENTO E VIGILÂNCIA DE CASOS NOTIFICADOS DE DENGUE

VIGDENGUE - SISTEMA DE APOIO AO ACOMPANHAMENTO E VIGILÂNCIA DE CASOS NOTIFICADOS DE DENGUE VIGDENGUE - SISTEMA DE APOIO AO ACOMPANHAMENTO E VIGILÂNCIA DE CASOS NOTIFICADOS DE DENGUE 1. Introdução Prof. MSc. Bruno Carlos da Cunha Costa Coordenador do Projeto UNIFESO Prof. MSc. José Roberto de

Leia mais

Resolução da lista de exercícios de casos de uso

Resolução da lista de exercícios de casos de uso Resolução da lista de exercícios de casos de uso 1. Explique quando são criados e utilizados os diagramas de casos de uso no processo de desenvolvimento incremental e iterativo. Na fase de concepção se

Leia mais

Gestor de Janelas Gnome

Gestor de Janelas Gnome 6 3 5 Gestor de Janelas Gnome Nesta secção será explicado o funcionamento de um dos ambientes gráficos disponíveis no seu Linux Caixa Mágica, o Gnome. Na figura 5.1 apresentamos o GDM, o sistema gráfico

Leia mais