Sollte ich Wertobjekte oder Bean -Validierung für DTOs im Spring -Boot verwenden?Java

Java-Forum
Anonymous
 Sollte ich Wertobjekte oder Bean -Validierung für DTOs im Spring -Boot verwenden?

Post by Anonymous »

Ich habe die beiden folgenden DTOs: < /p>

Code: Select all

public record BankCreateRequest(
@NotBlank(message = "The name is a required field.")
@Length(max = 255, message = "The name cannot be longer than 255 characters.")
@Pattern(regexp = "^[a-zA-ZčćžšđČĆŽŠĐ\\s]+$", message = "The name can only contain alphabetic characters.")
String name,

@NotBlank(message = "The giro account is a required field.")
@Pattern(
regexp = "^555-[0-9]{3}-[0-9]{8}-[0-9]{2}$",
message = "Bank account number must be in the format 555-YYY-ZZZZZZZZ-WW"
)
@Size(min = 19, max = 19, message = "Bank account number must be exactly 19 characters long")
String bankAccountNumber,

@Pattern(
regexp = "^(\\d{3}/\\d{3}-\\d{3})?$",
message = "Fax number must be in the format XXX/YYY-ZZZ (e.g., 123/456-789)"
)
String fax
) {
}
< /code>
public record BankUpdateRequest(
@Length(max = 255, message = "The name cannot be longer than 255 characters.")
@Pattern(regexp = "^[a-zA-ZčćžšđČĆŽŠĐ\\s]+$", message = "The name can only contain alphabetic characters.")
String name,

@Pattern(
regexp = "^555-[0-9]{3}-[0-9]{8}-[0-9]{2}$",
message = "Bank account number must be in the format 555-YYY-ZZZZZZZZ-WW"
)
@Size(min = 19, max = 19, message = "Bank account number must be exactly 19 characters long")
String bankAccountNumber,

@Pattern(
regexp = "^(\\d{3}/\\d{3}-\\d{3})?$",
message = "Fax number must be in the format XXX/YYY-ZZZ (e.g., 123/456-789)"
)
String fax
) {
}
Ich wiederhole die Bean -Validierung für alle Felder hier und es gibt auch andere Orte, an denen ich möglicherweise ein Name Feld habe, ein BankAccountNumber usw. Ich dachte also daran, stattdessen Value -Objekte zu verwenden, aber per Definition, dass ein Wertobjekt nicht null ist, was nicht in Konflikt mit meinen Anforderungen für das patlad -basierte Update -do -do -do -do -do -do -do, das nicht erforderlich ist. Ich wollte so etwas haben: < /p>
record BankCreateRequest(@NotNull Name name, @NotNull BankAccountNumber bankAccountNumber, Fax fax) {}

record BankUpdateRequest(Name name, BankAccountNumber bankAccountNumber, Fax fax) {}
< /code>
und haben drei dedizierte Datensätze, die überprüfen, ob diese Werte gültig sind. Geht dies gegen gemeinsame Best Practices für Werteobjekte, da diese per Definition nicht null sein können? Gibt es einen besseren Ansatz, der so einfach ist?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post