JPA 2, API design, дайте глобус
ru_java — 15.11.2010
4.10 Bulk Update and Delete Operations
(...)
A delete operation only applies to entities of the specified class and its subclasses. It does not cascade to related entities.
(...)
И знаете чего? Ребята, которые рисуют всяческие ORM и всегда с прибором клали на спеки, внезапно прониклись, прочистили залипшие чакры и сделали, как просили. То есть, если вы фигачите нечто вида "delete from Message m where m.id in (?)" и Message содержит ассоциации, то вы получите исключение внешнего ключа. Потому что, по логике дизигнеров API, вы должны соорудить нечто навроде (краткий вариант кода)
List list = messageDao.getListForId...
for(Message msg: list) {
messageDao.delete(msg);
}
Если врубить трассировку (ха-ха, не все ORM, к слову, готовы делить своими sql), то вы обнаружите отдельный запрос на удаление на каждую ассоциацию к каждой мессаге. Меж тем в SchemeMedaData вполне верная DDL существует и ничто не мешает сделать по-человечески.
Чем дальше я гляжу в код "hiload, modern designed web application" тем сильнее убеждаюсь, что некоторые серебряные пули уверенно кладут только девелоперов.
|
|
</> |
Виртуальные номера для регистрации: удобство и безопасность современных решений
Тайны глубоководных воблеров: как дипы покоряют окуня и щуку
Тыквы
Дачный урожай.
Золотая осень
Первые официальные сатанинские обряды Ватикана.
Требовал перевода культурной среды РФ в «патриотическую плоскость»
Новая книга - Юрий Кувалдин ЖЖ
Музейная кража

