Lightweightコンテナ・アーキテクチャーへの招待
import javax.persistence.*; ... @Entity public class Customer { private Integer id; private String name; Set<Order> orders = new HashSet<Order>(); @Id(generate=GeneratorType.AUTO) public Integer getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @OneToMany(mappedBy="customer", cascade=CascadeType.ALL, fetch=FetchType.EAGER) public Set<Order> getOrders() { return orders; } public void setOrders(Set<Order> orders) { this.orders = orders; }
public class AppServiceImpl implements AppService { CustomerDao customerDao = new CustomerDaoImpl(); ....
public class AppServiceImpl implements AppService { CustomerDao customerDao = AdHocFactory.getCustomerDao(); ....
public class AppServiceImpl implements AppService { CustomerDao customerDao; .... public void setCustomerDao(CustomerDao customerDao) { this.customerDao = customerDao; }
DataSource dataSource = .....; SessionFactory sessionFactory = .... // dataSourceを使用; CustomerDaoImpl customerDao = new CustomerDaoImpl(); customerDao.setSessionFactory(sessionFactory); OrderDaoImpl orderDao = new OrderDaoImpl(); orderDao.setSessionFactory(sessionFactory); AppServiceImpl appServiceTarget = new AppServiceImpl(); appServiceTarget.setCustomerDao(customerDao); appServiceTarget.setOrderDao(orderDao);
<beans> <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="org.hsqldb.jdbcDriver"/> ... </bean> <bean id="mySessionFactory" class=".....AnnotationSessionFactoryBean"> .... <property name="dataSource" ref="myDataSource"/> .... </bean> <bean id="myAbstractDao" abstract="true"> <property name="sessionFactory" ref="mySessionFactory"/> </bean> <bean id="myCustomerDao" class="com.example.CustomerDaoImpl" parent="myAbstractDao"/> <bean id="myOrderDao" class="com.example.OrderDaoImpl" parent="myAbstractDao"/> <bean id="myAppServiceTarget" class="com.example.AppServiceImpl"> <property name="customerDao" ref="myCustomerDao"/> <property name="orderDao" ref="myOrderDao"/> </bean>
<beans> <bean id="myTxManager" class="org.springframework.orm.hibernate3. HibernateTransactionManager"> <property name="sessionFactory" ref="mySessionFactory"/> </bean> <bean id="myAppService" class="org.springframework.transaction.interceptor. TransactionProxyFactoryBean"> <property name="transactionManager" ref="myTxManager"/> <property name="target" ref="myAppServiceTarget"/> <property name="transactionAttributes"> <props> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> </bean>
ApplicationContext context = ... AppService appService = (AppService) context.getBean("myAppService"); // call business logic ....
このページで紹介されている情報はレベル別にカテゴライズされています。