Size: a a a

2020 April 29

ch

central hardware in pro.jvm
источник

h

humanoid in pro.jvm
central hardware
Два поля тогда походу единственный выход, иначе нужен общий предок
Ну два поля и будут, просто инкапсулированы в контейнер Билет, где проверяется, что только один из двух вариантов билетов может существовать.
источник

h

humanoid in pro.jvm
Мне тогда Билет надо @Entity отменить?
источник

ch

central hardware in pro.jvm
humanoid
Ну два поля и будут, просто инкапсулированы в контейнер Билет, где проверяется, что только один из двух вариантов билетов может существовать.
Это в 90% случаев костыль
источник

h

humanoid in pro.jvm
Из @Embeddable можно ссылаться на энтити?
источник

h

humanoid in pro.jvm
central hardware
Это в 90% случаев костыль
Костыль вплане прийдется писать, тк в jpa такого варианта нет?
источник

ch

central hardware in pro.jvm
humanoid
Костыль вплане прийдется писать, тк в jpa такого варианта нет?
Костыль в плане вы забили на ООП без веской на то причины
источник

h

humanoid in pro.jvm
central hardware
Костыль в плане вы забили на ООП без веской на то причины
Поясните позицию, а то я только услышал, что это костыль, что я забил на “ооп”, а почему не услышал
источник

h

humanoid in pro.jvm
По сути без orm, я бы хранил в таблице два поля референса на разные таблицы. А маппил бы их в отдельный как раз объект Ticket.
источник

ch

central hardware in pro.jvm
источник

h

humanoid in pro.jvm
Я как раз обязанность-инвариант, что билет может быть только либо забронированным, либо отмененным налагаю на объект билет. И выражаю это через типы
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶 in pro.jvm
Можно попробовать сделать общего предка - entity со стратегией наследования таблица на класс.
Других мыслей пока нет.
А на уровне бд какие-то проверки есть? fk?
источник

h

humanoid in pro.jvm
Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶
Можно попробовать сделать общего предка - entity со стратегией наследования таблица на класс.
Других мыслей пока нет.
А на уровне бд какие-то проверки есть? fk?
Я сейчас понял, наверное это не java-way проверять типо if(ticket instanceof BookedTicket){ …
Паттерн матчинга нет, sealed нет.
Видимо java-way - просто хранить два поля на разные таблицы, а в энтити проверять на null
источник

h

humanoid in pro.jvm
Надо делать проще) Разве не для этого я jpa и взял)
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶 in pro.jvm
Чем больше проверок целостности данных производится на уровне СУБД, тем лучше. Без разницы на чем приложение
источник

h

humanoid in pro.jvm
Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶
Чем больше проверок целостности данных производится на уровне СУБД, тем лучше. Без разницы на чем приложение
Ну я больше приверженец строгости на уровне приложения, а не бд. В бд только констрейнты для оптимизаций, по сути индексы.
Логику в бд сложнее поддерживать
источник

BP

Bogdan Panchenko in pro.jvm
Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶
Чем больше проверок целостности данных производится на уровне СУБД, тем лучше. Без разницы на чем приложение
*на РСУБД 🌚
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶 in pro.jvm
Ну здесь речь о рсубд, насколько я понимаю :)
источник

D𝔇

Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶 in pro.jvm
humanoid
Ну я больше приверженец строгости на уровне приложения, а не бд. В бд только констрейнты для оптимизаций, по сути индексы.
Логику в бд сложнее поддерживать
Не логику, только констрейнты.
А что вы будете делать, когда админ Вася случайно поправит данные так, что будут привязаны одновременно оба типа билетов?
источник

h

humanoid in pro.jvm
Dmitry 𝔇𝔪𝔦𝔱𝔯𝔶
Не логику, только констрейнты.
А что вы будете делать, когда админ Вася случайно поправит данные так, что будут привязаны одновременно оба типа билетов?
Ну у нас нет такого админа Васи, у нас этип схемой программисты занимаются, а так конечно же руки ему оторвать)
источник