2012-03-07 2 views
0

У меня есть Счет и Поставщик спящий объект.Как создать простой JSP для управления ассоциацией ManyToOne Hibernate

В одном счете есть только один поставщик.

Один поставщик может быть связан со многими счетами-фактурами.

В классе Invoice у меня есть поставщик, аннотированный с помощью @ManyToOne.

Все работает отлично в backend-слое, но ... как насчет интерфейса?

Я имею в виду, мой invoices.jsp действительно прост. У меня есть форма, где вы можете указать сумму и все данные счета-фактуры, а также <select><option value="${supplierid}>supplier description</option></select>.

В методе POST моего контроллера я получаю все эти данные, создаю новый счет, заполняю его свои свойства и что могу сделать с идентификатором поставщика?

К настоящему моменту я запрашиваю у поставщика ProviderService для этого идентификатора (ключа), присваиваю его свойству «поставщик» моего нового счета-фактуры и сохраняю его в спящем режиме.

Это лучшая практика или у вас есть лучшие идеи? Спасибо

ответ

1

session.load(Supplier.class, id); лучше, чем запрос, если вы хотите удовлетворить только ссылку, потому что она не создаст обратный путь к db, чтобы получить поставщика, он вернет прокси-сервер, который выполняет ссылку.

+0

не могли бы вы объяснить мне лучше, пожалуйста? Я использую Spring: hibernateTemplate.load (Fornitore.class, id); все нормально? А как насчет Jsp? Это правильный способ «составить» объект счета? –

+0

о настройке настраиваемого редактора для привязки свойства поставщика «непосредственно»: –

+0

binder.registerCustomEditor (Supplier.class .... ... –

0

Еще один вариант, который у вас есть, заключается в загрузке и кэшировании поставщиков, если предположить, что это не слишком частое изменение («слишком часто», конечно, необходимо определить, а также стратегия очистки кеша) , Затем вы можете получить идентификаторы поставщика из кеша, прежде чем предоставлять JSP, и когда вы создадите счет на отправке формы, вы можете извлечь из кеша поставщик, используя свой идентификатор.

+0

Какой кэш? Известный MEMCACHE? –

+0

Нет, вы просто добавляете атрибут HttpSession так что вы можете получить его позже (мне нравится создавать «контейнеры», которые содержат набор связанных данных, а не иметь большой беспорядок в сеансе). Опять же, в зависимости от ваших потребностей и объема данных, это может оказаться неприемлемым к вашему делу. –

+0

Что об этом? binder.registerCustomEditor (Supplier.class .... .... –

Смежные вопросы