
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
01.06.2012, 21:54:31
|
|||
|---|---|---|---|
Удаление объекта из базы Spring (Hibernate) |
|||
|
#18+
Есть объект у него много связей с другими вида OneToMany, как удалить его и соответственно связанные с ним объекты используя его Id. Каскады выставлены. Сейчас делаю вот так: Код: java 1. 2. 3. Во-первых подозреваю что это не правильно, во-вторых выскакивает ошибка, что сначала надо удалить связанные с этим объектом записи из других таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.06.2012, 21:59:35
|
|||
|---|---|---|---|
Удаление объекта из базы Spring (Hibernate) |
|||
|
#18+
в Базе почему-то не были выставлен каскад на удаление, разве это не работа Хибернайте схему Базы обновлять? И все таки как правильно удалить обьект по его Id? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.06.2012, 00:03:04
|
|||
|---|---|---|---|
Удаление объекта из базы Spring (Hibernate) |
|||
|
#18+
Опять экстрасенсов ищем? Entity свой покажи. Есть там связи или нет. Устанавливать вручную id - очень, очень, очень плохая практика. Судя по ошибке, у тебя или каскады неправильно настроены у свойства, или orphanRemoval не установлен. Автоматически хибер не удаляет дерево объектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.06.2012, 00:37:58
|
|||
|---|---|---|---|
Удаление объекта из базы Spring (Hibernate) |
|||
|
#18+
IDVsbruckОпять экстрасенсов ищем? Entity свой покажи. Есть там связи или нет. Устанавливать вручную id - очень, очень, очень плохая практика. Судя по ошибке, у тебя или каскады неправильно настроены у свойства, или orphanRemoval не установлен. Автоматически хибер не удаляет дерево объектов. Этот вопрос я уже решил) Я спрашиваю как удалить объект из базы зная его id, если у него нет связей никаких, используя Spring (hibernateTemplate)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.06.2012, 00:44:09
|
|||
|---|---|---|---|
Удаление объекта из базы Spring (Hibernate) |
|||
|
#18+
Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.06.2012, 00:45:36
|
|||
|---|---|---|---|
Удаление объекта из базы Spring (Hibernate) |
|||
|
#18+
*class ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.06.2012, 02:50:39
|
|||
|---|---|---|---|
Удаление объекта из базы Spring (Hibernate) |
|||
|
#18+
IDVsbruck Код: java 1. Странно однако) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.06.2012, 05:18:58
|
|||
|---|---|---|---|
Удаление объекта из базы Spring (Hibernate) |
|||
|
#18+
Почему? Ты хотел бы, что был метод .delete(Long id)? А как тогда быть тем, у кого ид-поле в виде стринга, интеджера? А если составные ключи? - Хиберу на все случаи жизни делать методы? Они стандарный забацали, а ты уж будь добр, разруливай дальше ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.06.2012, 09:51:03
|
|||
|---|---|---|---|
Удаление объекта из базы Spring (Hibernate) |
|||
|
#18+
rdmIDVsbruck Код: java 1. Странно однако)Если не хочется делать лишнее считывание, то воспользуйтесь HQL напрямую черезе Session-объект, в обход спрингового темплейта: Код: java 1. Или (не в обход темплейта) через HibernateTemplate.bulkUpdate(String queryString, Object value). Второй способ предпочтительнее, поскольку не придется обрабатывать транзакции самому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.06.2012, 10:49:31
|
|||
|---|---|---|---|
Удаление объекта из базы Spring (Hibernate) |
|||
|
#18+
IDVsbruckПочему? Ты хотел бы, что был метод .delete(Long id)? А как тогда быть тем, у кого ид-поле в виде стринга, интеджера? А если составные ключи? - Хиберу на все случаи жизни делать методы? Они стандарный забацали, а ты уж будь добр, разруливай дальше ... Разве get на загрузит обьект, какие-то поля там(я не про Lazy)? Т.е. для того чтобы удалить, мы должны его загрузить) Ну разве не странно? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.06.2012, 10:51:41
|
|||
|---|---|---|---|
Удаление объекта из базы Spring (Hibernate) |
|||
|
#18+
Senya_Lrdmпропущено... Странно однако)Если не хочется делать лишнее считывание, то воспользуйтесь HQL напрямую черезе Session-объект, в обход спрингового темплейта: Код: java 1. Или (не в обход темплейта) через HibernateTemplate.bulkUpdate(String queryString, Object value). Второй способ предпочтительнее, поскольку не придется обрабатывать транзакции самому. Мне казалось что bulkUpdate был добавлен для массового обновления данных в таблице. Все эти способы какие-то квадратные чтоли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.06.2012, 11:47:18
|
|||
|---|---|---|---|
Удаление объекта из базы Spring (Hibernate) |
|||
|
#18+
rdmIDVsbruckПочему? Ты хотел бы, что был метод .delete(Long id)? А как тогда быть тем, у кого ид-поле в виде стринга, интеджера? А если составные ключи? - Хиберу на все случаи жизни делать методы? Они стандарный забацали, а ты уж будь добр, разруливай дальше ... Разве get на загрузит обьект, какие-то поля там(я не про Lazy)? Т.е. для того чтобы удалить, мы должны его загрузить) Ну разве не странно? )session.get - загружает объект session.load - создает прокси с выставленным id-шником Попробуй вариант session.delete(session.load(MyObject.class, id)) и посмотри будет ли происходить "ненужное" вычитывание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.06.2012, 13:32:02
|
|||
|---|---|---|---|
Удаление объекта из базы Spring (Hibernate) |
|||
|
#18+
vas0rdmпропущено... Разве get на загрузит обьект, какие-то поля там(я не про Lazy)? Т.е. для того чтобы удалить, мы должны его загрузить) Ну разве не странно? )session.get - загружает объект session.load - создает прокси с выставленным id-шником Попробуй вариант session.delete(session.load(MyObject.class, id)) и посмотри будет ли происходить "ненужное" вычитывание. Все загружается) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.06.2012, 13:39:55
|
|||
|---|---|---|---|
Удаление объекта из базы Spring (Hibernate) |
|||
|
#18+
Я только делал load у hibernateTemplate) Вопрос то как мне кажется абсолютно банальный) Как удалить объект не загружая его по long id) Неужто нет стандартного подхода к этому используя hibernateTemplate? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.06.2012, 13:44:33
|
|||
|---|---|---|---|
Удаление объекта из базы Spring (Hibernate) |
|||
|
#18+
hibernateTemplate.bulkUpdate(String queryString, Object value) такой вариант работает) Но разве так правильно? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.06.2012, 15:38:17
|
|||
|---|---|---|---|
Удаление объекта из базы Spring (Hibernate) |
|||
|
#18+
Если посмотреть цепочку передачи объекта и реализацию механизма удаления сущности/объекта, то а) ясно будет, что при появлении метода delete(id) от будет делать все равно delete(get(class, id)); б) спринговский hibernateTemplate ничего совершенно сам не делает, только лишь передает параметры сессии хибернейта, а у хибера тоже нет такого метода, тоже либо только с объектом, либо еще с блокировкой (LockMode). Использование HQL (или другой способ) вряд ли оптимизирует процесс удаления. По скорости наверняка проиграет, так как конечный пункт удаления для любой цепочки удаления - это реализация DeleteEventListener и дальнейшие действия вплоть до драйвера - она одинакова, но затраты на парсинг текстового запроса, составление реального запроса к базе и т.д. - он более затратный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.06.2012, 18:35:53
|
|||
|---|---|---|---|
Удаление объекта из базы Spring (Hibernate) |
|||
|
#18+
IDVsbruckЕсли посмотреть цепочку передачи объекта и реализацию механизма удаления сущности/объекта, то а) ясно будет, что при появлении метода delete(id) от будет делать все равно delete(get(class, id)); б) спринговский hibernateTemplate ничего совершенно сам не делает, только лишь передает параметры сессии хибернейта, а у хибера тоже нет такого метода, тоже либо только с объектом, либо еще с блокировкой (LockMode). Использование HQL (или другой способ) вряд ли оптимизирует процесс удаления. По скорости наверняка проиграет, так как конечный пункт удаления для любой цепочки удаления - это реализация DeleteEventListener и дальнейшие действия вплоть до драйвера - она одинакова, но затраты на парсинг текстового запроса, составление реального запроса к базе и т.д. - он более затратный. Извините, я просто не понял смысл. Т.е. правильно сначала загрузить объект и потому удалить его стандартным методом delete? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&mobile=1&tid=2131657]: |
0ms |
get settings: |
18ms |
get forum list: |
26ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
54ms |
get topic data: |
20ms |
get forum data: |
5ms |
get page messages: |
78ms |
get tp. blocked users: |
3ms |
| others: | 329ms |
| total: | 547ms |

| 0 / 0 |
