Будьте в спящем режиме, вставьте или обновите без выбора

Интерфейсы не имеют модификаторов доступа в своих методах, оставляя их открытыми для того, какой бы ни модификатор доступа является соответствующим. Это имеет цель: это позволяет другим типам выводить, какие методы и свойства доступны для объекта после интерфейса. Предоставление им защищенные/внутренние средства доступа побеждает цель интерфейса.

, Если Вы непреклонны, что необходимо обеспечить модификатор доступа для метода, или упустить его из интерфейса, или поскольку Вы сказали, используйте абстрактный класс.

10
задан Vladimir 30 November 2009 в 15:23
поделиться

3 ответа

session.load () существует специально для подобных случаев. Следующее:

Category category = session.load(categoryId);
product.setCategory(category);

не попадет в базу данных. Однако он вызовет исключение на более позднем этапе (во время сброса, более или менее), если нет категории с данным идентификатором.

Использование load () быстрее, чем слияние () и не имеет побочных эффектов (каскадирование и т. Д.)

10
ответ дан 4 December 2019 в 00:25
поделиться

Я только что попробовал следующее:

Category category = new Category(categoryId);
product.setCategory(category);

И это сработало, я имею в виду, что запись продукта в базе данных имеет правильную ссылку на категорию, а категория с идентификатором

categoryId

не изменилась.

0
ответ дан 4 December 2019 в 00:25
поделиться

Для Hibernate необходим безопасный способ определения состояния вашего объекта. Вот почему нужно пройти долгий путь, чтобы убедиться, что вы не можете смешивать объекты из разных сеансов (чтобы вы не могли загружать категории при запуске, а затем просто использовать их позже).

Решение состоит в том, чтобы загружать категории при запуске , настройте поставщика кэширования, например ehcache для этого класса, а затем используйте этот код:

Product product = new Product(somename);
product.setCategory(session.merge(category));

Это не вызовет каких-либо циклических обходов БД, если вы настроите кеш, который экземпляры категории не могут изменить.

2
ответ дан 4 December 2019 в 00:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: