Spring DE JPA + JUNIT
Eclipse¤ÈSpring¤ò»ÈÍѤ·¤ÆJunit¤ÇÁ°¤ËºîÀ®¤·¤¿GAO¡ÊGenerciDao) with NamedQuery¤Î¥Æ¥¹¥È¤ò¤¹¤ë
Spring¤Ï2.5¡¢JUnit¤Ï4.4¤ò»ÈÍѤ¹¤ë¡£
Spring¤ò¥À¥¦¥ó¥í¡¼¥É¤¹¤ì¤Ï¡¢JUnit¤ÏÉÕ°¤·¤Æ¤¤¤ë¤Ï¤º¤Ê¤Î¤Ç¡¢¤½¤ì¤ò»ÈÍѤ¹¤ë¡£
¤â¤Ã¤È¤âɬÍפʤΤÏSpring¤ËÉÕ°¤¹¤ëspring-test.jar¤Ç¤¹¡£
¤Þ¤º¡¢persistence.xml¤ò°Ê²¼¤ÎÍͤ˽¤Àµ¤·¤Þ¤¹¡£
<?xml
version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit
name="sample.test.jpa" transaction-type="RESOURCE_LOCAL">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<non-jta-data-source>dataSource</non-jta-data-source>
<mapping-file>META-INF/orm.xml</mapping-file>
<class>¼«Ê¬¤Î¥¨¥ó¥Æ¥£¥Æ¥£</class>
¡§
</persistence-unit>
</persistence>
¼¡¤ËSpring¤ÎÀßÄê¥Õ¥¡¥¤¥ë(applicationTextContext.xml)¤ò¥½¡¼¥¹¥Õ¥©¥ë¥À¤ËºîÀ®
ÆâÍÆ¤Ï°Ê²¼¤ÎÍÍ¡ÊOpenJPA, Oracle¤Ç¤¹¡Ë
<?xml
version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
>
<property name="driverClassName" value="¥É¥é¥¤¥Ð¡¼"/>
<property name="url" value="ÀܳÍÑURL"/>
<property name="username" value="¥æ¡¼¥¶¡¼Ì¾"/>
<property name="password" value="¥Ñ¥¹¥ï¡¼¥É"/>
</bean>
<bean
id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="sample.test.jpa"
/>
<property name="dataSource"
ref="dataSource"/>
<property
name="jpaVendorAdapter">
<bean
class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter"/>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"
/>
</bean>
<bean
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"
/>
<bean
class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"
/>
<bean
id="entityManager"
class="org.springframework.orm.jpa.support.SharedEntityManagerBean">
<property name="entityManagerFactory"
ref="entityManagerFactory"/>
</bean>
<bean id="userinfoDao"
class="dao.jpa.namedquery.NamedQueriesFactory"
factory-method="getQueryProxy">
<constructor-arg ref="entityManager">
</constructor-arg>
<constructor-arg>
<value>dao.UserinfoDao</value>
</constructor-arg>
</bean>
<bean id="departmentDao"
class="dao.jpa.namedquery.NamedQueriesFactory"
factory-method="getQueryProxy">
<constructor-arg ref="entityManager">
</constructor-arg>
<constructor-arg>
<value>dao.DepartmentDao</value>
</constructor-arg>
</bean>
<tx:annotation-driven
/>
</beans>
¤ÇJunitÍѤΥƥ¹¥È¥¯¥é¥¹¤Ï
¡§
@Repository
public class UserinfoDaoTest extends AbstractJpaTests {
private UserinfoDao
userinfoDao;
private DepartmentDao
departmentDao;
public void
setUserinfoDao(UserinfoDao userinfoDao) {
this.userinfoDao = userinfoDao;
}
public void
setDepartmentDao(DepartmentDao
departmentDao) {
this.departmentDao = departmentDao;
}
@Override
protected String
getConfigPath() {
return
"applicationTestContext¤Ø¤Î¥Ñ¥¹/applicationTestContext.xml";
}
@PersistenceContext
private EntityManager
entityManager;
public void testUserinfoDao()
throws Exception {
List<Userinfo> userinfos =
userinfoDao.selectByName("mama");
for(Userinfo ui : userinfos){
//userinfoDao.lock(ui,LockModeType.READ);
assertTrue(entityManager.contains(ui));
System.out.println(ui.getName());
for(Department dm : ui.getDepartments()){
System.out.println(dm.getName());
}
}
assertTrue(true);
}
¡§
¡Ñ