2014-11-20 6 views
5

Als Student lese ich fast alle Frühjahrsdokumentation. Soweit ich verstanden habe, ist das Frühjahr Konfigurationsmonster. Annotation basiert oder XML basiert, ist es egal, aber was ich wirklich nicht verstehe, ist der Unterschied zwischen Transaktionsmanager und Entitätsmanager.Was ist der Unterschied zwischen Transaktionsmanager und Entity Manager

Wenn wir EntityManager auf Dao-Layer injiziert haben, benötigen wir den Transaktionsmanager auf der Serviceebene oder umgekehrt. Wenn wir den Transaktionsmanager injizieren (der entitymanager umschließt), warum müssen wir den entitymanager auf DaoLayer injizieren. Für JPAR-Repositories muss ich nicht einmal einen Manager injizieren. Frühling macht alles für mich (ich verstehe Mechanik nicht wirklich). Meine andere Frage ist für JPARepositories Spring verwendet EntityManager oder transactionManager?

Antwort

6

TransactionManager ist völlig anders als EntityManager, einer ist verantwortlich für die Entitäten (Listener, Entitäten, Beziehungen, Persistenzlebenszyklus von ihnen und diese Schnittstelle definiert die Methoden, die zur Interaktion mit dem Persistenzkontext verwendet werden), die mit einer bestimmten Persistenz assoziiert sind Kontext, in dem die Entitäten am Leben sind, währenddessen TransactionManager für den transaktionalen Datenzugriff verantwortlich ist und Unterstützung für alle Transaktionen bietet, die innerhalb Ihrer Anwendung auftreten müssen.

Konfiguration binden Sie ein Entitymanager-Objekt an einen bestimmten Transaktionsmanager.

<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> 

der sie die Verbindung zur Datenbank bedeutet und Einrichtungen werden von der EntityManager verwaltet, aber das Objekt, das eine enge Transaktion in der Dienstschicht öffnen Sie die @Transaction Anmerkung unter Verwendung der Transaction.

Die Schnittstelle javax.transaction.TransactionManager ermöglicht es dem Anwendungsserver, Transaktionsgrenzen im Auftrag der verwalteten Anwendung zu steuern. Diese Schnittstelle enthält eine Vielzahl von Methoden, mit denen sie gesteuert werden: Commit, Suspend, Rollback.

Also im Grunde injizieren Sie eines dieser Objekte hängt davon ab, was Sie suchen, verwalten Sie Entitäten und mit ihnen arbeiten verwenden Entitymanager, steuern Sie den Transaktionszustand Ihrer Anwendung selbst verwenden Sie den Transaktionsmanager.

Verwandte Themen