comparison flys-backend/src/main/java/de/intevation/flys/importer/Importer.java @ 183:222f4db3430a

Importer: Used thread local pattern to make sharing of session easier. flys-backend/trunk@1494 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 17 Mar 2011 10:47:31 +0000
parents 1c0afb01bc93
children 003ac16812dd
comparison
equal deleted inserted replaced
182:1c0afb01bc93 183:222f4db3430a
18 18
19 public class Importer 19 public class Importer
20 { 20 {
21 private static Logger log = Logger.getLogger(Importer.class); 21 private static Logger log = Logger.getLogger(Importer.class);
22 22
23 public static final ThreadLocal<Session> sessionHolder =
24 new ThreadLocal<Session>();
25
23 protected List<ImportRiver> rivers; 26 protected List<ImportRiver> rivers;
24
25 protected Session session;
26 27
27 public Importer() { 28 public Importer() {
28 } 29 }
29 30
30 public Importer(List<ImportRiver> rivers) { 31 public Importer(List<ImportRiver> rivers) {
39 this.rivers = rivers; 40 this.rivers = rivers;
40 } 41 }
41 42
42 public void writeRivers() { 43 public void writeRivers() {
43 log.debug("write rivers started"); 44 log.debug("write rivers started");
45 Session session = sessionHolder.get();
46
44 Query query = session.createQuery("from River where name=:name"); 47 Query query = session.createQuery("from River where name=:name");
45 for (ImportRiver iriver: rivers) { 48 for (ImportRiver iriver: rivers) {
46 log.debug("writing river '" + iriver.getName() + "'"); 49 log.debug("writing river '" + iriver.getName() + "'");
47 query.setString("name", iriver.getName()); 50 query.setString("name", iriver.getName());
48 List<River> dbrivers = (List<River>)query.list(); 51 List<River> dbrivers = (List<River>)query.list();
56 59
57 public void writeToDatabase() { 60 public void writeToDatabase() {
58 SessionFactory sessionFactory = 61 SessionFactory sessionFactory =
59 SessionFactoryProvider.createSessionFactory(); 62 SessionFactoryProvider.createSessionFactory();
60 63
61 session = sessionFactory.openSession(); 64 Session session = sessionFactory.openSession();
65
66 sessionHolder.set(session);
67
62 Transaction tx = null; 68 Transaction tx = null;
63 69
64 try { 70 try {
65 tx = session.beginTransaction(); 71 tx = session.beginTransaction();
66 72
73 tx.rollback(); 79 tx.rollback();
74 } 80 }
75 throw re; 81 throw re;
76 } 82 }
77 finally { 83 finally {
78 if (session != null) { 84 session.close();
79 session.close(); 85 sessionHolder.remove();
80 session = null;
81 }
82 } 86 }
83 } 87 }
84 88
85 public static void main(String [] args) { 89 public static void main(String [] args) {
86 90

http://dive4elements.wald.intevation.org