Оптимизировать сохранение объектов Hibernate? - PullRequest
1 голос
/ 04 февраля 2009

Есть ли способ уменьшить ненужные / пустые поля во вставках SQL и обновлениях SQL?

Например, у меня есть один класс сущностей спящего режима, сопоставленный с таблицей с 10 столбцами. Заполнение данных фактически выполняется в два этапа. Когда пользователь отправит запрос, я вставлю информацию о запросе в таблицу со спящим объектом, но заполню только 7 полей. После некоторой обработки (например, дождитесь взаимодействия с другими пользователями) я заполню оставшиеся 3 поля (с идентификатором из предыдущей вставки).

Если я придерживаюсь одного класса сущностей, для второго обновления я делаю следующее:

1) Загрузить объект, идентифицируемый по идентификатору

2) Сохраните объект, который генерирует sql, который, кажется, отправляет все поля.

Кроме того, я создал два класса сущностей, и указал на одну и ту же таблицу и сохранил их отдельно.

У кого-нибудь есть лучшее предложение?

Kent

Edit:

Чего я действительно хотел бы достичь, так это что-то вроде следующего: вставить t (id, field1, field2) (?,?,?) обновить t set field3 =? Field4 =? где id =?

Лучшее, чего я мог достичь сейчас с dynamicUpdate = true, это вставить t (id, field1, field2) (?,?,?) выберите field1, field2, field3, field4 из t, где id =? обновить t set field3 =? Field4 =? где id =?

Есть ли способ исключить это утверждение select? Исходный постоянный объект не сохраняется нигде в памяти после вставки.

Дополнительная заметка. Класс сущности аннотирован валидацией Hibernate. В настоящее время я пытаюсь достичь желаемого эффекта, поэтому я прокомментировал их. Но когда я снова включаю их, я получаю ошибки проверки из-за @NotNull и @ NotEmpty.

1 Ответ

3 голосов
/ 04 февраля 2009

Если вы добавите аннотацию:

@org.hibernate.annotations.Entity(dynamicUpdate = true)

к началу вашей сущности только поля, которые были изменены, будут отправлены в базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...