Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Aproveitando a dúvida "Existe validação para campos que devem ser únicos?"

Bom dia galera da Alura!

Aproveitando a dúvida que foi feita aqui no forúm sobre campos que devem ser únicos como por exemplo CPF e e-mail, na classe DTO com Bean Validations o professor comentou que não é possivel, mas e fazer isso na classe modelo?

Não sei se é uma boa prática, e se não for por favor me avise, mas vi que existe pelo Spring Data JPA, as anotações unique que se utiliza quando tem apenas um campo único e @UniqueConstraint que você utiliza quando tem mais de um.

Fiz um exemplo abaixo, fiz a utilização além das anotações citadas da anotação @DateTimeFormat(pattern = "dd/MM/yyyy") na classe modelo.

Seria interessante utilizar essas anotações? Retorna também um erro 400 - bad request? Qual a desvantagem caso utilize? Qual seria a melhor prática recomendavel?

@Entity
@Table(name = "tb_users", uniqueConstraints= {
        @UniqueConstraint(columnNames ={"email","cpf"})
})
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "user_id")
    private Long id;

    @Column(name = "name", nullable = false)
    private String name;

    @Column(name = "email", nullable = false)
    private String email;

    @Column(name = "cpf", nullable = false)
    private String cpf;

    @Column(name = "birth_date")
    @DateTimeFormat(pattern = "dd/MM/yyyy") 
    private LocalDate birthDate;

    // getters and setter
1 resposta
solução!

Oi Bruno,

Não tem problemas de utilizar essas validações da JPA nas entidades.

A única questão é que tais validações serão executadas apenas quando a JPA for tentar persistir os dados no banco de dados, sendo que o comum é realizar tais validações antes de chegar na camada de persistência. No Controller, DTO ou uma camada de serviço, por exemplo.

Bons estudos!