Size: a a a

Spring Framework and more

2020 January 30

РН

Роман Нагаев in Spring Framework and more
Эльдар
мммм, неееет, снова путаю. там hql запрос выполнялся
в той книжке которую ты читаешь, есть глава про транзакции, попробуй сразу на неё перескочить, может найдёшь там ответ
источник

Э

Эльдар in Spring Framework and more
Vitaly Sirotkin
Он всегда обращается к базе. Ты видимо так и не понял до конца концепцию репозиториев и судя по всему вообще орм
да, не понял, в процессе
источник

Э

Эльдар in Spring Framework and more
Роман Нагаев
в той книжке которую ты читаешь, есть глава про транзакции, попробуй сразу на неё перескочить, может найдёшь там ответ
🙌🏻
источник

VS

Vitaly Sirotkin in Spring Framework and more
У тебя практически любые операции над entity отражаются на бд
источник

Э

Эльдар in Spring Framework and more
Vitaly Sirotkin
У тебя практически любые операции над entity отражаются на бд
поясню, я имею ввиду нечто вроде следующего: у нас есть объекты и таблицы. я понимаю, что они синхронизируются. хибернейт устанавливает ограничения на сущности, и когда мы удаляем объект из репо, всё ок, только медленно(тысячи и тысячи селект запросов для удаления), а когда выполняем @query, обращаемся напрямую к бд, игнорируя все установленные ограничения, и соответственно получая или не то или исключение. и спрашивая, является ли jql работой с обьектами, я имел ввиду что мы используем синтаксис sql-подобный, только не для базы, а для графа объектов.
источник

РН

Роман Нагаев in Spring Framework and more
Эльдар
поясню, я имею ввиду нечто вроде следующего: у нас есть объекты и таблицы. я понимаю, что они синхронизируются. хибернейт устанавливает ограничения на сущности, и когда мы удаляем объект из репо, всё ок, только медленно(тысячи и тысячи селект запросов для удаления), а когда выполняем @query, обращаемся напрямую к бд, игнорируя все установленные ограничения, и соответственно получая или не то или исключение. и спрашивая, является ли jql работой с обьектами, я имел ввиду что мы используем синтаксис sql-подобный, только не для базы, а для графа объектов.
@query если он не native тоже работает с сущностями
ограничения то в бд есть?
jpa не заменяет их а дополняет
источник

VS

Vitaly Sirotkin in Spring Framework and more
Эльдар
поясню, я имею ввиду нечто вроде следующего: у нас есть объекты и таблицы. я понимаю, что они синхронизируются. хибернейт устанавливает ограничения на сущности, и когда мы удаляем объект из репо, всё ок, только медленно(тысячи и тысячи селект запросов для удаления), а когда выполняем @query, обращаемся напрямую к бд, игнорируя все установленные ограничения, и соответственно получая или не то или исключение. и спрашивая, является ли jql работой с обьектами, я имел ввиду что мы используем синтаксис sql-подобный, только не для базы, а для графа объектов.
Что значит "игнорируя ограничения"? Ничего там не игнорируется
источник

Э

Эльдар in Spring Framework and more
Vitaly Sirotkin
Что значит "игнорируя ограничения"? Ничего там не игнорируется
я выполняю удаление родительского объекта, и получаю исключение о нарушении целостности внешнего ключа для дочерней таблицы, а ожидал каскадного удаления
источник

VS

Vitaly Sirotkin in Spring Framework and more
Эльдар
я выполняю удаление родительского объекта, и получаю исключение о нарушении целостности внешнего ключа для дочерней таблицы, а ожидал каскадного удаления
Это ограничение со стороны бд. Оно у тебя в любом случае упадет, хоть на нативе напиши
источник

РН

Роман Нагаев in Spring Framework and more
Эльдар
я выполняю удаление родительского объекта, и получаю исключение о нарушении целостности внешнего ключа для дочерней таблицы, а ожидал каскадного удаления
тогда у тебя два варианта, либо использовать каскады jpa либо руками удалить сначала потомка а потом родителя
я советую руками
источник

Э

Эльдар in Spring Framework and more
Роман Нагаев
@query если он не native тоже работает с сущностями
ограничения то в бд есть?
jpa не заменяет их а дополняет
в бд нет, так мне всё-таки следует их продублировать в базе? просто кажется кривым подходом, но если это не так плохо, не буду зацикливаться и продолжу изучение
источник

РН

Роман Нагаев in Spring Framework and more
Роман Нагаев
тогда у тебя два варианта, либо использовать каскады jpa либо руками удалить сначала потомка а потом родителя
я советую руками
ещё можно orphanRemoval использовать
источник

Э

Эльдар in Spring Framework and more
Роман Нагаев
ещё можно orphanRemoval использовать
стоит оно 😂
источник

РН

Роман Нагаев in Spring Framework and more
Эльдар
стоит оно 😂
у связи есть такое понятие как owning side, это может повлиять на удаление, попробуй покопать в эту сторону, возможно тебе придётся сделать двунаправленную связь, а это тоже имеет свои нюансы
источник

Э

Эльдар in Spring Framework and more
Роман Нагаев
у связи есть такое понятие как owning side, это может повлиять на удаление, попробуй покопать в эту сторону, возможно тебе придётся сделать двунаправленную связь, а это тоже имеет свои нюансы
хорошо, спасибо
источник

РШ

Роман Шершуков in Spring Framework and more
Роман Нагаев
тогда у тебя два варианта, либо использовать каскады jpa либо руками удалить сначала потомка а потом родителя
я советую руками
Объясните, если не сложно: почему руками лучше?
источник

RK

Roman K in Spring Framework and more
Роман Шершуков
Объясните, если не сложно: почему руками лучше?
Ну как минимум потому что ты это сам всё это контролируешь
источник

РШ

Роман Шершуков in Spring Framework and more
Roman K
Ну как минимум потому что ты это сам всё это контролируешь
Ну так и от спринга можно отказаться))) зато тоже сам все контролируешь
источник

VS

Vitaly Sirotkin in Spring Framework and more
Роман Шершуков
Ну так и от спринга можно отказаться))) зато тоже сам все контролируешь
Да чего мелочиться, от джавы сразу)
источник

РН

Роман Нагаев in Spring Framework and more
Роман Шершуков
Объясните, если не сложно: почему руками лучше?
да, потому что сам контролируешь, например я с таким столкнулся

orphanRemoval связанной сущности при условии что поле внешнего ключа NOT NULL, гибернейт у меня сначала пытался занулить внешний ключ и только потом удалить  потомка, соответственно падал
источник