1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springframework.batch.sample.domain.trade.internal;
18
19 import java.util.List;
20
21 import org.hibernate.SessionFactory;
22 import org.springframework.batch.item.ItemWriter;
23 import org.springframework.batch.sample.domain.trade.CustomerCredit;
24 import org.springframework.batch.sample.domain.trade.CustomerCreditDao;
25 import org.springframework.beans.factory.InitializingBean;
26 import org.springframework.util.Assert;
27
28
29
30
31
32
33
34
35 public class HibernateAwareCustomerCreditItemWriter implements ItemWriter<CustomerCredit>, InitializingBean {
36
37 private CustomerCreditDao dao;
38
39 private SessionFactory sessionFactory;
40
41 public void write(List<? extends CustomerCredit> items) throws Exception {
42 for (CustomerCredit credit : items) {
43 dao.writeCredit(credit);
44 }
45 try {
46 sessionFactory.getCurrentSession().flush();
47 }
48 finally {
49
50
51 sessionFactory.getCurrentSession().clear();
52 }
53
54 }
55
56 public void setDao(CustomerCreditDao dao) {
57 this.dao = dao;
58 }
59
60 public void setSessionFactory(SessionFactory sessionFactory) {
61 this.sessionFactory = sessionFactory;
62 }
63
64 public void afterPropertiesSet() throws Exception {
65 Assert.state(sessionFactory != null, "Hibernate SessionFactory is required");
66 Assert.notNull(dao, "Delegate DAO must be set");
67 }
68
69 }