Escolar Documentos
Profissional Documentos
Cultura Documentos
O
valor
de
chave
primria
pode
ser
denida
manualmente
ou
gerada
pelo
provedor
de
persistncia.
Tipos
possveis:
Qualquer
Mpo
primiMvo
Java
Wrappers
de
Mpos
primiMvos
Arrays
de
Mpos
primiMvos
e
Wrappers
Tipos
numricos
grandes
Java.lang.String
Tipos
temporais
Java
Uma
classe
de
chave
primria
composta
@En/ty public class Aluno implements Serializable { @Id private int id; }
Uma
aplicao
pode
denir
uma
das
4
estratgias
de
gerao
de
chaves
primrias.
AUTO;
TABLE
SEQUENCE
ou
IDENTITY
O
provedor
de
persistncia
uMliza
sua
prpria
estratgia
(tabelas
ou
seqncia)
para
gerar
os
IDs.
Isto
requer
privilgios
que
freqentemente
restrito
aos
DBAs.
Exemplo:
Estratgia
AUTO
@En/ty public class Aluno implements Serializable { @Id @GenerateValue(strategy=Genera/onType.AUTO) private int id; }
Alguns
bancos
suportam
como
chave
primria
uma
coluna
de
auto-incremento.
Exemplo:
@En/ty
public
class
Aluno
implements
Serializable
{
@Id
@GenerateValue(strategy=Genera/onType.IDENTITY)
private
int
id;
}
Estratgia
IDENTITY
Nesse
Mpo
de
estratgia,
na
maioria
dos
SGDBs,
no
possvel
acessar
o
valor
do
ID
at
que
a
transao
seja
nalizada.
Tambm
um
valor
automMco,
assim
como
a
estratgia
AUTO.
o l e d Mo lt u a f e D
@En/ty
public
class
Aluno
implements
Serializable
{
@Id
@GenerateValue(strategy=Genera/onType.TABLE)
private
int
id;
}
O
provedor
assume
um
tabela
default
Essa estratgia pode ser uMlizada em qualquer Mpo de banco de dados. Indica que o provedor de persistncia deve atribuir as chaves primrias para a enMdade atravs de uma tabela de banco de dados subjacente para garanMr a exclusividade.
da a e Nom
@TableGenerator(name=Aluno_Gen,
table=ID_GEN,
pkColumnName=GEN_NAME,
valueColumnName=GEN_VAL)
public
class
Aluno
implements
Serializable
{
@Id
@GenerateValue(strategy=GeneraMonType.TABLE,
generator=Aluno_Gen)
private
int
id;
}
ID_GEN
GEN_NAME
Aluno_Gen
GEN_VAL
0
o l e d Mo lt u a f e D
da a e Nom
Classe
da
En7dade
@EnMty
@IdClass(ClientePK.class)
public
class
Cliente
implements
Serializable
{
@Id
private
String
sobreNome;
@Id
private
Long
rg;
private
String
nome;
//Gets
and
Sets
}
Classe
da
En7dade
@EnMty
public
class
Cliente
implements
Serializable
{
private
String
nome;
@EmbeddedId
private
ClientePK
pk;
//Gets
and
Sets
}
Informa ao En7tyManager a tabela relacional para qual sua classe EnMty mapeada. Exemplo:
Descreve
a
maneira
como
um
atributo
do
EnMty
mapeado
para
uma
coluna
da
tabela.
Exemplo:
@En/ty
public
class
Aluno
implements
Serializable
{
@Column(name=ALU_NOME)
private
String
nome;
@Column(name=ALU_SOBRENOME)
private
String
sobreNome;
}
Usado
para
mapear
propriedades
persistentes.
UMlizado
quando
se
deseja
realizar
o
carregamento
sobre
demanda
(LAZY)
ou
imediatamente
(EAGER).
Exemplo:
@EnMty
public
class
Cliente
implements
Serializable
{
@Basic(fetch=FetchType.LAZY)
private
Byte[]
arquivo;
}
Permite
mapear
os
Mpos
de
objetos
(java.u7l.Date
e
java.u7l.Calendar)
para
DATE,
TIME
e
TIMESTAMP.
@EnMty
public
class
Cliente
implements
Serializable
{
private
long
Id;
@Temporal(TemporalType.TIME)
private
java.uMl.Date
MmeCreated;
//
GETs
and
SETs
}
UMlizado
para
representar
propriedades
persistentes
que
exigem
muita
memria.
Tipos
JDBC
especiais
Java.sql.Blob
Java.sql.Clob
Exemplo
import
com.acme.imaging.JPEG
@EnMty
public
class
Cliente
implements
Serializable
{
@Id
private
long
Id;
private
String
name;
@Lob
@Basic(fetch=FetchType.LAZY)
private
JPEG
photo;
//
GETs
and
SETs
}
Tipos
enum
Java
podem
ser
mapeados
para
a
representao
de
String
ou
Nmero
ordinal.
Exemplo:
@EnMty
public
enum
TypeClient{
REGISTRADO,
NAOREGISTRADO
}
public
class
Cliente
implements
Serializable
{
@Id
private
long
Id;
private
String
name;
@Enumerated(EnumType.STRING)
private
TypeClient
type;
//
GETs
and
SETs
}
1. Crie
uma
enMdade
simples
(Ex.:
Carro
[id,
placa,
Mpo]
e
aplique
a
esta
as
4
formas
de
gerao
de
chave
primria.
Observe
a
forma
de
gerao
para
o
SGBD
instalado
em
sua
mquina.
2. Crie uma enMdade de chave primaria composta e testes a duas formas possveis, em JPA, de represent-la.
hpp://www.objectdb.com/java/jpa