Olá, bom dia. O login não deveria ter o 'unique' na migration para gerar valores diferentes para cada usuário? Podemos fazer isso na validation no DTO? Não faz nenhuma diferença?
Olá, bom dia. O login não deveria ter o 'unique' na migration para gerar valores diferentes para cada usuário? Podemos fazer isso na validation no DTO? Não faz nenhuma diferença?
Olá, Arthur
A sua pergunta é muito pertinente. Na migration que cria a tabela de usuários, é importante sim adicionar a restrição de unique
para o campo de login, para garantir que cada usuário tenha um login único. Isso evita que haja duplicidade de logins no sistema.
A validação no DTO também é importante para garantir que o login seja único antes de salvar no banco de dados. No entanto, a validação no DTO ocorre apenas no momento da requisição, antes de salvar os dados no banco. Se a validação no DTO não for feita corretamente, pode ocorrer uma exceção no momento de salvar os dados no banco.
Portanto, é recomendado adicionar a restrição de unique
na migration e também fazer a validação no DTO para garantir a unicidade do login.
Aqui está um exemplo de como adicionar a restrição de unique
na migration:
create table usuarios(
id bigint not null auto_increment,
login varchar(100) not null unique,
senha varchar(255) not null,
primary key(id)
);
E aqui está um exemplo de como fazer a validação no DTO utilizando o framework Spring Boot:
public class UsuarioDTO {
@NotBlank(message = "O login é obrigatório")
@Size(max = 100, message = "O login deve ter no máximo 100 caracteres")
private String login;
@NotBlank(message = "A senha é obrigatória")
@Size(max = 255, message = "A senha deve ter no máximo 255 caracteres")
private String senha;
// getters e setters
}
Espero ter ajudado! Se tiver mais alguma dúvida, é só me dizer. Bons estudos!