Documente Academic
Documente Profesional
Documente Cultură
Prof.Fbio Rener
@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 {
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;
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;
Prof.Fbio Rener
Tabela tb_aluno
@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;
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
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 { /**
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 ?
Prof.Fbio Rener
4) Crie uma classe que faa a persistncia de entidade que mapeia a tabela tb_professor.