Java 持久化/Spring
外觀
< Java 持久化
Spring 是一個用於 Java 的應用程式框架。Spring 是一個 IoC 容器,它允許使用不同的程式設計模型。Spring 類似於 JEE 伺服器,因為它提供事務服務、XML 部署、註釋處理、位元組碼編織和 JPA 整合。
Spring 中的持久化通常透過 DAO(資料訪問物件)層完成。Spring DAO 層旨在封裝持久化機制,因此無論使用 JDBC、JPA 還是原生 API,都會提供相同的應用程式資料訪問 API。
Spring 還定義了一個類似於 JTA 的事務管理器實現。Spring 還支援類似於 SessionBeans 的事務性註解和 Bean。
Spring 對 JPA 有專門的支援,並且可以模擬 JEE 容器在 JPA 方面的一些功能。Spring 允許以容器管理模式部署 JPA 持久化單元。如果使用 spring-agent 啟動 JVM,Spring 可以使用類似於 JEE 伺服器的編織部署 JPA 持久化單元。Spring 還可以傳遞 Spring DataSource 並將它的事務服務與 JPA 整合。Spring 允許在任何 Spring bean 類中使用 @PersistenceUnit 和 @PersistenceContext 註解,以便注入 EntityManager 或 EntityManagerFactory。Spring 支援類似於 JEE 的受管理事務性 EntityManager,其中 EntityManager 將自身繫結為新的持久化上下文到每個新的事務,並在事務中提交。Spring 支援 JTA 整合和它自己的事務管理器。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="acme" />
<property name="persistenceUnitManager" ref="persistenceUnitManager" />
</bean>
<bean id="persistenceUnitManager" class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager">
<property name="defaultDataSource" ref="dataSource" />
<property name="dataSources">
<map>
<entry>
<key>
<value>jdbc/__default</value>
</key>
<ref bean="dataSource" />
</entry>
<entry>
<key>
<value>jdbc/jta</value>
</key>
<ref bean="dataSource" />
</entry>
</map>
</property>
<property name="loadTimeWeaver">
<bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
</property>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
<property name="username" value="scott" />
<property name="password" value="tiger" />
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="entityManager" class="org.springframework.orm.jpa.support.SharedEntityManagerBean">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<bean id="AcmeDao" class="org.acme.dao.AcmeDao">
<property name="entityManager" ref="entityManager" />
</bean>
</beans>