2014-11-27 3 views
0

Я хотел бы знать, если передача ссылки на объект EntityManager ко всем моим методам BusinessLayer является анти-шаблоном или нет.Передача объекта EntityManager ко всем методам BusinessLayer

public void setCost(EntityManager em, int idProduct); 

public void updateProduct(EntityManager em, ProductEntity product); 

Я нахожу эту модель, так как практическое это позволяло мне управлять группировкой Muliple методов для создания персонализированных операций ...

public void initProduct(EntityManager em, ProductEntity product) { 
    ... 
    tx.begin() 
    ... 
    setCost(em, idProduct); 
    updateProduct(em, product); 
    ... 
    tx.commit(); 
} 

PS:

  • Я не использую Весну Фреймворк.
  • Слой бизнес-уровня и уровня доступа к данным на основе JPA предназначены для использования в настольном приложении .

Благодаря

+0

Единственный раз, когда я вижу, что это может быть использовано, вам понадобятся разные администраторы сущностей время от времени, например. работая с различными источниками данных. – Magnilex

ответ

1

Это кажется ненужным усилия, чтобы передать его в качестве параметра, так как вы можете вводить его гораздо проще через @PersistenceContext.

Или, если у вас нет контейнера для инъекций с зависимостями, вы можете вообще отказаться от ответственности. Вместо того, чтобы передавать EntityManager в качестве параметра, попросите его реализовать откуда-нибудь (например, JNDI).

+0

Выполняет ли аннотация @PersistenceContext в приложении «не web» (например, приложение для настольных систем)? Я не использую Spring Framework. – mathematix

+1

Не совсем нет. Для этого вам понадобится фреймворк Dependency Injection (CDI, Spring, Guice). Но это делает интерфейс чище. Что, если в какой-то момент вы решите больше не использовать EntityManager? Вам придется изменить все реализации или передать там «null». – Kayaman

+0

В этом случае я могу больше не использовать EntityManager? – mathematix

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