JPA 2: os novos recursos inspirados no Hibernate
|
|
- Judite Lima Domingos
- 8 Há anos
- Visualizações:
Transcrição
1 artigo JPA 2: os novos recursos inspirados no Hibernate A JPA 2.0 está apta a permitir todos os poderosos recursos que utilizamos do Hibernate? Paulo Silveira (paulo.silveira@caelum.com.br): é bacharel e mestre em Ciência da Computação pela USP, trabalha com Java há 10 anos, sendo 5 anos com consultoria, desenvolvimento e treinamento na Caelum. Raphael Lacerda (raphael.lacerda@caelum.com.br): é bacharel em Ciência da Computação pela Universidade Católica de Brasília, analista de sistemas do Banco do Brasil e instrutor da unidade Caelum Brasília. Possui as certificações SCJP 5.0 e SCWCD 5.0. A JPA 1.0 foi um grande passo: uma API baseada na experiência e sucesso do Hibernate para interfacear as diversas ferramentas ORM existentes no mercado. Mesmo com ela, muitos recursos específicos do Hibernate como Criteria, Second Level Cache, entre outros, não estavam disponíveis, fazendo com que frequentemente precisássemos acessar o framework diretamente. Como fica isso na JPA 2.0? O EJB3 ajudou a popularizar as ferramentas de mapeamento objeto-relacional (ORMs), que careciam de uma especificação dentro do Java EE. Uma tentativa mais abrangente, o Java Data Objects (JDO), ocorreu previamente sem alcançar muito sucesso. Um dos principais fatos que fez a Java Persistence API 1.0 (JPA) suceder foi, sem sombra de dúvidas, ter se baseado no que o mercado já estava adotando em larga escala: o Hibernate. Apesar de ser mais popular que a JDO, a JPA 1.0 não possui uma série de recursos um tanto populares entre os usuários do Hibernate. Podemos citar dois em especial: a forma orientada a objetos de pesquisa (Criterias) e o cache de entidades entre diferentes EntityManagers (2nd level cache). Será que a JPA 2.0 cobre bem esses aspectos, de tal forma que teremos uma real liberdade de escolha entre as implementações de JPA? As implementações da JPA 2.0 Para usarmos a JPA 2.0, precisamos de um persistence provider. Temos diversas opções, como o Hibernate, a OpenJPA e o EclipseLink. O Hibernate está em sua versão 3.5 beta2, sem a implementação de alguns recursos de Criteria aqui explorados. Usaremos o EclipseLink como exemplo que, além de ser a implementação de referência do Java EE 6, é um excelente teste para saber se os clássicos recursos presentes no Hibernate estão sendo bem implementados em outros providers.
2 Usando o EclipseLink e nosso modelo de classes Para utilizar a JPA 2.0 com o EclipseLink, basta você criar um projeto que contenha o eclipselink.jar, o jar da javax.persistence (que vem no pacote do EclipseLink) e o driver JDBC do seu banco de dados no build path do seu projeto. Além disso, você precisa configurar o persistence.xml dentro do META-INF (no eclipse, basta criar esse diretório dentro do seu src, que ele será criado no bin). A Listagem 1 mostra o persitence.xml configurado para o MySQL. Repare que muitas das propriedades foram padronizadas (não iniciam mais com hibernate ou eclipselink). Apenas as mais específicas dependem do provider que você está utilizando. As Listagens 2 e 3 mostram as classes Fornecedor e ContaPagar, que formam um relacionamento one-to-many bidirecional, mapeadas com as anotações já conhecidas da JPA 1.0, que serão utilizadas nos nossos testes. As Listagens 4 e 5 mostram uma simples classe JPAUtil apenas para facilitar nossos exemplos (no projeto, deve-se utilizar injeção de dependências para quem precisar de um EntityManager) além de uma superclasse para os testes dos nossos DAOs, que populam o banco de dados. Esse teste, somado a opção drop-and-create-tables do persistence.xml, faz com que uma pequena base seja populada para usarmos nas asserções. Esse superteste já utiliza do método save dos DAOs que veremos a seguir. Listagem 1. Persistence.xml. <persistence xmlns= xmlns:xsi= xsi:schemalocation= java.sun.com/xml/ns/persistence/persistence_2_0.xsd version= 2.0 > <persistence-unit name= caelum > <class>br.com.caelum.fornecedor</class> <class>br.com.caelum.contapagar</class> <properties> <property name= javax.persistence.jdbc.driver value= com.mysql.jdbc.driver /> <property name= javax.persistence.jdbc.url value= jdbc:mysql://localhost/caelum /> <property name= javax.persistence.jdbc.user value= root /> <property name= javax.persistence.jdbc.password value= /> <property name= eclipselink.ddl-generation value= drop-and-create-tables /> <property name= eclipselink.ddl-generation.output-mode value= database /> <property name= eclipselink.logging.level value= FINE /> </properties> </persistence-unit> </persistence> Listagem 2. Atributos da entidade public class private int id; private String fornecedor ) private List<ContaPagar> contas; // além de construtores auxiliares e getters Listagem 3. Atributos da entidade public class private int id; Criteria private String descricao; private Double private Fornecedor fornecedor; // além de construtores auxiliares e getters Listagem 4. Uma classe JPAUtil apenas para nossos testes. public class JPAUtil { private static EntityManagerFactory factory; public static EntityManager openmanager() { if (factory == null) factory = Persistence.createEntityManagerFactory( caelum ); return factory.createentitymanager(); public static void terminate() { factory.close(); factory = null; No Hibernate, é bem fácil criar um objeto que realizará uma pesquisa para retornar todos os fornecedores da nossa base de dados: session.createcriteria(fornecedor.class).list(); Como fica essa query com a JPA 2.0? A Listagem 6 mostra ela em uma forma minimal, que pode assustar no começo. Para dar um grande poder ao Criteria, a JPA 2.0 pode parecer um pouco verborrágica para quem estava acostumado com o modo sucinto do Hibernate. Se quisermos buscar por todos os valores de todas as contas a pagar do nosso sistema, no Hibernate podemos fazer uma Criteria como a seguinte: Projection property = Projections.property( valor ); session.createcriteria(contapagar.class).setprojection(property).list(); Já usando a JPA 2.0, utilizamos os selects em vez de projections. Para realizar a mesma pesquisa, devemos utilizar a Criteria do ContaPagarDAO mostrada na Listagem
3 Listagem 5. A superclasse dos nossos testes que popula a base. public class DaoTest { protected FornecedorDao fornecedordao; protected ContaPagarDao contadao; protected EntityManager public void setup() { this.manager = JPAUtil.openManager(); this.manager.gettransaction().begin(); this.fornecedordao = new FornecedorDao(manager); this.contadao = new ContaPagarDao(manager); // utilizando construtores auxiliares Fornecedor f1 = new Fornecedor( kalunga ); Fornecedor f2 = new Fornecedor( supervinhos ); Fornecedor f3 = new Fornecedor( saraiva ); ContaPagar cp1 = new ContaPagar( resmas, 100, f1); ContaPagar cp2 = new ContaPagar( canetas, 250, f1); ContaPagar cp3 = new ContaPagar( livros, 300, f3); this.fornecedordao.save(f1); this.fornecedordao.save(f2); this.fornecedordao.save(f3); this.contadao.save(cp1); this.contadao.save(cp2); this.contadao.save(cp3); public void teardown() { this.manager.close(); JPAUtil.terminate(); Listagem 6. FornecedorDAO e método para listar todos os fornecedores. public class FornecedorDao { private final EntityManager manager; public FornecedorDao(EntityManager manager) { this.manager = manager; Listagem 7. ContaPagarDAO e método para listar todos valores das contas(projection). public class ContaPagarDao { private final EntityManager manager; public ContaPagarDao(EntityManager manager) { this.manager = manager; public void save(contapagar cp) { this.manager.persist(cp); public List<Double> listtodosvalores() { CriteriaQuery<Double> cq = cb.createquery(double.class); Root<ContaPagar> cpagar = cq.from(contapagar.class); CriteriaQuery<Double> select = cq.select(cpagar.<double>get( valor )); return this.manager.createquery(select).getresultlist(); Apesar do intuito do artigo não ser ensinar a API nova de Criteria, e sim comparar seu poder ao do Hibernate, começa a ficar claro a analogia. O método createquery recebe o tipo de objeto que será retornado no momento da execução; o método from define o ponto de partida da pesquisa. Com a CriteriaQuery em mãos, já é possível criar uma TypedQuery através do método createquery, como foi feito no primeiro exemplo da Listagem 6. Também temos objetos que representam Paths (e suas filhas Root e Join), como as referências fornecedor e cpagar da listagem. Essas referências podem ser utilizadas para os selects (no lugar das antigas projections do hibernate), dessa forma evitando um pouco as Strings em excesso, mas criando a necessidade de escrever mais código. O CriteriaBuilder possui um número muito grande de métodos para criar Expressions, que são objetos semelhantes aos Criterions do Hibernate. O CriteriaBuilder nada mais é que uma fábrica para muitas Expressions, assim como no Hibernate temos as classes Restrictions, Property e Order que fabricam Criterions. Como fica uma Criteria mais complicada? Imagine que precisamos listar quanto dinheiro foi gasto com cada fornecedor. Para isso, precisamos fazer uma Criteria que busca por todos fornecedores, fazendo join com as respectivas contas, agrupando pelo fornecedor e, desejando que no relatório conste também os que não possuem pagamentos, precisamos utilizar um left outer join. Com o Hibernate diretamente, teríamos algo como: public List<Fornecedor> listtodosfornecedores() { CriteriaQuery<Fornecedor> cq = cb.createquery(fornecedor.class); return this.manager.createquery(cq).getresultlist(); session.createcriteria(fornecedor.class, f ).createcriteria( contas, c, Criteria.LEFT_JOIN).setProjection( Projections.projectionList().add(Projections.property( f.nome )).add(projections.sum( c.valor )).add(projections.groupproperty( c.fornecedor )) ).addorder(order.asc( nome )).list(); 63
4 A Listagem 8 mostra uma Criteria da JPA 2.0 que obtém o mesmo resultado, e a Listagem 9 mostra seu teste, no qual obtemos como resultado 350 reais gastos na Kalunga, 300 na Saraiva, e null como resultado para o Supervinhos. Repare como a expressão cb.sum(cpagar.<double> get("valor") é interessante, pois fica claro que estamos somando os valores do objeto retornado pelo nosso join. Infelizmente, como não declaramos uma variável para o Path retornado por cpagar.get( valor ) o Java não consegue inferir Path<Double>, forçando a generificação da invocação, pois o método sum do CriteriaBuilder espera por Expressions que envolvam Number. Uma Tuple é uma forma um pouco mais interessante de trabalhar com resultados que retornam mais de um valor, porém você poderia utilizar Object[] como na Criteria do Hibernate, passando Object[].class para o createquery. O método multiselect recebe um varargs, onde passamos tudo que queremos receber de resposta nas nossas tuplas. Listagem 8. Método do FornecedorDAO para fazer o relatório de quanto gastamos com cada fornecedor. public List<Tuple> listacontasporfornecedor() { public class FornecedorDaoTest extends DaoTest { CriteriaQuery<Tuple> cq = cb.createtuplequery(); ListJoin<Object, Object> cpagar = fornecedor.joinlist( contas, JoinType.LEFT); cq.groupby(fornecedor); cq.orderby(cb.asc(fornecedor.get( nome ))); return this.manager.createquery( cq.multiselect(fornecedor, cb.sum(cpagar.<double> get( valor )))).getresultlist(); Listagem 9. Teste do método da Listagem public void testalistagemdascontasporfornecedor() { List<Tuple> lista = this.fornecedordao.listacontasporfornecedor(); Assert.assertEquals(3, lista.size()); Assert.assertEquals( kalunga, ((Fornecedor) lista.get(0).get(0)). getnome()); Assert.assertEquals(350d, ((Double) lista.get(0).get(1)). doublevalue(), 0.1); Assert.assertEquals( saraiva, ((Fornecedor) lista.get(1).get(0)). getnome()); Assert.assertEquals(300d, ((Double) lista.get(1).get(1)). doublevalue(), 0.1); Assert.assertEquals( supervinhos, ((Fornecedor) lista.get(2). get(0)).getnome()); Assert.assertNull(lista.get(2).get(1)); O metamodelo dinâmico A JPA 2.0 traz o conceito de metamodelo das entidades, algo análogo ao metamodelo (schema) do banco de dados, porém sem pensar no banco. Através do método getmetamodel podemos acessar todas as entidades e respectivos atributos e relacionamentos (Attributes e suas interfaces filhas). Esses atributos podem ser usados como argumentos para criar os Paths do Criteria, dando um pouco mais de segurança de tipos. A Listagem 10 utiliza esse recurso para executar a mesma query da Listagem 9. Repare que o join referenciado pela variável cpagar agora está tipado por Fornecedor e ContaPagar (anteriormente eram Objects). Mesmo com tanto código, ainda continuamos com algumas Strings, que ainda podem gerar erros em tempo de execução. Listagem 10. Mesma query da Listagem 8, agora com modelo dinâmico. public List<Tuple> listacontasporfornecedor() { Metamodel model = manager.getmetamodel(); CriteriaQuery<Tuple> cq = cb.createtuplequery(); EntityType<Fornecedor> fonecedorentity = model. entity(fornecedor.class); ListJoin<Fornecedor, ContaPagar> cpagar = fornecedor.join(fonecedorentity.getlist( contas, ContaPagar.class), JoinType.LEFT); cq.groupby(fornecedor); cq.orderby(cb.asc (fornecedor.get (fonecedorentity.getsingularattribute( nome )))); EntityType<ContaPagar> contapagarentity = model.entity(contapagar.class); CriteriaQuery<Tuple> x = cq.multiselect(fornecedor, cb.sum(cpagar.get (contapagarentity.getsingularattribute( valor, Double.class)))); return this.manager.createquery(x).getresultlist(); O metamodelo estático Como poderíamos criar uma Criteria sem nenhuma referência a Strings, reduzindo o risco de erros em tempo de execução de queries para praticamente zero? Precisaríamos nos referenciar a atributos da classe com verificação do compilador. Infelizmente o Java ainda não possui um recurso para referenciar aos objetos Method, Field e Constructor como sendo literais (isso é possível para objetos do tipo Class, através das expressões Classe.class). Pensando nessa carência, os líderes da JPA 2.0 chegaram a um consenso: utilizar classes auxiliares com atributos estáticos que representem os atributos das nossas entidades e possam ser passadas como parâmetros: o metamodelo estático, como os da Listagens 11 e 12. Esse metamodelo possui uma forma canônica muito bem definida, com 64
5 padrões de nomenclatura e como cada atributo deve ser declarado. Isso é, o uso do underscore e das interfaces filhas de Attribute (SingularAttribute, ListAttribute etc.) são bem definidas em relação à sua utilização. Listagem 11. Metamodelo da classe public abstract class Fornecedor_ { public static volatile SingularAttribute<Fornecedor, Integer> id; public static volatile SingularAttribute<Fornecedor, String> nome; public static volatile ListAttribute<Fornecedor, ContaPagar> contas; Listagem 12. Metamodelo da classe public abstract class ContaPagar_ { public static volatile SingularAttribute<ContaPagar, Integer> id; public static volatile SingularAttribute<ContaPagar, String> descricao; public static volatile SingularAttribute<ContaPagar, Double> valor; public static volatile SingularAttribute<ContaPagar, Fornecedor> fornecedor; Com essas classes de metamodelo estático, podemos em vez de usar os métodos getattribute das entidades devolvidas pelo metamodelo dinâmico, passar esse valores referenciando diretamente pela estranha forma Entidade_.nomeDoAtributo. Fazemos isso na Listagem 13, que diminui bastante o código anteriormente feito com o modelo dinâmico, mantendo a tipagem forte. Listagem 13. Query da Listagem 8 utilizando os metamodelos estáticos. public List<Tuple> listacontasporfornecedor() { CriteriaQuery<Tuple> cq = cb.createtuplequery(); ListJoin<Fornecedor, ContaPagar> cpagar = fornecedor.join(fornecedor_.contas, JoinType.LEFT); cq.groupby(fornecedor); cq.orderby(cb.asc(fornecedor.get(fornecedor_.nome))); CriteriaQuery<Tuple> x = cq.multiselect (fornecedor, cb.sum(cpagar.get(contapagar_.valor))); return this.manager.createquery(x).getresultlist(); Porém daria bastante trabalho ter de escrever esses metamodelos estáticos e mantê-los atualizados (além de esses atributos ainda estarem null!). A JPA 2.0 define um modelo estático canônico, que deve ser gerado pelo provider, que por sua vez usa APT. O Annotation Processor Tool (APT) existe desde o Java 5 para gerar código baseado em algumas anotações, por um Processor. No Java 6 isso deve ser feito automaticamente pelo compilador: ele deve procurar por JARs no classpath que possuam dentro de META-INF/services o arquivo javax.annotation.processing.processor, definindo os Processors que devem ser invocados. No caso do Eclipse e do Hibernate, eles possuem JARs com esses arquivos, fazendo com que esse metamodelo seja gerado automaticamente a cada compilação. Para ativar o APT no Eclipse, você precisa ir nas propriedades do projeto e dentro de Java Compiler habilitar o Annotation Processing, e dentro do Factory Path colocar o jar de metamodelo (que no Hibernate e EclipseLink são jars separados). Caso prefira, pode usar uma task do ant semelhante à Listagem 14 apenas para fazer esse trabalho. Listagem 14. Build.xml para invocar os processadores, no nosso caso para gerar MetaModel. <project name= jpa2 default= generate-metamodel > <path id= lib > <fileset dir= lib > <include name= *.jar /> </fileset> </path> <target name= clean > <delete dir= generated /> <mkdir dir= generated /> </target> <target name= generate-metamodel depends= clean > <javac srcdir= src destdir= generated debug= true > <compilerarg value= -proc:only /> <classpath> <path refid= lib /> </classpath> </javac> </target> </project> Então temos três maneiras bem diferentes de criar a mesma Query: inteiramente baseada em Strings, uma com o metamodelo dinâmico, e outra com o metamodelo estático, além de poder combiná-las entre si. A proposta inicial era de não haver a opção de utilizar Criterias sem os metamodelos, que tornaria impossível a join query montada inicialmente neste artigo. Qual dessas formas é a mais indicada? Qual será que o mercado vai adotar? Certamente a tipagem forte é atraente, porém o metamodelo estático, além de trazer estranhamento para os desenvolvedores Java, assusta ainda mais quem está acostumado com as Criterias do Hibernate, muito mais sucintas. Second level cache O recurso de second cache level (cache de segundo nível) já é conhecido pelos desenvolvedores adeptos do Hibernate e agora está de certa forma especificado no JPA 2.0. Através dele evitamos que objetos sejam buscados do banco de dados mais de uma vez, já que internamente é guardado uma associação entre a chave primária e o objeto para cada entidade cacheada. O trade-off de se usar o segundo nível de cache também já é conhecido, inclusive as soluções para os problemas de "stale read" (leitura obsoleta o objeto que está em cache é uma versão mais antiga do que a que está no banco de dados no caso de base compartilhada entre aplicações). Caso se deseje contornar este problema, deve-se usar uma estratégia de cache 65
6 apropriada e configurar tempos de expiração. Trabalhar com segundo nível de cache é totalmente transparente para o desenvolvedor. Uma diferença importante é como os providers usufruem desse recurso. O EclipseLink já vem com cache de segundo nível habilitado por padrão e utiliza seu próprio cache. Já se você for trabalhar com Hibernate, deve informar quem será o provider de cache (como o EhCache ou JBoss Tree Cache), assim como parâmetros de customização (como o tamanho do pool no ehcache.xml). Na documentação da especificação (item 3.7) estão definidas algumas propriedades para se configurar o cache de segundo nível e, além disso, deixa a cargo do provider permitir a escolha de outros detalhes. No artigo, será mostrado como configurar o segundo nível de cache do EclipseLink usando JPA 2.0, que por opção, já vem habilitado. Logo, ao anotar uma entidade ela já é candidata a ser cacheada assim que você começar a manipulá-la com o EntityManager. Caso queira que alguma entidade e seu estado não sejam cacheados pelo EclipseLink, deve-se anotá-la Esta anotação especifica se uma entidade deve ser cacheada. Entretanto, seu comportamento pode ser alterado dependendo de como o elemento shared-cache-mode localizado no persistence.xml foi configurado (ver Listagem 15). Além da a especificação fornece meios para customizar o cache de acordo com a necessidade. O principal elemento é o shared-cache-mode, que define se as entidades e seus estados irão ser cacheados. Esse elemento é uma tag aninhada do persistence-unit (ver Listagem 16) que aceita os seguintes valores como parâmetros para definir quais estratégias o provider de cache vai adotar: nada entidade estiver anotada ela não será cacheada. O shared-cache-mode no persistence.xml tem preferência sobre as anotações nas entidades cache-mode no xml. Logo, a configuração padrão do provider será aplicada. Por fim, esses dois últimos parâmetros são usados em conjunto com a especificado. Entidades que não tiveram o elemento especificado ou foram anotadas não são cacheadas. ceção das que forem anotadas Retrieve and Store Busca e armazenamento de elementos na cache Pode-se definir propriedades para trabalhar com cache nas operações de busca e armazenamento de elementos no próprio EntityManager (método setproperty). As enums javax.persistence.cacheretrievemode e javax.persistence.cachestoremode fornecem estratégias (USE, BYPASS, REFRESH) para decisões de uso da cache para determinada ação. Como exemplo, o método find ou quando um dado é persistido. A exceção é o método refresh, que sempre vai fazer o BYPASS (acessar diretamente o banco de dados sem procurar em nenhuma cache). A tag shared-cache-mode tem preferência sobre esses elementos também, caso seja configurada como NONE, essas propriedades são ignoradas. O código da Listagem 17 mostra como verificar o uso do segundo nível de cache. Repare que o Eclipselink executa o select para buscar o fornecedor, já para o segundo Entity Manager (linha 6) ele busca o fornecedor que está cacheado. Agora a Listagem 18 mostra uma forma de desabilitar o segundo nível de cache e executar o mesmo código da Listagem 17, repare na saída do log que agora o eclipse link realiza dois selects na base. Listagem 15 Mapeamento de caches para @Cacheable(false) //Significa que a entidade e seu estado não devem ser cachedados pelo provider. Class que a entidade e seu estado devem ser cachedados pelo provider. Class Fornecedor{ Listagem 16 Possíveis estratégias de cache com shared-cache-mode. <persistence-unit name= caelum > <shared-cache-mode>all</shared-cache-mode> <shared-cache-mode>none</shared-cache-mode> <shared-cache-mode>unspecified</shared-cache-mode> <shared-cache-mode>enable_selective</shared-cache-mode> <shared-cache-mode>disable_selective </shared-cache-mode> </persistence-unit> Listagem 17 Uso do segundo nível de cache. EntityManager em = JPAUtil.openManager(); Fornecedor f1 = em.find(fornecedor.class, 1); System.out.println( Primeiro Fornecedor: + f1.getnome()); EntityManager em2 = JPAUtil.openManager(); Fornecedor f2 = em2.find(fornecedor.class, 1); System.out.println( Segundo Fornecedor: + f2.getnome()); Log de saída no console (<property name="eclipselink.logging.thread" value="true" /> configurado no persistence.xml): [EL Fine]: Connection( )--Thread(Thread[main,5,main])--SELECT ID, NOME FROM FORNECEDOR WHERE (ID =?) bind => [1] [EL Finest]: Thread(Thread[main,5,main])--Register the existing object kalunga Primeiro Fornecedor: kalunga [EL Finer]: Thread(Thread[main,5,main])--client acquired Segundo Fornecedor: kalunga [EL Finer]: Thread(Thread[main,5,main])--release unit of work 66
7 Listagem 18. Desabilitar o segundo nível de cache. <shared-cache-mode>none</shared-cache-mode> [EL Fine]: Connection( )--Thread(Thread[main,5,main])--SELECT ID, NOME FROM FORNECEDOR WHERE (ID =?)bind => [1] Primeiro Fornecedor: kalunga [EL Finer]: Thread(Thread[main,5,main])--client acquired [EL Fine]: Connection( )--Thread(Thread[main,5,main])--SELECT ID, NOME FROM FORNECEDOR WHERE (ID =?)bind => [1] Segundo Fornecedor: kalunga [EL Finer]: Thread(Thread[main,5,main])--release unit of work Caso você queira testar os códigos aqui apresentados no Hibernate, basta colocar os jars do Hibernate 3.5 no seu path e retirar do EclipseLink, sem nem ter de especificar o persistence provider. Para a versão atual beta você ainda precisa definir as antigas propriedades do Hibernate como hibernate.connection.driver_class, entre outros. A versão com total suporte a JPA 2.0 deve sair muito em breve, e o grupo resolveu unir os três projetos (core, annotations e entitymanager) numa única distribuição, Considerações finais A JPA 2.0 não só implementa os recursos da Criteria criados e popularizados pelo Hibernate como vai além, dando a possibilidade do uso fortemente tipado, as custas de mais linhas de código. Já o second level cache, apesar de presente, continua contando com muitas configurações dependentes do seu persistence provider, que não ajuda muito em uma teórica mudança entre providers. Outros recursos muito importantes não foram padronizados, como configurações de connection pool e o gerenciamento de estatísticas (como o HibernateStatistics), mas a JPA 2.0 ainda traz diversos mapeamentos que antes só eram possíveis com as anotações específicas do Hibernate Annotations. Referências - 67
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 maisJPA 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 maisMapeamento 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 maisCriar uma aplicação JPA2 com EclipseLink e H2
Criar uma aplicação JPA2 com EclipseLink e H2 1) Criar uma aplicação Java no NetBeans. File > New Project > Java, Java Application > Project name: JPA2 Finish. 2) Acrescentar ao Projeto NetBeans a biblioteca
Leia mais1 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 maisJPA: 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 maisUFG - 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 maisPersistindo 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 maisJPA Java Persistence API. Prof. Ramon Chiara
JPA Java Persistence API Prof. Ramon Chiara JDBC Java DataBase Connectivity Acesso a bancos de dados Independência de banco de dados JDBC Aplicação JDBC Driver Banco de Dados JDBC Java DataBase Connectivity
Leia maisOrientação a Objetos
1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou
Leia maisPersistê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 maisUFG - 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 maisHibernate 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 maisUFG - 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 12 Consultas JPQL Consultas JPQL Consultas em JPQL
Leia maisruirossi@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 maisManipulaçã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 maisDOCUMENTAÇÃO DO FRAMEWORK - versão 2.0
DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 Índice 1 - Objetivo 2 - Descrição do ambiente 2.1. Tecnologias utilizadas 2.2. Estrutura de pastas 2.3. Bibliotecas já incluídas 3 - Características gerais 4 - Criando
Leia maisUFG - 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 maisJava 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 maisHIBERNATE 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 maisAuditando 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 maisAula 5. Carlos Eduardo de Carvalho Dantas (carloseduardocarvalhodantas@gmail.com)
Persistência com JDBC e JPA Aula 5 Carlos Eduardo de Carvalho Dantas (carloseduardocarvalhodantas@gmail.com) Quem é sábio procura aprender, mas os tolos estão satisfeitos com a sua própria ignorância..
Leia maisIntrodução a Java. Hélder Nunes
Introdução a Java Hélder Nunes 2 Exercício de Fixação Os 4 elementos básicos da OO são os objetos, as classes, os atributos e os métodos. A orientação a objetos consiste em considerar os sistemas computacionais
Leia maisPrática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva
1. O que são Serviços Web (Web Services)? Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva A ideia central dos Web Services parte da antiga necessidade
Leia maisOrientação a Objetos
Orientação a Objetos 1. Sobrecarga (Overloading) Os clientes dos bancos costumam consultar periodicamente informações relativas às suas contas. Geralmente, essas informações são obtidas através de extratos.
Leia maisImplementando 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 maisAcessando um Banco de Dados
Acessando um Banco de Dados Introdução Agora que você já está craque em JSP e já instalou seu servidor, vamos direto para a parte prática! Neste tutorial vamos aprender a acessar um banco de dados. Para
Leia maisUma Abordagem sobre Mapeamento Objeto Relacional com Hibernate
Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate Luis Gustavo Zandarim Soares 1, Késsia Rita da Costa Marchi 1 1 Universidade Paranaense (Unipar) Paraná PR Brasil luisgustavo@live.co.uk,
Leia maisAndroid e Bancos de Dados
(Usando o SQLite) Programação de Dispositivos Móveis Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do
Leia maisEtc & 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 maisDEFINIÇÃO DE MÉTODOS
Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 2 DEFINIÇÃO DE MÉTODOS Todo o processamento que um programa Java faz está definido dentro dos
Leia maisPadrão J2EE Data Access Object (DAO)
Introdução CRUD DAO Exemplo Padrão J2EE Data Access Object (DAO) Prof. Enzo Seraphim Motivação para usar Componentes precisam acessar e armazenar informações em armazenamento persistente As APIs de armazenamento
Leia maisHibernate. 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 maisJDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.
JDBC CRIANDO O BANCO DE DADOS: Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos. CRIANDO O PROJETO JAVA PARA DESKTOP: Crie um projeto Java chamado Prograd Crie um pacote chamado
Leia maisPersistência de Classes em Tabelas de Banco de Dados
UTFPR DAELN - Disciplina de Fundamentos de Programação II ( IF62C ). 1 Persistência de Classes em Tabelas de Banco de Dados 1) Introdução! Em algumas situações, pode ser necessário preservar os objetos
Leia maisClasses 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 maisARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.
Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 8 ARRAYS Introdução Até agora, utilizamos variáveis individuais. Significa que uma variável objeto
Leia maisParte I. Demoiselle Mail
Parte I. Demoiselle Mail Para o envio e recebimento de e-s em aplicativos Java, a solução mais natural é usar a API JavaMail [http:// www.oracle.com/technetwork/java/java/index.html]. Ela provê um framework
Leia maisATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS
ATRIBUTOS PRIVADOS Podemos usar o modificador private, para tornar um atributo privado, obtendo um controle centralizado Definimos métodos para implementar todas as lógicas que utilizam ou modificam o
Leia maisJava Persistence Query Language JPQL
Introdução SELECT FROM WHERE GROUP BY HAVING ORDER BY Java Persistence Query Language JPQL Prof. Enzo Seraphim Definições Tornar SQL orientado a objetos Classes e propriedades ao invés de Tabelas e colunas
Leia maisJava 2 Standard Edition Como criar classes e objetos
Java 2 Standard Edition Como criar classes e objetos Helder da Rocha www.argonavis.com.br 1 Assuntos abordados Este módulo explora detalhes da construção de classes e objetos Construtores Implicações da
Leia maisAuditoria Avançada de Persistência com Hibernate, JPA e Envers
a r t i g o José Yoshiriro Ajisaka Ramos (jyoshiriro@gmail.com): bacharel em Sistema de Informação (IESAM). Mestrando em Ciência da Computação (UFPA). Instrutor na Equilibrium Web e na UAB. Engenheiro
Leia maisO nome ANT é uma sigla para another neat tool (mais uma ferramenta organizada), segundo seu autor James Duncan Davidson.
1- Introdução 1.1- Visão Geral O ANT é uma ferramenta destinada a construção (build) de programas JAVA. É semelhante a ferramentas como make, nmake, jam mas com o diferencial de ser multi-plataforma, pois
Leia maisDocumentação Usando o Javadoc
Documentação Usando o Javadoc Prof. MSc. João Carlos Pinheiro jcpinheiro@cefet-ma.br Versão 2.1 Última Atualização: 04/2005 1 Comentários e Documentação Comentários em Java Existem três tipos de comentários
Leia maisColeções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS
Coleções Conceitos e Utilização Básica c Professores de ALPRO I Faculdade de Informática PUCRS 05/2012 ALPRO I (FACIN) Coleções: Básico 05/2012 1 / 41 Nota Este material não pode ser reproduzido ou utilizado
Leia maisAplicabilidade: visão geral
CURSO BÁSICO SAXES 2 Aplicabilidade: visão geral BI Comércio Indústria nf-e Serviços Software house Enterprise Business Bus Banco financeiro Instituição Sindicato ERP html Casos 3 6 Customização: importação
Leia maisFixture-Factory. Criando objetos para seus testes. Como criar objetos através de templates para serem utilizados como massa de dados em seus testes.
fixture-factory_ Fixture-Factory Criando objetos para seus testes Como criar objetos através de templates para serem utilizados como massa de dados em seus testes. Começamos testando métodos simples, mas
Leia maisALTO 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 maisPersistê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 maisProf. Raul Sidnei Wazlawick UFSC-CTC-INE. Fonte: Análise e Projeto de Sistemas de Informação Orientados a Objetos, 2ª Edição, Elsevier, 2010.
Casos de Uso de Alto Nível Prof. Raul Sidnei Wazlawick UFSC-CTC-INE 2010 Fonte: Análise e Projeto de Sistemas de Informação Orientados a Objetos, 2ª Edição, Elsevier, 2010. Contexto Na fase de concepção
Leia maisSISTEMA TYR DIAGRAMAS DE CLASSE E SEQUÊNCIA Empresa: Academia Universitária
SISTEMA TYR DIAGRAMAS DE CLASSE E SEQUÊNCIA Empresa: Academia Universitária Cascavel Novembro de 2009 Pedro Patitucci Finamore Daniel Bordignon Cassanelli Marco Antonio da Rosa DIAGRAMAS DE CLASSE E SEQUÊNCIA
Leia maisMó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 maisIntrodução a Banco de Dados
Introdução a Banco de Dados Ricardo Henrique Tassi - Departamento de Replicação Índice 1- Introdução... 03 2- Quais são os bancos de dados mais conhecidos hoje em dia...04 3- Quais são os tipos de banco...05
Leia maisCONVENÇÃO DE CÓDIGO JAVA
CONVENÇÃO DE CÓDIGO JAVA Eligiane Ceron - Abril de 2012 Versão 1.0 Conteúdo Considerações iniciais... 2 Introdução... 2 Extensão de arquivos... 2 Arquivos de código Java... 2 Comentários iniciais... 2
Leia maisRepeater no GASweb. Regiões
Repeater no GASweb Por: Rodrigo Silva O controle de servidor Repeater é um container básico que permite a você criar uma lista de qualquer informação que deseja em uma página Web. Ele não tem uma aparência
Leia maisPadrões de Projeto. Singleton
Padrões de Projeto Padrões de Criação Singleton Singleton Assegura que uma classe tenha apenas uma instância e provê um ponto de acesso global a ela 2 Livro Texto: Design Pattern - Elements 1 Motivação
Leia maisComo 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 maisSíntese das discussões do fórum Livro-APF: Julho/2010
Síntese das discussões do fórum Livro-APF: Julho/2010 Assunto: Estimativa de Aumento de Produtividade Data: 01/07/2010 Link: http://br.groups.yahoo.com/group/livro-apf/message/2577 Dúvida: Existe alguma
Leia maisPersistência com JPA2 e Hibernate TREINAMENTOS
Persistência com JPA2 e Hibernate TREINAMENTOS Persistência com JPA 2 e Hibernate 18 de junho de 2012 Sumário i Sobre a K19 1 Seguro Treinamento 2 Termo de Uso 3 Cursos 4 1 Introdução 1 1.1 Persistência.............................................
Leia maisIntrodução. Tutorial do Xdoclet. Resumo
Tutorial do Xdoclet Resumo Apresentar a ferramenta XDoclet uma ferramenta utilizada como tarefa (task) do Jakarta Ant que permite executar e criar templates para gerar arquivos, inclusive código Java,
Leia maisGuia de Fatores de Qualidade de OO e Java
Qualiti Software Processes Guia de Fatores de Qualidade de OO e Java Versã o 1.0 Este documento só pode ser utilizado para fins educacionais, no Centro de Informática da Universidade Federal de Pernambuco.
Leia maisUML Aspectos de projetos em Diagramas de classes
UML Aspectos de projetos em Diagramas de classes Após ser definido o contexto da aplicação a ser gerada. Devemos pensar em detalhar o Diagrama de Classes com informações visando uma implementação Orientada
Leia maisProgramação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos
Programação Estruturada e Orientada a Objetos Fundamentos Orientação a Objetos 2013 O que veremos hoje? Introdução aos fundamentos de Orientação a Objetos Transparências baseadas no material do Prof. Jailton
Leia maisPROGRAMAÇÃO ESTRUTURADA. CC 2º Período
PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 07: Funções O comando return Protótipo de funções O tipo void Arquivos-cabeçalho Escopo de variáveis Passagem de parâmetros por valor
Leia maisLinguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery
Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em
Leia maisJava 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 maisPROJETO 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 maisLaboratório de Banco de Dados Aula 1 Acesso a Banco de Dados. Prof. Josenildo Silva jcsilva@ifma.edu.br
Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados Prof. Josenildo Silva jcsilva@ifma.edu.br Introdução O JDBC (Java Database Connectivity) foi criado com o intuito de fornecer aos programadores
Leia maisSlide 1 Deitel/Deitel, 8e. Java Como programar Copyright 2010 Pearson Education
Java Como Programar, 8/E Slide 1 Slide 2 Slide 3 Métodos genéricos e classes genéricas (e interfaces) permitem especificar, com uma única declaração de método, um conjunto de métodos relacionados ou, com
Leia maisLOGGING DE EVENTOS COM LOG4J
LOGGING DE EVENTOS COM LOG4J por Luiz Gustavo Stábile de Souza O que é logging? Fazer o logging de uma aplicação é uma das possíveis maneiras de debugá-la, registrando em algum meio (arquivo, enviando
Leia maisFigura 1. A Classe Java
Conexã o com MySQL Connection Factory Para criar as conexões com o banco de dados será utilizado um padrão chamado Factory, onde através dele se terá uma única classe que proverá uma fábrica de conexão
Leia maisDesmistificando 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 mais2 Orientação a objetos na prática
2 Orientação a objetos na prática Aula 04 Sumário Capítulo 1 Introdução e conceitos básicos 1.4 Orientação a Objetos 1.4.1 Classe 1.4.2 Objetos 1.4.3 Métodos e atributos 1.4.4 Encapsulamento 1.4.5 Métodos
Leia maisCURSO DE PROGRAMAÇÃO EM JAVA
CURSO DE PROGRAMAÇÃO EM JAVA Introdução para Iniciantes Prof. M.Sc. Daniel Calife Índice 1 - A programação e a Linguagem Java. 1.1 1.2 1.3 1.4 Linguagens de Programação Java JDK IDE 2 - Criando o primeiro
Leia maisHibernate. 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 maisAula 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 maisAula 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 maiswww.coldfusionbrasil.com.br
www.coldfusionbrasil.com.br 2000 PASSANDO VARIÁVEIS ATRAVÉS DE FORM E URL 3 ALTERA.CFM 3 FORMALTERA.CFM 4 ALTERA.CFM 4 FORMALTERA.CFM 4 CRIANDO E MANIPULANDO VARIÁVEIS COM CFSET 4 VALORES ESTÁTICOS 5 PARÂMETROS
Leia maisResolvendo objeto-relacional impedance mismatch com hibernate
Resolvendo objeto-relacional impedance mismatch com hibernate August 7, 2013 Sumário I 1 Introdução 2 3 4 Sumário II 5 Contexto Mapeamento Objeto-Relacional (ORM) é uma técnica de programação para converter
Leia maisEXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS
Campus Cachoeiro de Itapemirim Curso Técnico em Informática Disciplina: Análise e Projeto de Sistemas Professor: Rafael Vargas Mesquita Este exercício deve ser manuscrito e entregue na próxima aula; Valor
Leia maisProgramação de Computadores - I. Profª Beatriz Profº Israel
Programação de Computadores - I Profª Beatriz Profº Israel Ambiente de Desenvolvimento Orientação a Objetos É uma técnica de desenvolvimento de softwares que consiste em representar os elementos do mundo
Leia maisJava. Marcio de Carvalho Victorino www.dominandoti.eng.br
Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a
Leia maisOrganizando Classes em Pacotes. Profa. Thienne Johnson EACH/USP
Organizando Classes em Pacotes Profa. Thienne Johnson EACH/USP Criando e usando pacotes Nomeando um pacote Usando membros de pacotes Gerenciando arquivos Exercícios Usando pacotes no Eclipse Tutorial da
Leia maisLista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição
Lista de Contas Lista de Contas: Assinatura null Quais são os métodos necessários? class ListaDeContas { void inserir (Conta c) { void retirar (Conta c) { Conta procurar (String num) { Listas de Contas:
Leia maisArquitetura de Rede de Computadores
TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador
Leia maisO Komunik é uma ferramenta de comunicação interna que permite a interação completa entre todos os setores de uma empresa.
ORG 13.8 KOMUNIK O QUE É Manual Estoque - Versão 4.55.001-2ª Edição - 2012 O Komunik é uma ferramenta de comunicação interna que permite a interação completa entre todos os setores de uma empresa. PRA
Leia maisIntrodução à JPA-Java Persistence API
Introdução à JPA-Java Persistence API Prof. Pasteur Ottoni de Miranda Jr. DCC PUC Minas www.pasteurjr.blogspot.com 1-Entidades São objetos de domínio de problema persistentes. Representam uma tabela em
Leia maisEntendendo como funciona o NAT
Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços
Leia maisReuso com Herança a e Composiçã
Java 2 Standard Edition Reuso com Herança a e Composiçã ção Helder da Rocha www.argonavis.com.br 1 Como aumentar as chances de reuso Separar as partes que podem mudar das partes que não mudam. Exemplo:
Leia maisEspecificação do 3º Trabalho
Especificação do 3º 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,
Leia maisAula 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 maisTutorial: Programando no Linux
UECE Universidade Estadual do Ceará CCT Centro de Ciências e Tecnologia Curso de Ciência da Computação Tutorial: Programando no Linux Alunos: Henrique Neto e João Gonçalves Professora: Ana Luiza E-mails:
Leia maisAula 1 Acesso a Banco de Dados
Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados Prof. Josenildo Silva jcsilva@ifma.edu.br Introdução O JDBC (Java Database Connectivity) foi criado com o intuito de fornecer aos programadores
Leia maisProgramação de Computadores - I. Profª Beatriz Profº Israel
Programação de Computadores - I Profª Beatriz Profº Israel As 52 Palavras Reservadas O que são palavras reservadas São palavras que já existem na linguagem Java, e tem sua função já definida. NÃO podem
Leia maisPrevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki
Prevayler Perola André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki Prevayler Prevayler é a implementação em Java do conceito de Prevalência. É um framework que prega uma JVM invulnerável
Leia maisNetBeans. Conhecendo um pouco da IDE
NetBeans Conhecendo um pouco da IDE Professor: Edwar Saliba Júnior Sumário Apresentação:...1 Criando Um Novo Projeto de Software:...1 Depurando Um Código-fonte:...4 Entendendo o Código-fonte:...7 Dica
Leia maisGerenciamento de Contatos
Gerenciamento de Contatos O objetivo deste módulo é ajudar a gerenciar todos os contatos da empresa. Além dos dados mais importantes, o módulo permite cadastrar anotações e relacionar as tarefas e eventos
Leia maisUNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA
UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA RESUMO DE AULA CRIAÇÃO E MANIPULAÇÃO DO BANCO DE DADOS
Leia maisTOTVS BA Guia de Customização Linha Logix
TOTVS BA Guia de Customização Linha Logix Guia de Customização Sumário Título do documento 1. Objetivo... 3 2. Introdução... 3 3. Customização... 3 2 TOTVS BA Linha Logix Guia de Customização Projeto/Versão:
Leia mais