Skip to content

Commit 8bf4497

Browse files
committed
Close sessions using try with resources
1 parent 8073b93 commit 8bf4497

File tree

2 files changed

+82
-77
lines changed

2 files changed

+82
-77
lines changed

cqrs/src/main/java/com/iluwatar/cqrs/commandes/CommandServiceImpl.java

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -9,107 +9,107 @@
99
import com.iluwatar.cqrs.util.HibernateUtil;
1010

1111
/**
12-
* This class is implementation of {@link ICommandService} interface. It uses Hibernate as an api for persistence.
12+
* This class is an implementation of {@link ICommandService} interface. It uses Hibernate as an api for persistence.
1313
*
1414
*/
1515
public class CommandServiceImpl implements ICommandService {
1616

1717
private SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
1818

1919
private Author getAuthorByUsername(String username) {
20-
Session session = sessionFactory.openSession();
21-
Query query = session.createQuery("from Author where username=:username");
22-
query.setParameter("username", username);
23-
Author author = (Author) query.uniqueResult();
24-
session.close();
20+
Author author = null;
21+
try (Session session = sessionFactory.openSession()) {
22+
Query query = session.createQuery("from Author where username=:username");
23+
query.setParameter("username", username);
24+
author = (Author) query.uniqueResult();
25+
}
2526
return author;
2627
}
2728

2829
private Book getBookByTitle(String title) {
29-
Session session = sessionFactory.openSession();
30-
Query query = session.createQuery("from Book where title=:title");
31-
query.setParameter("title", title);
32-
Book book = (Book) query.uniqueResult();
33-
session.close();
30+
Book book = null;
31+
try (Session session = sessionFactory.openSession()) {
32+
Query query = session.createQuery("from Book where title=:title");
33+
query.setParameter("title", title);
34+
book = (Book) query.uniqueResult();
35+
}
3436
return book;
3537
}
3638

3739
@Override
3840
public void authorCreated(String username, String name, String email) {
3941
Author author = new Author(username, name, email);
40-
Session session = sessionFactory.openSession();
41-
session.beginTransaction();
42-
session.save(author);
43-
session.getTransaction().commit();
44-
session.close();
42+
try (Session session = sessionFactory.openSession()) {
43+
session.beginTransaction();
44+
session.save(author);
45+
session.getTransaction().commit();
46+
}
4547
}
4648

4749
@Override
4850
public void bookAddedToAuthor(String title, double price, String username) {
4951
Author author = getAuthorByUsername(username);
5052
Book book = new Book(title, price, author);
51-
Session session = sessionFactory.openSession();
52-
session.beginTransaction();
53-
session.save(book);
54-
session.getTransaction().commit();
55-
session.close();
53+
try (Session session = sessionFactory.openSession()) {
54+
session.beginTransaction();
55+
session.save(book);
56+
session.getTransaction().commit();
57+
}
5658
}
5759

5860
@Override
5961
public void authorNameUpdated(String username, String name) {
6062
Author author = getAuthorByUsername(username);
6163
author.setName(name);
62-
Session session = sessionFactory.openSession();
63-
session.beginTransaction();
64-
session.update(author);
65-
session.getTransaction().commit();
66-
session.close();
64+
try (Session session = sessionFactory.openSession()) {
65+
session.beginTransaction();
66+
session.update(author);
67+
session.getTransaction().commit();
68+
}
6769
}
6870

6971
@Override
7072
public void authorUsernameUpdated(String oldUsername, String newUsername) {
7173
Author author = getAuthorByUsername(oldUsername);
7274
author.setUsername(newUsername);
73-
Session session = sessionFactory.openSession();
74-
session.beginTransaction();
75-
session.update(author);
76-
session.getTransaction().commit();
77-
session.close();
78-
75+
try (Session session = sessionFactory.openSession()) {
76+
session.beginTransaction();
77+
session.update(author);
78+
session.getTransaction().commit();
79+
}
7980
}
8081

8182
@Override
8283
public void authorEmailUpdated(String username, String email) {
8384
Author author = getAuthorByUsername(username);
8485
author.setEmail(email);
85-
Session session = sessionFactory.openSession();
86-
session.beginTransaction();
87-
session.update(author);
88-
session.getTransaction().commit();
89-
session.close();
90-
86+
try (Session session = sessionFactory.openSession()) {
87+
session.beginTransaction();
88+
session.update(author);
89+
session.getTransaction().commit();
90+
}
9191
}
9292

9393
@Override
9494
public void bookTitleUpdated(String oldTitle, String newTitle) {
9595
Book book = getBookByTitle(oldTitle);
9696
book.setTitle(newTitle);
97-
Session session = sessionFactory.openSession();
98-
session.beginTransaction();
99-
session.update(book);
100-
session.getTransaction().commit();
101-
session.close();
97+
try (Session session = sessionFactory.openSession()) {
98+
session.beginTransaction();
99+
session.update(book);
100+
session.getTransaction().commit();
101+
}
102102
}
103103

104104
@Override
105105
public void bookPriceUpdated(String title, double price) {
106106
Book book = getBookByTitle(title);
107107
book.setPrice(price);
108-
Session session = sessionFactory.openSession();
109-
session.beginTransaction();
110-
session.update(book);
111-
session.getTransaction().commit();
112-
session.close();
108+
try (Session session = sessionFactory.openSession()) {
109+
session.beginTransaction();
110+
session.update(book);
111+
session.getTransaction().commit();
112+
}
113113
}
114114

115115
}

cqrs/src/main/java/com/iluwatar/cqrs/queries/QueryServiceImpl.java

Lines changed: 34 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -23,55 +23,60 @@ public class QueryServiceImpl implements IQueryService {
2323

2424
@Override
2525
public Author getAuthorByUsername(String username) {
26-
Session session = sessionFactory.openSession();
27-
SQLQuery sqlQuery = session
28-
.createSQLQuery("SELECT a.username as \"username\", a.name as \"name\", a.email as \"email\""
29-
+ "FROM Author a where a.username=:username");
30-
sqlQuery.setParameter("username", username);
31-
Author authorDTo = (Author) sqlQuery.setResultTransformer(Transformers.aliasToBean(Author.class)).uniqueResult();
32-
session.close();
26+
Author authorDTo = null;
27+
try (Session session = sessionFactory.openSession()) {
28+
SQLQuery sqlQuery = session
29+
.createSQLQuery("SELECT a.username as \"username\", a.name as \"name\", a.email as \"email\""
30+
+ "FROM Author a where a.username=:username");
31+
sqlQuery.setParameter("username", username);
32+
authorDTo = (Author) sqlQuery.setResultTransformer(Transformers.aliasToBean(Author.class)).uniqueResult();
33+
}
3334
return authorDTo;
3435
}
3536

3637
@Override
3738
public Book getBook(String title) {
38-
Session session = sessionFactory.openSession();
39-
SQLQuery sqlQuery = session
40-
.createSQLQuery("SELECT b.title as \"title\", b.price as \"price\"" + " FROM Book b where b.title=:title");
41-
sqlQuery.setParameter("title", title);
42-
Book bookDTo = (Book) sqlQuery.setResultTransformer(Transformers.aliasToBean(Book.class)).uniqueResult();
43-
session.close();
39+
Book bookDTo = null;
40+
try (Session session = sessionFactory.openSession()) {
41+
SQLQuery sqlQuery = session
42+
.createSQLQuery("SELECT b.title as \"title\", b.price as \"price\"" + " FROM Book b where b.title=:title");
43+
sqlQuery.setParameter("title", title);
44+
bookDTo = (Book) sqlQuery.setResultTransformer(Transformers.aliasToBean(Book.class)).uniqueResult();
45+
}
4446
return bookDTo;
4547
}
4648

4749
@Override
4850
public List<Book> getAuthorBooks(String username) {
49-
Session session = sessionFactory.openSession();
50-
SQLQuery sqlQuery = session.createSQLQuery("SELECT b.title as \"title\", b.price as \"price\""
51-
+ " FROM Author a , Book b where b.author_id = a.id and a.username=:username");
52-
sqlQuery.setParameter("username", username);
53-
List<Book> bookDTos = sqlQuery.setResultTransformer(Transformers.aliasToBean(Book.class)).list();
54-
session.close();
51+
List<Book> bookDTos = null;
52+
try (Session session = sessionFactory.openSession()) {
53+
SQLQuery sqlQuery = session.createSQLQuery("SELECT b.title as \"title\", b.price as \"price\""
54+
+ " FROM Author a , Book b where b.author_id = a.id and a.username=:username");
55+
sqlQuery.setParameter("username", username);
56+
bookDTos = sqlQuery.setResultTransformer(Transformers.aliasToBean(Book.class)).list();
57+
}
5558
return bookDTos;
5659
}
5760

5861
@Override
5962
public BigInteger getAuthorBooksCount(String username) {
60-
Session session = sessionFactory.openSession();
61-
SQLQuery sqlQuery = session.createSQLQuery(
62-
"SELECT count(b.title)" + " FROM Book b, Author a where b.author_id = a.id and a.username=:username");
63-
sqlQuery.setParameter("username", username);
64-
BigInteger bookcount = (BigInteger) sqlQuery.uniqueResult();
65-
session.close();
63+
BigInteger bookcount = null;
64+
try (Session session = sessionFactory.openSession()) {
65+
SQLQuery sqlQuery = session.createSQLQuery(
66+
"SELECT count(b.title)" + " FROM Book b, Author a where b.author_id = a.id and a.username=:username");
67+
sqlQuery.setParameter("username", username);
68+
bookcount = (BigInteger) sqlQuery.uniqueResult();
69+
}
6670
return bookcount;
6771
}
6872

6973
@Override
7074
public BigInteger getAuthorsCount() {
71-
Session session = sessionFactory.openSession();
72-
SQLQuery sqlQuery = session.createSQLQuery("SELECT count(id) from Author");
73-
BigInteger authorcount = (BigInteger) sqlQuery.uniqueResult();
74-
session.close();
75+
BigInteger authorcount = null;
76+
try (Session session = sessionFactory.openSession()) {
77+
SQLQuery sqlQuery = session.createSQLQuery("SELECT count(id) from Author");
78+
authorcount = (BigInteger) sqlQuery.uniqueResult();
79+
}
7580
return authorcount;
7681
}
7782

0 commit comments

Comments
 (0)