leandromoraesrj / sincad-backend

PROJETO BASE DE EXEMPLO USANDO AS MELHORES PRATICAS DE DESENVOLVIMENTO
0 stars 0 forks source link

Mapeamento Hibernate JPA - Básico #18

Open leandromoraesrj opened 2 years ago

leandromoraesrj commented 2 years ago

Mapeamento @Entity Mapeamento @Id Mapeamento @Temporal(TemporalType.DATE) Mapeamento @ElementCollection Mapeamento @ManytoMany Mapeamento @OneToMany

leandromoraesrj commented 2 years ago

@Entity

@Entity
@Table(name = "estabelecimento")
public class Estabelecimento

@Id

@SequenceGenerator(name = "se_estabelecimento_generator", sequenceName = "se_estabelecimento", initialValue = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "se_estabelecimento_generator")
@Column(name = "sq_estabelecimento")
private Long id;

@Temporal(TemporalType.DATE)

@Temporal(TemporalType.DATE)
@Column(name = "dt_concessao_inscricao", columnDefinition = "DATE")
private Date dataConcessao;

@ElementCollection

@ElementCollection
@CollectionTable(name = "historico_no_razao_social")
private List<String> historicoRazaoSocial = new ArrayList<>();

@ManyToOne

@JoinColumn(name = "sq_unidade_empresarial")
private UnidadeEmpresarial unidadeEmpresarial;

@OneToMany

@OneToMany(mappedBy = "unidadeEmpresarial")
private List<Estabelecimento> estabelecimentos;

@ManyToMany

@ManyToMany
@JoinTable(name = "estab_tipo_unidade_estab",
    joinColumns = @JoinColumn(name = "sq_tipo_unid_estabelecimento"),
    inverseJoinColumns = @JoinColumn(name = "sq_estabelecimento"))
private Set<TipoUnidadeEstabelecimento> tiposUnidadeEstabelecimento = new HashSet<>();

OBS1:Quando uma classe não precisa conhecer outra, então não se faz o mapeamento OBS2: no @ManytoMany, a outra classe, sem o @JoinTable, pode ser @ManyToMany(mappedBy = "tiposUnidadeEstabelecimento")

columnDefinition substituirá o sql DDL gerado pelo hibernate para esta coluna em particular, não é portátil e depende de qual banco de dados você está usando. Você pode usá-lo para especificar valor nulo, comprimento, precisão, escala ect.

Para fazer engenharia reversa das tabelas para o java

  1. Criar um projeto JPA: image

  2. Importar JPA Entities de uma tabela: image