HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Для получения данных извне и передачи их куда-то дальше в Java используются Data-классы. Обычно это связано с любыми внешними источниками данных, базой данных, HTTP, файлами. Если нам нужно получить какие-то данные, например информацию о заказе, нам придется создать класс, который описывает этот заказ. Причем сам класс не будет зависеть от того, из какого источника пришли данные. То же самое работает и в обратном направлении, если нам нужно выгрузить данные, то для этого создаются свои классы, которые содержат только необходимые поля.</p>
1 <p>Для получения данных извне и передачи их куда-то дальше в Java используются Data-классы. Обычно это связано с любыми внешними источниками данных, базой данных, HTTP, файлами. Если нам нужно получить какие-то данные, например информацию о заказе, нам придется создать класс, который описывает этот заказ. Причем сам класс не будет зависеть от того, из какого источника пришли данные. То же самое работает и в обратном направлении, если нам нужно выгрузить данные, то для этого создаются свои классы, которые содержат только необходимые поля.</p>
2 <p>Data-классы это обычные классы без поведения. Из-за этого их стараются делать неизменяемыми, или как говорят иммутабельными (immutable), для избежания случайных ошибок. В идеале у этих классов нет сеттеров, а все поля помечены как final, что защищает их от изменения.</p>
2 <p>Data-классы это обычные классы без поведения. Из-за этого их стараются делать неизменяемыми, или как говорят иммутабельными (immutable), для избежания случайных ошибок. В идеале у этих классов нет сеттеров, а все поля помечены как final, что защищает их от изменения.</p>
3 <p>Data-классы это настолько большая часть любого приложения на Java, что в язык была внедрена новая конструкция Record (запись). Записи по своей сути Data-классы. Ниже пример того, как мы бы могли переделать наш OrderDTO:</p>
3 <p>Data-классы это настолько большая часть любого приложения на Java, что в язык была внедрена новая конструкция Record (запись). Записи по своей сути Data-классы. Ниже пример того, как мы бы могли переделать наш OrderDTO:</p>
4 <p>Запись значительно сокращает количество кода, предоставляя практически такую же функциональность. Но с небольшими отличиями. Геттеры в записях не содержат префикса<em>get</em>.</p>
4 <p>Запись значительно сокращает количество кода, предоставляя практически такую же функциональность. Но с небольшими отличиями. Геттеры в записях не содержат префикса<em>get</em>.</p>
5 <p>Несмотря на синтаксическое превосходство, записи обладают рядом недостатков, которые делают их использование в качестве замены обычных классов неудобным. Сюда входят:</p>
5 <p>Несмотря на синтаксическое превосходство, записи обладают рядом недостатков, которые делают их использование в качестве замены обычных классов неудобным. Сюда входят:</p>
6 <ul><li>Возможность работать только в неизменяемом стиле. Нет сеттеров.</li>
6 <ul><li>Возможность работать только в неизменяемом стиле. Нет сеттеров.</li>
7 <li>Только один конструктор со всеми полями.</li>
7 <li>Только один конструктор со всеми полями.</li>
8 <li>Нет наследования (иногда нужно).</li>
8 <li>Нет наследования (иногда нужно).</li>
9 <li>Многие библиотеки и фреймворки до сих пор не совместимы с записями.</li>
9 <li>Многие библиотеки и фреймворки до сих пор не совместимы с записями.</li>
10 </ul><p>Поэтому основным способом по-прежнему является создание обычных классов. И Lombok делает этот процесс достаточно простым.</p>
10 </ul><p>Поэтому основным способом по-прежнему является создание обычных классов. И Lombok делает этот процесс достаточно простым.</p>
11  
11