Size: a a a

Java/Kotlin and more

2021 June 08

K

Kehlani in Java/Kotlin and more
Тому же Хибернейту вроде нужен конструктор без параметров, т.е. сначала создаётся пустая сущность, а уже потом инициализируются поля
Ленивой подгрузке иммутабельность тоже мешать будет 🌚
источник

K

Kehlani in Java/Kotlin and more
Для Котлина даже специальный хак сделали - kotlin-jpa, который эти ограничения обходит и позволяет использовать data-классы как сущности JPA
источник

ME

Makhlov Egor in Java/Kotlin and more
Делаю с нативной java, всё DAO на jdbc, как-то про возможный дальнейший перепил под ORM не подумал..
источник

Э

Эд in Java/Kotlin and more
уточни мутации в каких местах?
источник

K

Kehlani in Java/Kotlin and more
Если честно, мне вот вообще ни разу не понадобилась иммутабельность в проектах, пользуюсь ею только в Котлине, потому что вызвать метод .copy удобнее, чем вызывать несколько сеттеров друг за другом 😁
источник

ME

Makhlov Egor in Java/Kotlin and more
KeyAccount, CurrentAccount, CreditCard - сделать объекты неизменяемыми
источник

Э

Эд in Java/Kotlin and more
это дата-объекты? Их ещё называют структуры, данные
источник

Э

Эд in Java/Kotlin and more
тогда иммутабельные делать по дефолту
источник

ME

Makhlov Egor in Java/Kotlin and more
Что ты подразумеваешь, когда говоришь дата-объекты?
То, что я перечислил - сущности домена. То, что находится на domain-layer
источник

Э

Эд in Java/Kotlin and more
я имею в виду объекты, главная цель которых - содержать информацию в себе. Классы таких объектов выглядят как
class Some (
 val a: String,
 val b: Int,
 val c: AnotherDataObject,
)
источник

Э

Эд in Java/Kotlin and more
например, это тело  запроса/ ответа, entity - маппинг сущности БД
источник

ME

Makhlov Egor in Java/Kotlin and more
Да, похоже, что это дата-объекты, но в ходе работы программы (при переводе денег, например, или смене PIN-кода) значения их полей могут меняться.

Собственно, о чем я и задумался: стоит ли такое делать immutable и при переводе денег порождать новые объекты взамен старым с обновленными полями или забить на immutable и менять значение поле одновременно и в БД и в классе (не создавая новой сущности)
источник

Э

Эд in Java/Kotlin and more
стоит такое делать immutable или effectively final, если возможно
источник

Э

Эд in Java/Kotlin and more
думаю, это то, к чему стараются двигаться, насколько читал, общался
источник

ME

Makhlov Egor in Java/Kotlin and more
Хм.. понял, спасибо
источник

RZ

Roman Zinchuk in Java/Kotlin and more
Иммутабельность хороша для потокобезопасности
источник

AE

Alexandr Emelyanov in Java/Kotlin and more
Это решается noargs плагином
источник

AE

Alexandr Emelyanov in Java/Kotlin and more
А, ну вот, да
источник

AE

Alexandr Emelyanov in Java/Kotlin and more
Мапперы решают
источник

AE

Alexandr Emelyanov in Java/Kotlin and more
Спорное утверждение
источник