Como o JPA gera as tabelas no banco?
Como o JPA faz a criação das tabelas no banco de dados através das classes e dos atributos criados ? O que permite essa ligação entre aplicação e o Banco de da Dados?
Wellington
Curtidas 0
Respostas
Jones Granatyr
20/10/2016
Opa! Exatamente, ele faz o mapeamento objeto-relacional, ou seja, transforma a estrutura das classes em tabelas no BD. Para decidir que tipo de relacionamento fazer (1-N, 1-1 ou N-N), ele usa o relacionamento entre os próprios objetos
GOSTEI 0
Angelo Santos
20/10/2016
Olá, Wellington
Depende da implementação que você vai utilizar. Se você utilizar Hibernate o mapeamento objeto-relacionamento pode ser feito através de Annotations (em versões mais antigas era feito através de XML). Segue abaixo um exemplo de uma classe mapeada para uma entidade no banco:
@Entity indica que objetos dessa classe se tornem "persistível" no banco de dados.
@Id indica que o atributo id é nossa chave primária
@GeneratedValue diz que queremos que esta chave seja populada pelo banco.
@Temporal configura como mapear um Calendar para o banco, no exemplo foi utilizado apenas a data (sem hora), mas poderia ser utilizado apenas a hora (TemporalType.TIME) ou timestamp (TemporalType.TIMESTAMP).
Existe também @Column, que você configura o nome das colunas para tabela. No exemplo como as variáveis não foram anotadas com @Column as colunas na tabela será criada com o mesmo nome da variável.
Essas anotações precisam dos devidos imports, e pertencem ao pacote javax.persistence.
Caso queira aprofundar mias no assunto, aqui na Devmedia existem ótimos cursos e artigos,
Espero ter ajudado.
Depende da implementação que você vai utilizar. Se você utilizar Hibernate o mapeamento objeto-relacionamento pode ser feito através de Annotations (em versões mais antigas era feito através de XML). Segue abaixo um exemplo de uma classe mapeada para uma entidade no banco:
@Entity(name="db_tarefa")
public class Tarefa {
@Id
@GeneratedValue
private Long id;
private String descricao;
@Temporal(TemporalType.DATE)
private Calendar dataInicio;
// métodos...
}
@Entity indica que objetos dessa classe se tornem "persistível" no banco de dados.
@Id indica que o atributo id é nossa chave primária
@GeneratedValue diz que queremos que esta chave seja populada pelo banco.
@Temporal configura como mapear um Calendar para o banco, no exemplo foi utilizado apenas a data (sem hora), mas poderia ser utilizado apenas a hora (TemporalType.TIME) ou timestamp (TemporalType.TIMESTAMP).
Existe também @Column, que você configura o nome das colunas para tabela. No exemplo como as variáveis não foram anotadas com @Column as colunas na tabela será criada com o mesmo nome da variável.
Essas anotações precisam dos devidos imports, e pertencem ao pacote javax.persistence.
Caso queira aprofundar mias no assunto, aqui na Devmedia existem ótimos cursos e artigos,
Espero ter ajudado.
GOSTEI 0