Você está na página 1de 5

orm trnasformar informações deum banco de dados, que estão no modelo relacional

para classes java.

o livro jsf sao constituidos de modulos independentes.

para implement\ção é necessaprio a utilização do pacote javax.persistence.*

<exclude-unlisted-classes> exclui as pastas nao utilizadas

<class> mapeia as entidades presentes no persistence unit

<entity class="com.uaihebert.model.Pessoa">
<attributes>
<basic name="nome">
<column name="nome_pessoa"/>
</basic>
</attributes>

no xml

@Table(name = "tb_music_2421638")
antes da class depois do entity name="nme do bd"
toda classe no hibernate deve seguir esse passos
Deve ser anotada com @Entity;
• Deve ter um campo definido que representa a chave primária da tabela, anotado com
@Id;
• Deve ter um construtor público sem parâmetros.

@Basic(optional = false) campos obrigatorio


@Column(name = "NM_MUSICA", length = 100, unique = true)
para trocar parametros do banco de dados

reflitira no bd
@Entity(name = "MinhaEntity")

@TableGenerator(name= Musica.IDS_TABLE_NAME,
table="tabela_de_ids",
pkColumnName="tabela",
pkColumnValue="musica_id",
valueColumnName="id_atual"

@Id
@GeneratedValue(strategy = GenerationType.AUTO)

chaves compostas

@Embeddable
public class MusicaId implements Serializable {
private int duracaoSegundos;
private String nome;
public MusicaId(){ }
public MusicaId(int duracaoSegundos, String nome) {
super();
this.duracaoSegundos = duracaoSegundos;
this.nome = nome;
}
// hashCode e equals
}

@Entity
public class Musica implements Serializable {
@Id
@OneToOne
@JoinColumn(name = "codigo_id")
private CodigoUnico codigoUnico;
// getters e setters
}

@Entity
@Table(name="MUSICA")
@SecondaryTable(
name="MUSICA_2372",
pkJoinColumns={@PrimaryKeyJoinColumn(name="MUSICA_ID")}
)

@Column(table = "TABELA_X")
private String nome;

mapeando herança jpa

uti.iza uma unica entity para a relacao

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "pertence_a_classe")
public abstract class Pessoa {
@Id
@GeneratedValue
private int id;
private String nome;
}

@Entity
@DiscriminatorValue("PessoaJuridica")
public class PessoaJuridica extends Pessoa{
private String CNPJ;
// outras coisas
}
import javax.persistence.*;
@Entity
@DiscriminatorValue("PessoaFisica")
public class PessoaFisica extends Pessoa{
private String CPF;
// outras coisas
}
utiliza duas tabelas.. uma para cada entity

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Pessoa { ... }
@Entity
public class PessoaFisica extends Pessoa { ... }
@Entity
public class PessoaJuridica extends Pessoa { ... }

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Pessoa { ... }

@Entity
public class PessoaFisica extends Pessoa{ ... }
@Entity
public class PessoaJuridica extends Pessoa{ ... }

mapeando relacionamentos

relacionaento onetoone

@Entity
public class Pessoa {
@Id
private id;
private nome;
@OneToOne
private Endereco endereco;
// get and set
}
@Entity
public class Endereco {
@Id
private id;
private String nomeRua;
}

@OneToOne
@JoinColumn(name = "chave_do_endereco")

@Entity
public class Pessoa{
// outras informações
@OneToMany
private List<Cachorro> cachorros;
}
@Entity
public class Pessoa{
// outras informações
@OneToMany
@JoinColumn(name = "pessoa_id")
private List<Cachorro> cachorros;
}
@Entity
public class Cachorro {
@Id
@GeneratedValue
private int id;
private String nome;
@ManyToOne
@JoinColumn(name = "pessoa_id")
private Pessoa pessoa;
}

@Entity
public class Pessoa {
// outras coisas
@OneToMany(mappedBy = "pessoa")
private List<Cachorro> cachorros;
}

many to many

@Entity
public class Pessoa{
// outras informações
@ManyToMany
@JoinTable(name = "trabalhos_pessoas")
private List<Trabalho> trabalhos;
}

@Entity
public class Trabalho {
@Id
@GeneratedValue
private int id;
private String nome;
@ManyToMany(mappedBy = "trabalhos")
private List<Pessoa> funcionarios;
// get and set
}

CascadeType.PERSIST – disparado toda vez que uma nova entity for inserida no banco
de dados pelo comando: entityManager.persist();
• CascadeType.DETACH – disparado toda vez que uma entity é retirada
do Persistence Context. Comandos que podem disparar essa ação:
entityManager.detach(), entityManager.clear(). Ocorrerá um
detach também quando o Persistence Context deixar de existir;
• CascadeType.MERGE – disparado toda vez que uma alteração é executada em uma
entity. Essa alteração pode acontecer ao final de uma transação com a qual uma
managed Entity foi alterada (4.2), ou pelo comando
entityManager.merge();
• CascadeType.REFRESH – disparada quando uma entity for
atualizada com informações no banco de dados. Comando:
entityManager.refresh();
• CascadeType.REMOVE – disparado quando uma entity é removida (apagada) do banco de
dados, os relacionamentos marcados também serão eliminados. O comando utilizado é o
entityManager.remove();
• CascadeType.ALL – todos os eventos anteriores serão sempre refletidos nas
Entities relacionadas.

public class Endereco{


@OneToOne(mappedBy = "endereco")
private Pessoa pessoa;
}
public class Pessoa{
@OneToOne(cascade = CascadeType.PERSIST)
private Endereco endereco;
}

lconsultas

String consulta = "select c from Cachorro c";


TypedQuery<Cachorro> query =
entityManager.createQuery(consulta, Cachorro.class);
query.setMaxResults(10);
List<Cachorro> resultado = query.getResultList();

Você também pode gostar