From 8bf4497879447a01cc800a64825a4c5e18b2e646 Mon Sep 17 00:00:00 2001 From: Sabiq Ihab Date: Sat, 29 Jul 2017 12:13:34 +0100 Subject: [PATCH] Close sessions using try with resources --- .../cqrs/commandes/CommandServiceImpl.java | 96 +++++++++---------- .../cqrs/queries/QueryServiceImpl.java | 63 ++++++------ 2 files changed, 82 insertions(+), 77 deletions(-) diff --git a/cqrs/src/main/java/com/iluwatar/cqrs/commandes/CommandServiceImpl.java b/cqrs/src/main/java/com/iluwatar/cqrs/commandes/CommandServiceImpl.java index 18a80dc16..3ee0d9d3e 100644 --- a/cqrs/src/main/java/com/iluwatar/cqrs/commandes/CommandServiceImpl.java +++ b/cqrs/src/main/java/com/iluwatar/cqrs/commandes/CommandServiceImpl.java @@ -9,7 +9,7 @@ import com.iluwatar.cqrs.domain.model.Book; import com.iluwatar.cqrs.util.HibernateUtil; /** - * This class is implementation of {@link ICommandService} interface. It uses Hibernate as an api for persistence. + * This class is an implementation of {@link ICommandService} interface. It uses Hibernate as an api for persistence. * */ public class CommandServiceImpl implements ICommandService { @@ -17,99 +17,99 @@ public class CommandServiceImpl implements ICommandService { private SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); private Author getAuthorByUsername(String username) { - Session session = sessionFactory.openSession(); - Query query = session.createQuery("from Author where username=:username"); - query.setParameter("username", username); - Author author = (Author) query.uniqueResult(); - session.close(); + Author author = null; + try (Session session = sessionFactory.openSession()) { + Query query = session.createQuery("from Author where username=:username"); + query.setParameter("username", username); + author = (Author) query.uniqueResult(); + } return author; } private Book getBookByTitle(String title) { - Session session = sessionFactory.openSession(); - Query query = session.createQuery("from Book where title=:title"); - query.setParameter("title", title); - Book book = (Book) query.uniqueResult(); - session.close(); + Book book = null; + try (Session session = sessionFactory.openSession()) { + Query query = session.createQuery("from Book where title=:title"); + query.setParameter("title", title); + book = (Book) query.uniqueResult(); + } return book; } @Override public void authorCreated(String username, String name, String email) { Author author = new Author(username, name, email); - Session session = sessionFactory.openSession(); - session.beginTransaction(); - session.save(author); - session.getTransaction().commit(); - session.close(); + try (Session session = sessionFactory.openSession()) { + session.beginTransaction(); + session.save(author); + session.getTransaction().commit(); + } } @Override public void bookAddedToAuthor(String title, double price, String username) { Author author = getAuthorByUsername(username); Book book = new Book(title, price, author); - Session session = sessionFactory.openSession(); - session.beginTransaction(); - session.save(book); - session.getTransaction().commit(); - session.close(); + try (Session session = sessionFactory.openSession()) { + session.beginTransaction(); + session.save(book); + session.getTransaction().commit(); + } } @Override public void authorNameUpdated(String username, String name) { Author author = getAuthorByUsername(username); author.setName(name); - Session session = sessionFactory.openSession(); - session.beginTransaction(); - session.update(author); - session.getTransaction().commit(); - session.close(); + try (Session session = sessionFactory.openSession()) { + session.beginTransaction(); + session.update(author); + session.getTransaction().commit(); + } } @Override public void authorUsernameUpdated(String oldUsername, String newUsername) { Author author = getAuthorByUsername(oldUsername); author.setUsername(newUsername); - Session session = sessionFactory.openSession(); - session.beginTransaction(); - session.update(author); - session.getTransaction().commit(); - session.close(); - + try (Session session = sessionFactory.openSession()) { + session.beginTransaction(); + session.update(author); + session.getTransaction().commit(); + } } @Override public void authorEmailUpdated(String username, String email) { Author author = getAuthorByUsername(username); author.setEmail(email); - Session session = sessionFactory.openSession(); - session.beginTransaction(); - session.update(author); - session.getTransaction().commit(); - session.close(); - + try (Session session = sessionFactory.openSession()) { + session.beginTransaction(); + session.update(author); + session.getTransaction().commit(); + } } @Override public void bookTitleUpdated(String oldTitle, String newTitle) { Book book = getBookByTitle(oldTitle); book.setTitle(newTitle); - Session session = sessionFactory.openSession(); - session.beginTransaction(); - session.update(book); - session.getTransaction().commit(); - session.close(); + try (Session session = sessionFactory.openSession()) { + session.beginTransaction(); + session.update(book); + session.getTransaction().commit(); + } } @Override public void bookPriceUpdated(String title, double price) { Book book = getBookByTitle(title); book.setPrice(price); - Session session = sessionFactory.openSession(); - session.beginTransaction(); - session.update(book); - session.getTransaction().commit(); - session.close(); + try (Session session = sessionFactory.openSession()) { + session.beginTransaction(); + session.update(book); + session.getTransaction().commit(); + } } } diff --git a/cqrs/src/main/java/com/iluwatar/cqrs/queries/QueryServiceImpl.java b/cqrs/src/main/java/com/iluwatar/cqrs/queries/QueryServiceImpl.java index 55a40c277..f3a616d59 100644 --- a/cqrs/src/main/java/com/iluwatar/cqrs/queries/QueryServiceImpl.java +++ b/cqrs/src/main/java/com/iluwatar/cqrs/queries/QueryServiceImpl.java @@ -23,55 +23,60 @@ public class QueryServiceImpl implements IQueryService { @Override public Author getAuthorByUsername(String username) { - Session session = sessionFactory.openSession(); - SQLQuery sqlQuery = session - .createSQLQuery("SELECT a.username as \"username\", a.name as \"name\", a.email as \"email\"" - + "FROM Author a where a.username=:username"); - sqlQuery.setParameter("username", username); - Author authorDTo = (Author) sqlQuery.setResultTransformer(Transformers.aliasToBean(Author.class)).uniqueResult(); - session.close(); + Author authorDTo = null; + try (Session session = sessionFactory.openSession()) { + SQLQuery sqlQuery = session + .createSQLQuery("SELECT a.username as \"username\", a.name as \"name\", a.email as \"email\"" + + "FROM Author a where a.username=:username"); + sqlQuery.setParameter("username", username); + authorDTo = (Author) sqlQuery.setResultTransformer(Transformers.aliasToBean(Author.class)).uniqueResult(); + } return authorDTo; } @Override public Book getBook(String title) { - Session session = sessionFactory.openSession(); - SQLQuery sqlQuery = session - .createSQLQuery("SELECT b.title as \"title\", b.price as \"price\"" + " FROM Book b where b.title=:title"); - sqlQuery.setParameter("title", title); - Book bookDTo = (Book) sqlQuery.setResultTransformer(Transformers.aliasToBean(Book.class)).uniqueResult(); - session.close(); + Book bookDTo = null; + try (Session session = sessionFactory.openSession()) { + SQLQuery sqlQuery = session + .createSQLQuery("SELECT b.title as \"title\", b.price as \"price\"" + " FROM Book b where b.title=:title"); + sqlQuery.setParameter("title", title); + bookDTo = (Book) sqlQuery.setResultTransformer(Transformers.aliasToBean(Book.class)).uniqueResult(); + } return bookDTo; } @Override public List getAuthorBooks(String username) { - Session session = sessionFactory.openSession(); - SQLQuery sqlQuery = session.createSQLQuery("SELECT b.title as \"title\", b.price as \"price\"" - + " FROM Author a , Book b where b.author_id = a.id and a.username=:username"); - sqlQuery.setParameter("username", username); - List bookDTos = sqlQuery.setResultTransformer(Transformers.aliasToBean(Book.class)).list(); - session.close(); + List bookDTos = null; + try (Session session = sessionFactory.openSession()) { + SQLQuery sqlQuery = session.createSQLQuery("SELECT b.title as \"title\", b.price as \"price\"" + + " FROM Author a , Book b where b.author_id = a.id and a.username=:username"); + sqlQuery.setParameter("username", username); + bookDTos = sqlQuery.setResultTransformer(Transformers.aliasToBean(Book.class)).list(); + } return bookDTos; } @Override public BigInteger getAuthorBooksCount(String username) { - Session session = sessionFactory.openSession(); - SQLQuery sqlQuery = session.createSQLQuery( - "SELECT count(b.title)" + " FROM Book b, Author a where b.author_id = a.id and a.username=:username"); - sqlQuery.setParameter("username", username); - BigInteger bookcount = (BigInteger) sqlQuery.uniqueResult(); - session.close(); + BigInteger bookcount = null; + try (Session session = sessionFactory.openSession()) { + SQLQuery sqlQuery = session.createSQLQuery( + "SELECT count(b.title)" + " FROM Book b, Author a where b.author_id = a.id and a.username=:username"); + sqlQuery.setParameter("username", username); + bookcount = (BigInteger) sqlQuery.uniqueResult(); + } return bookcount; } @Override public BigInteger getAuthorsCount() { - Session session = sessionFactory.openSession(); - SQLQuery sqlQuery = session.createSQLQuery("SELECT count(id) from Author"); - BigInteger authorcount = (BigInteger) sqlQuery.uniqueResult(); - session.close(); + BigInteger authorcount = null; + try (Session session = sessionFactory.openSession()) { + SQLQuery sqlQuery = session.createSQLQuery("SELECT count(id) from Author"); + authorcount = (BigInteger) sqlQuery.uniqueResult(); + } return authorcount; }