Найти в Дзене
Java

🖥 Java Records - это не просто DTO

Многие думают, что record - только для хранения данных. Но на практике это полноценный тип, в котором можно добавить бизнес-логику. Что можно внутри record: * конструкторы с валидацией * instance-методы * static-методы * фабричные методы * нормализацию данных Пример реального использования: public record Email(String address) { // Валидация при создании public Email { if (address == null || !address.matches("^[\\w-.]+@[\\w-]+\\.[\\w]{2,4}$")) { throw new IllegalArgumentException("Invalid email: " + address); } } // Бизнес-логика public String domain() { return address.substring(address.indexOf("@") + 1); } // Фабричный метод public static Email from(String raw) { return new Email(raw.trim().toLowerCase()); } } Почему это мощно: * неизменяемость по умолчанию * вся логика рядом с данными * меньше boilerplate * безопасное создание объектов * идеальный формат для Value Objects (DDD) Record - это не “структура”. Это компактный способ писать чистые доменные модели. Если используеш

🖥 Java Records - это не просто DTO.

Многие думают, что record - только для хранения данных.

Но на практике это полноценный тип, в котором можно добавить бизнес-логику.

Что можно внутри record:

* конструкторы с валидацией

* instance-методы

* static-методы

* фабричные методы

* нормализацию данных

Пример реального использования:

public record Email(String address) {

// Валидация при создании

public Email {

if (address == null || !address.matches("^[\\w-.]+@[\\w-]+\\.[\\w]{2,4}$")) {

throw new IllegalArgumentException("Invalid email: " + address);

}

}

// Бизнес-логика

public String domain() {

return address.substring(address.indexOf("@") + 1);

}

// Фабричный метод

public static Email from(String raw) {

return new Email(raw.trim().toLowerCase());

}

}

Почему это мощно:

* неизменяемость по умолчанию

* вся логика рядом с данными

* меньше boilerplate

* безопасное создание объектов

* идеальный формат для Value Objects (DDD)

Record - это не “структура”.

Это компактный способ писать чистые доменные модели.

Если используешь records только как DTO, ты используешь их на 50%.