2014-11-20 14 views
5

Jako student przeczytałem prawie całą dokumentację źródłową. O ile zrozumiałem, że wiosna jest potworem konfiguracji. Oparte na adnotacjach lub oparte na Xml, nie ma znaczenia, ale to, czego naprawdę nie rozumiem, to jaka jest różnica między menedżerem transakcji i menedżerem podmiotu.Jaka jest różnica między menedżerem transakcji a menedżerem obiektów

Jeśli mamy wstrzykniętego podmiotu zarządzającego na warstwie Dao, dlaczego potrzebujemy menedżera transakcji na warstwie usługi lub na odwrót. Jeśli wstrzykniemy menedżera transakcji (który otacza aktymanager), dlaczego potrzebujemy wstrzyknąć autorowi prawa na DaoLayer. W przypadku JPARepositories nie muszę wstrzykiwać żadnego menedżera. Wiosna robi wszystko dla mnie (nie rozumiem mechaniki). Moje kolejne pytanie dotyczy JPARepositories Spring używa entityManager lub transactionManager?

Odpowiedz

6

TransactionManager jest całkowicie inny niż EntityManager, jeden jest odpowiedzialny za encje (detektor, encje, relacje, ich cykl trwałości, a ten interfejs definiuje metody używane do interakcji z kontekstem utrwalania) powiązany z określoną trwałością kontekst, w którym podmioty są żywe, w międzyczasie TransactionManager odpowiada za dostęp do danych transakcyjnych, zapewniając wsparcie dla wszystkich transakcji, które muszą wystąpić w aplikacji.

Wiązanie konfiguracji jednego obiektu przysługujący praw do określonego menedżera transakcji.

<bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory" /> 
    <qualifier value="pagTransactionManager" /> 
</bean> 

<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory"> 
    <property name="persistenceUnitName" value="persistenceUnit" /> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="jpaDialect"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" /> 
    </property> 
</bean> 

Co to oznacza połączenie z bazą danych i podmioty są zarządzane przez EntityManager, ale obiekt, który otworzy bliskie transakcji w warstwie usług z wykorzystaniem adnotacji @Transaction jest TransactionManager. Interfejs

umożliwia serwerowi aplikacji kontrolowanie granic transakcji w imieniu zarządzanej aplikacji. Interfejs ten zawiera wiele metod służących do ich kontrolowania, takich jak: commit, suspend, rollback.

Więc w zasadzie wstrzyknąć jeden z tych obiektów zależy od tego, czego szukasz, zarządzać podmiotami i obsługiwać je przy pomocy uprawnienia menager, kontroluj stan transakcyjny aplikacji za pomocą menedżera transakcji.

Powiązane problemy