Sunteți pe pagina 1din 8

Tpicos Avanados de Programao - Ano:2011

Prof.Fbio Rener

MAPEAMENTO BSICO DE ENTIDADES @TABLE, @ID, @ENTITY, @COLUMN, @GENERATEDVALUE, @TRANSIENT.

As anotaes apresentadas a seguir pertencem ao pacote javax.persistence.

@Entity Essa anotao significa que uma determinada classe uma entidade persistente. Se o nome da entidade diferente do nome da tabela, ento a anotao @Table usada, caso contrario no necessrio utilizar.

Exemplo:
@Entity @Table(name="tb_aluno") public class Aluno implements Serializable

@Table Utilizada em combinao com @Entity para definir que a classe de entidade tem uma tabela prpria. A anotao @Table possui os atributos conforme abaixo: name(String) opcional e permite definir o nome desta tabela quando for diferente do nome da classe. catalog(String) opcional e permite informar o catalogo da tabela. schema(String) opcional e permite informar qual o schema dessa tabela. uniqueConstraints opcional e permite colocar restries necessrias para a tabela.

Exemplo:
@Entity @Table(name="tb_aluno", schema="uniban") public class Aluno implements Serializable {

Tpicos Avanados de Programao - Ano:2011 @Column

Prof.Fbio Rener

Marca um atributo ou mtodo getter correspondente como um gerador de valor para uma coluna. A anotao @Column possui os atributos conforme abaixo: name(String) opcional e permite definir o nome desta coluna. columnDefinition(String) opcional e permite que fragmentos de cdigos SQL para gerar DDL para a coluna. insertable(boolean) opcional e permite informar se a coluna deve fazer parte do insert. length(int) opcional e define o tamanho da coluna. nullable(boolean) opcional e define se a coluna aceitar valores nulos. precision(int) opcional e define as casas decimais. scale(int) opcional define a escala para casas decimais. table(String) opcional e define o nome da tabela. unique(boolean) opcional e define se a coluna deve ter valor nico. updatable(boolean) opcional e permite informar se a coluna deve fazer parte do update.

Exemplo
@Column(name = "str_nome", nullable = false, length = 60) private String strNome;

@Id Marca um atributo ou mtodo getter como identificador correspondendo chave primaria. Utilizado em conjunto com @Column quando a coluna possui nome particular.

Exemplo
@Id @Column(name = "id_aluno", nullable = false) private int idAluno;

Tpicos Avanados de Programao - Ano:2011 @GeneratedValue

Prof.Fbio Rener

Utilizado em conjunto com @Id para definir a estratgia de gerao do identificador nas operaes de insero. Os valores provm da enumerao GenerationType: IDENTITY, SEQUENCE, TABLE e AUTO. A anotao @GeneratedValue possui os atributos conforme abaixo: generator(String) opcional e define o nome do gerador de chave primaria para usar no SequenceGenerator. strategy(String) opcional e define a estratgia de gerao da chave primaria(IDENTITY, SEQUENCE, TABLE e AUTO)

Exemplo
@Id @Column(name = "id_aluno", nullable = false) @GeneratedValue(strategy = GenerationType.IDENTITY) private int idAluno;

@Transient Marca um atributo ou mtodo getter como no participante das operaes de persistncia.

Exemplo
@Transient private String mensagem;

@Version Essa anotao especifica o campo de verso ou de propriedade de uma classe de entidade que serve para bloqueio otimista. A verso usada para garantir a integridade ao executar a operao de juno e para controle de simultaneidade otimista.

Exemplo
@Version private int version;

Tpicos Avanados de Programao - Ano:2011 Exemplo de Mapeamento:

Prof.Fbio Rener

Tabela tb_aluno

Criando nossa entidade e fazendo o mapeamento atravs de anotaes: Aluno.java


package br.uniban.entity; import java.io.Serializable; import import import import import import import import javax.persistence.Column; javax.persistence.Entity; javax.persistence.GeneratedValue; javax.persistence.GenerationType; javax.persistence.Id; javax.persistence.Table; javax.persistence.Transient; javax.persistence.Version;

@Entity @Table(name="tb_aluno", schema="uniban") public class Aluno implements Serializable { private static final long serialVersionUID = 7451493081496319340L; @Id @Column(name = "id_aluno", nullable = false) @GeneratedValue(strategy = GenerationType.IDENTITY) private int idAluno; @Column(name = "str_nome", nullable = false, length = 60) private String strNome; @Column(name = "str_endereco", nullable = false, length = 80) private String strEndereco; @Column(name = "str_telefone", nullable = true, length = 10) private String strTelefone; @Column(name = "str_rg", nullable = true, length = 15) private String strRg; @Version private int version;

Tpicos Avanados de Programao - Ano:2011

Prof.Fbio Rener

public Aluno(){} public Aluno(int idAluno, String strNome, String strEndereco, String strTelefone, String strRg) { this.idAluno = idAluno; this.strNome = strNome; this.strEndereco = strEndereco; this.strTelefone = strTelefone; this.strRg = strRg; }

public Aluno(String strNome, String strEndereco, String strTelefone, String strRg) { this.strNome = strNome; this.strEndereco = strEndereco; this.strTelefone = strTelefone; this.strRg = strRg; } public int getIdAluno() { return idAluno; } public void setIdAluno(int idAluno) { this.idAluno = idAluno; } public String getStrNome() { return strNome; } public void setStrNome(String strNome) { this.strNome = strNome; } public String getStrEndereco() { return strEndereco; } public void setStrEndereco(String strEndereco) { this.strEndereco = strEndereco; } public String getStrTelefone() { return strTelefone; } public void setStrTelefone(String strTelefone) { this.strTelefone = strTelefone; } public String getStrRg() { return strRg; } public void setStrRg(String strRg) { this.strRg = strRg; } public int getVersion() { return version; } public void setVersion(int version) { this.version = version; } @Override public String toString() { return "Aluno [idAluno=" + idAluno + ", strNome=" + strNome

Tpicos Avanados de Programao - Ano:2011

Prof.Fbio Rener

+ ", strEndereco=" + strEndereco + ", strTelefone=" + strTelefone + ", strRg=" + strRg + "]"; } }

persistence.xml

<?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> <persistence-unit name="aula4PU" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <class>br.uniban.entity.Aluno</class> <properties> <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/uniban"/> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> <property name="hibernate.connection.driver_class" value="org.gjt.mm.mysql.Driver"/> <property <property <property <property <property </properties> name="hibernate.connection.username" value="root"/> name="hibernate.connection.password" value="senha"/> name="hibernate.hbm2ddl.auto" value="validate"/> name="hibernate.show_sql" value="true"/> name="hibernate.format_sql" value="true"/>

</persistence-unit> </persistence>

JPAPersist.java
package br.uniban.main; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import br.uniban.entity.Aluno; /** * @author fabiorener * */ public class JPAPersist { /**

Tpicos Avanados de Programao - Ano:2011


* @param args */ public static void main(String[] args) {

Prof.Fbio Rener

EntityManagerFactory emf = Persistence.createEntityManagerFactory("aula4PU"); EntityManager em = emf.createEntityManager(); try{ em.getTransaction().begin(); Aluno inc = new Aluno("Rodrigo Lisboa","Rua Lima Duarte, 45","6543-6899","1234567"); em.persist(inc); em.getTransaction().commit(); } catch(Exception e){ System.out.println(e.getMessage()); } finally{ em.close(); } } }

Exerccios de Fixao:

1) Crie a entidade e faa o mapeamento usando anotaes para a tabela que esta definida na imagem abaixo ?

Tpicos Avanados de Programao - Ano:2011

Prof.Fbio Rener

2) Crie a unidade de persistncia(PU) com sua nova entidade ?

3) Lista dois benefcios que temos ao usar JPA ?

4) Crie uma classe que faa a persistncia de entidade que mapeia a tabela tb_professor.

S-ar putea să vă placă și