4 de fevereiro de 2011

JPA 2.0: Java Persistence API

Java Persistence API ou JPA, é uma especificação padrão do Java para persistência de dados que deve ser implementada por frameworks que queiram seguir o padrão. A JPA lida com a forma como os dados relacionais são mapeado para objetos Java ("entidades persistentes"), a maneira que esses objetos são armazenados em um banco de dados relacional, para que eles possam ser acessados em um momento posterior, e a continuação da existência de um estado da entidade, mesmo após o aplicativo que usa o seu término. Além de simplificar o modelo de persistência da entidade, a Java Persistence API padroniza o mapeamento objeto-relacional.
Algumas implementações dessa especificação para a versão 2.0: EclipseLink e Hibernate.
Atualmente a versão da JPA é a 2.0, mais essa é mais voltada ao Java EE 6, é o que utilizaremos a partir de agora!

Tenha por exemplo a seguinte tabela Fornecedor (com codigo, nome e telefone) em SQL:
CREATE TABLE Fornecedor (
  codigo int(11) NOT NULL auto_increment,
  nome varchar(60) NOT NULL,
  telefone varchar(15) NULL,
  PRIMARY KEY  (codigo)
);

Agora analise a classe abaixo, veja que o mesmo tem os mesmos atributos: codigo, nome e telefone:
@Entity
public class Fornecedor implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(unique=true, nullable=false)
    private Long codigo;
 
    @Column(length=60, nullable=false)
    private String nome;
 
    @Column(length=15)
    private String telefone;

    //getters e setters
}

Essa classe é a representação do código SQL acima com JPA. Esses @Id, @Column, entre outros são chamados de anotações, eles são responsáveis por fazer o mapeamento dessa classe em código SQL. Em versões anteriores esses mapeamentos eram feitos por XML e não por anotações (conheço apenas a versão das anotações :D).

Para ficar mais claro vamos entender o que são essas anotações:
@Entity : essa anotação indica que esta é uma entidade gerenciada pelo JPA.
@Id: define quem é a primary key da tabela.
@GeneratedValue(strategy=GenerationType.IDENTITY): corresponde ao auto_increment do MySQL.
@Column(...): informa que este atributo é uma coluna da tabela Fornecedor.
private Long codigo;
Não vou entrar em detalhes nessa postagem quanto as propriedades do @Column, pois nas próximas postagens estaremos vendo mais a fundo esse mundo da JPA. Para hoje só quis mostrar como funciona o mapeamento da JPA mesmo.

Deixo como leitura obrigatória complementar a apostila feita pelo Ivan Salvadori: Veja aqui

Fontes:
http://www.oracle.com/technetwork/articles/javaee/jpa-137156.html

8 comentários:

  1. Seu blog está cada vez mais belo... Parabéns!

    ResponderExcluir
  2. Ola gostaria de de ver a apostila do Ivan Salvador so que o link nao esta disponivel. Consegue disponibilizar novamente valeu, otimo blogger.

    ResponderExcluir
  3. Olá Lincoln! Pois é, o blog dele já está fora do ar a um tempo, vou ver se consigo com ele.

    ResponderExcluir
  4. Ola andii, primeiro gostaria de parabenizar pelo site, muito bom. Será que você conseguiu a apostila para a gente dar uma olhada?

    Grato

    ResponderExcluir
  5. Este comentário foi removido pelo autor.

    ResponderExcluir
  6. Pessoal! Só avisando que o link para a apostila do Ivan Salvadori está atualizado! :)

    ResponderExcluir
  7. A apostila do Ivan esta neste link tbm: pt.scribd.com/doc/54176518/JPA-Com-Hibernat

    ResponderExcluir
    Respostas
    1. MGF, este link é o mesmo que está ao final da postagem.

      Excluir

Deixe seu comentário... ;)