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!
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).
@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
Seu blog está cada vez mais belo... Parabéns!
ResponderExcluirOla gostaria de de ver a apostila do Ivan Salvador so que o link nao esta disponivel. Consegue disponibilizar novamente valeu, otimo blogger.
ResponderExcluirOlá Lincoln! Pois é, o blog dele já está fora do ar a um tempo, vou ver se consigo com ele.
ResponderExcluirOla andii, primeiro gostaria de parabenizar pelo site, muito bom. Será que você conseguiu a apostila para a gente dar uma olhada?
ResponderExcluirGrato
Este comentário foi removido pelo autor.
ResponderExcluirPessoal! Só avisando que o link para a apostila do Ivan Salvadori está atualizado! :)
ResponderExcluirA apostila do Ivan esta neste link tbm: pt.scribd.com/doc/54176518/JPA-Com-Hibernat
ResponderExcluirMGF, este link é o mesmo que está ao final da postagem.
Excluir