Upload
luiz-henrique-morais-silva
View
219
Download
0
Embed Size (px)
Citation preview
8/3/2019 Pro032 - Aula 4 Tap
1/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 onome da entidade diferente do nome da tabela, ento a anotao @Table usada,caso contrario no necessrio utilizar.
Exemplo:
@Entity@Table(name="tb_aluno")publicclass Aluno implements Serializable
@Table
Utilizada em combinao com @Entity para definir que a classe de entidade tem umatabela prpria.
A anotao @Table possui os atributos conforme abaixo:
name(String) opcional e permite definir o nome desta tabela quando fordiferente 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")publicclass Aluno implements Serializable {
1
8/3/2019 Pro032 - Aula 4 Tap
2/8
Tpicos Avanados de Programao - Ano:2011 Prof.Fbio Rener
@Column
Marca um atributo ou mtodo getter correspondente como um gerador de valor parauma 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 cdigosSQL para gerar DDL para a coluna.
insertable(boolean) opcional e permite informar se a coluna deve fazer partedo 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 chaveprimaria. Utilizado em conjunto com @Column quando a coluna possui nomeparticular.
Exemplo
@Id@Column(name = "id_aluno", nullable = false)privateintidAluno;
2
8/3/2019 Pro032 - Aula 4 Tap
3/8
Tpicos Avanados de Programao - Ano:2011 Prof.Fbio Rener
@GeneratedValue
Utilizado em conjunto com @Id para definir a estratgia de gerao do identificadornas 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 primariapara usar no SequenceGenerator.
strategy(String) opcional e define a estratgia de gerao da chaveprimaria(IDENTITY, SEQUENCE, TABLE e AUTO)
Exemplo
@Id@Column(name = "id_aluno", nullable = false)@GeneratedValue(strategy = GenerationType.IDENTITY)privateintidAluno;
@Transient
Marca um atributo ou mtodo getter como no participante das operaes depersistncia.
Exemplo
@Transientprivate String mensagem;
@Version
Essa anotao especifica o campo de verso ou de propriedade de uma classe deentidade que serve para bloqueio otimista. A verso usada para garantir aintegridade ao executar a operao de juno e para controle de simultaneidadeotimista.
Exemplo
@Versionprivateintversion;
3
8/3/2019 Pro032 - Aula 4 Tap
4/8
Tpicos Avanados de Programao - Ano:2011 Prof.Fbio Rener
Exemplo de Mapeamento:
Tabela tb_aluno
Criando nossa entidade e fazendo o mapeamento atravs de anotaes:
Aluno.java
package br.uniban.entity;
import java.io.Serializable;
import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Table;import javax.persistence.Transient;import javax.persistence.Version;
@Entity@Table(name="tb_aluno", schema="uniban")publicclass Aluno implements Serializable {
privatestaticfinallongserialVersionUID= 7451493081496319340L;
@Id
@Column(name = "id_aluno", nullable = false)@GeneratedValue(strategy = GenerationType.IDENTITY)privateintidAluno;
@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;
@Versionprivateintversion;
4
8/3/2019 Pro032 - Aula 4 Tap
5/8
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;
}
publicint getIdAluno() {returnidAluno;
}publicvoid setIdAluno(int idAluno) {
this.idAluno = idAluno;}public String getStrNome() {
returnstrNome;}publicvoid setStrNome(String strNome) {
this.strNome = strNome;}
public String getStrEndereco() {returnstrEndereco;
}publicvoid setStrEndereco(String strEndereco) {
this.strEndereco = strEndereco;}public String getStrTelefone() {
returnstrTelefone;}publicvoid setStrTelefone(String strTelefone) {
this.strTelefone = strTelefone;}public String getStrRg() {
returnstrRg;}
publicvoid setStrRg(String strRg) {this.strRg = strRg;
}
publicint getVersion() {returnversion;
}
publicvoid setVersion(int version) {this.version = version;
}
@Overridepublic String toString() {return"Aluno [idAluno=" + idAluno + ", strNome=" + strNome
5
8/3/2019 Pro032 - Aula 4 Tap
6/8
Tpicos Avanados de Programao - Ano:2011 Prof.Fbio Rener
+ ", strEndereco=" + strEndereco + ", strTelefone="+ strTelefone + ", strRg=" + strRg + "]";
}
}
persistence.xml
org.hibernate.ejb.HibernatePersistence br.uniban.entity.Aluno
JPAPersist.javapackage br.uniban.main;
import javax.persistence.EntityManager;import javax.persistence.EntityManagerFactory;import javax.persistence.Persistence;
import br.uniban.entity.Aluno;
/*** @author fabiorener**/
publicclass JPAPersist {
/**
6
8/3/2019 Pro032 - Aula 4 Tap
7/8
Tpicos Avanados de Programao - Ano:2011 Prof.Fbio Rener
* @param args*/
publicstaticvoid main(String[] args) {
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 estadefinida na imagem abaixo ?
7
8/3/2019 Pro032 - Aula 4 Tap
8/8
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 tabelatb_professor.
8