Mercurial > dive4elements > river
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 |