Desenvolvimento - Java

Persistência em Java com API JPA

A especificação para gerenciamento de persistência define um padrão para o mapeamento entre objetos java e bancos de dados. Seu conceito principal é o de entidade.

por Eric C M Oliveira



A especificação para gerenciamento de persistência define um padrão para o mapeamento entre objetos java e bancos de dados. Seu conceito principal é o de entidade.

Uma entidade corresponde a um objeto que pode ser gravado na base de dados através de um mecanismo de persistência. Estes objetos são POJOs (Plain Old Java Objects) e se utilizam de ORM (Mapeamento objecto-relacional) para tal.

Plain Old Java Objects, ou POJOs, são tipos de objetos Java que apresentam um design bem mais simples, se comparado com os objetos de componentes de frameworks ou objetos EJBs. Um exemplo tipico de POJO é um JavaBean, que segue definições rígidas e estrutura simples, como um construtor default sem argumentos e com métodos getters e setters para os atributos.

Com ORM, que faz com que as tabelas do banco de dados sejam representadas através de classes e os registos de cada tabela sejam representados como as instâncias destas classes, o desenvolvedor passa a usar, ao inves de comandos SQL, uma interface de programação, não sendo necessário uma correspondência direta entre tabelas do banco de dadoss e classes Java.

Para tal são necessários metadados para essa persistência. Esses metadados podem ser desenvolvidos utilizando-se arquivos XML, Java annotations ou ambos.

Com annotations, por exemplo, você poderá ter em sua classe indicadores de que aquela classe esta sofrendo persistência (Entity) ou de que seus métodos são colunas de uma determinada tabela , como observado abaixo, nesse exemplo de um tutorial disponível na pagina do Projeto Glassfish (ver referências):

                  

Por default, o nome de uma tabela corresponde ao nome da classe, mas isto pode ser mudado com uso de @Table(name="MYNEWTABLE"). O mesmo acontece com as colunas, onde cada field sera mapeado com o nome de uma coluna. Tambem pode ser mudado utilizando-se @Column(name="mynewColumn”). O uso de @Id define que aquele  atributo está mapeado e corresponde à chave primária da tabela. Se usarmos juntamente a @GeneratedValue, teremos um valor gerado automaticamente.

E, se estamos falando de banco de dados, também teremos annotations para desmostrar o relacionamento, como @OneToOne,  @OneToMany, @ManyToOne e @ManyToMany.

Para o uso de JPA, sempre se deve escolher um JPA Provider, que ira usar os metadados de persistência para realizar as operaçoes no banco de dados via o tradicional JDBC.  São exemplos de providers IBatis, Hibernate Entity Manager, ApacheJPA, Oracle TopLink, entre outros. Para uma melhor visualização, o que temos e uma piramide com JDBC na base, seguido pelo JPA Provider e por fim a JPA.

Referências:

http://java.sun.com/javaee/overview/faq/persistence.jsp

https://glassfish.dev.java.net/downloads/persistence/JavaPersistence.html

https://glassfish.dev.java.net/javaee5/persistence/persistence-example.html

http://www.netbeans.org/kb/55/persistence_pt_BR.html

http://www.vogella.de/articles/JavaPersistenceAPI/article.html

http://www.mhavila.com.br/link/prog/java/server/persist.html

Eric C M Oliveira

Eric C M Oliveira - Bacharel em Ciencia da Computação/FASP e Comunicação/Unesp, tem experiência em desenvolvimento Java nas plataformas J2SE, J2EE e J2ME, além de atividades ligadas a disciplina de testes, engenharia e qualidade de software. Tem certificações Java SCJP 1.3, SCJP 1.4, Rational Test Management, Rational Robot e RUP (Rational Unified Process).