|
6 | 6 | import ru.javawebinar.basejava.sql.SqlHelper; |
7 | 7 |
|
8 | 8 | import java.sql.DriverManager; |
| 9 | +import java.sql.PreparedStatement; |
9 | 10 | import java.sql.ResultSet; |
10 | 11 | import java.util.ArrayList; |
11 | 12 | import java.util.List; |
@@ -61,20 +62,24 @@ public void update(Resume r) { |
61 | 62 |
|
62 | 63 | @Override |
63 | 64 | public void save(Resume r) { |
64 | | - sqlHelper.<Void>execute("INSERT INTO resume (uuid, full_name) VALUES (?,?)", ps -> { |
65 | | - ps.setString(1, r.getUuid()); |
66 | | - ps.setString(2, r.getFullName()); |
67 | | - ps.execute(); |
68 | | - return null; |
69 | | - }); |
70 | | - for (Map.Entry<ContactType, String> e : r.getContacts().entrySet()) { |
71 | | - sqlHelper.<Void>execute("INSERT INTO contact (resume_uuid, type, value) VALUES (?,?,?)", ps -> { |
72 | | - ps.setString(1, r.getUuid()); |
73 | | - ps.setString(2, e.getKey().name()); |
74 | | - ps.setString(3, e.getValue()); |
75 | | - return null; |
76 | | - }); |
77 | | - } |
| 65 | + sqlHelper.transactionalExecute(conn -> { |
| 66 | + try (PreparedStatement ps = conn.prepareStatement("INSERT INTO resume (uuid, full_name) VALUES (?,?)")) { |
| 67 | + ps.setString(1, r.getUuid()); |
| 68 | + ps.setString(2, r.getFullName()); |
| 69 | + ps.execute(); |
| 70 | + } |
| 71 | + try (PreparedStatement ps = conn.prepareStatement("INSERT INTO contact (resume_uuid, type, value) VALUES (?,?,?)")) { |
| 72 | + for (Map.Entry<ContactType, String> e : r.getContacts().entrySet()) { |
| 73 | + ps.setString(1, r.getUuid()); |
| 74 | + ps.setString(2, e.getKey().name()); |
| 75 | + ps.setString(3, e.getValue()); |
| 76 | + ps.addBatch(); |
| 77 | + } |
| 78 | + ps.executeBatch(); |
| 79 | + } |
| 80 | + return null; |
| 81 | + } |
| 82 | + ); |
78 | 83 | } |
79 | 84 |
|
80 | 85 | @Override |
|
0 commit comments