diff --git a/service-layer/src/main/java/com/iluwatar/servicelayer/common/DaoBaseImpl.java b/service-layer/src/main/java/com/iluwatar/servicelayer/common/DaoBaseImpl.java index 8c3415881a9..46981c76ddc 100644 --- a/service-layer/src/main/java/com/iluwatar/servicelayer/common/DaoBaseImpl.java +++ b/service-layer/src/main/java/com/iluwatar/servicelayer/common/DaoBaseImpl.java @@ -27,10 +27,12 @@ import com.iluwatar.servicelayer.hibernate.HibernateUtil; import java.lang.reflect.ParameterizedType; import java.util.List; -import org.hibernate.Criteria; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Root; import org.hibernate.SessionFactory; import org.hibernate.Transaction; -import org.hibernate.criterion.Restrictions; +import org.hibernate.query.Query; /** * Base class for Dao implementations. @@ -57,9 +59,12 @@ public E find(Long id) { E result; try (var session = getSessionFactory().openSession()) { tx = session.beginTransaction(); - var criteria = session.createCriteria(persistentClass); - criteria.add(Restrictions.idEq(id)); - result = (E) criteria.uniqueResult(); + CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder(); + CriteriaQuery builderQuery = criteriaBuilder.createQuery(persistentClass); + Root root = builderQuery.from(persistentClass); + builderQuery.select(root).where(criteriaBuilder.equal(root.get("id"), id)); + Query query = session.createQuery(builderQuery); + result = query.uniqueResult(); tx.commit(); } catch (Exception e) { if (tx != null) { @@ -123,8 +128,12 @@ public List findAll() { List result; try (var session = getSessionFactory().openSession()) { tx = session.beginTransaction(); - Criteria criteria = session.createCriteria(persistentClass); - result = criteria.list(); + CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder(); + CriteriaQuery builderQuery = criteriaBuilder.createQuery(persistentClass); + Root root = builderQuery.from(persistentClass); + builderQuery.select(root); + Query query = session.createQuery(builderQuery); + result = query.getResultList(); } catch (Exception e) { if (tx != null) { tx.rollback(); diff --git a/service-layer/src/main/java/com/iluwatar/servicelayer/spell/SpellDaoImpl.java b/service-layer/src/main/java/com/iluwatar/servicelayer/spell/SpellDaoImpl.java index 53de9b6ec24..5ee39f4be73 100644 --- a/service-layer/src/main/java/com/iluwatar/servicelayer/spell/SpellDaoImpl.java +++ b/service-layer/src/main/java/com/iluwatar/servicelayer/spell/SpellDaoImpl.java @@ -25,8 +25,12 @@ package com.iluwatar.servicelayer.spell; import com.iluwatar.servicelayer.common.DaoBaseImpl; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Root; import org.hibernate.Transaction; -import org.hibernate.criterion.Restrictions; +import org.hibernate.query.Query; + /** * SpellDao implementation. @@ -39,9 +43,12 @@ public Spell findByName(String name) { Spell result; try (var session = getSessionFactory().openSession()) { tx = session.beginTransaction(); - var criteria = session.createCriteria(persistentClass); - criteria.add(Restrictions.eq("name", name)); - result = (Spell) criteria.uniqueResult(); + CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder(); + CriteriaQuery builderQuery = criteriaBuilder.createQuery(Spell.class); + Root root = builderQuery.from(Spell.class); + builderQuery.select(root).where(criteriaBuilder.equal(root.get("name"), name)); + Query query = session.createQuery(builderQuery); + result = query.uniqueResult(); tx.commit(); } catch (Exception e) { if (tx != null) { diff --git a/service-layer/src/main/java/com/iluwatar/servicelayer/spellbook/SpellbookDaoImpl.java b/service-layer/src/main/java/com/iluwatar/servicelayer/spellbook/SpellbookDaoImpl.java index d68f7253e8a..463b06cdd36 100644 --- a/service-layer/src/main/java/com/iluwatar/servicelayer/spellbook/SpellbookDaoImpl.java +++ b/service-layer/src/main/java/com/iluwatar/servicelayer/spellbook/SpellbookDaoImpl.java @@ -25,8 +25,12 @@ package com.iluwatar.servicelayer.spellbook; import com.iluwatar.servicelayer.common.DaoBaseImpl; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Root; import org.hibernate.Transaction; -import org.hibernate.criterion.Restrictions; +import org.hibernate.query.Query; + /** * SpellbookDao implementation. @@ -39,9 +43,12 @@ public Spellbook findByName(String name) { Spellbook result; try (var session = getSessionFactory().openSession()) { tx = session.beginTransaction(); - var criteria = session.createCriteria(persistentClass); - criteria.add(Restrictions.eq("name", name)); - result = (Spellbook) criteria.uniqueResult(); + CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder(); + CriteriaQuery builderQuery = criteriaBuilder.createQuery(Spellbook.class); + Root root = builderQuery.from(Spellbook.class); + builderQuery.select(root).where(criteriaBuilder.equal(root.get("name"), name)); + Query query = session.createQuery(builderQuery); + result = query.uniqueResult(); tx.commit(); } catch (Exception e) { if (tx != null) { diff --git a/service-layer/src/main/java/com/iluwatar/servicelayer/wizard/WizardDaoImpl.java b/service-layer/src/main/java/com/iluwatar/servicelayer/wizard/WizardDaoImpl.java index 043b96d5418..d35c9b0ca21 100644 --- a/service-layer/src/main/java/com/iluwatar/servicelayer/wizard/WizardDaoImpl.java +++ b/service-layer/src/main/java/com/iluwatar/servicelayer/wizard/WizardDaoImpl.java @@ -25,8 +25,11 @@ package com.iluwatar.servicelayer.wizard; import com.iluwatar.servicelayer.common.DaoBaseImpl; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Root; import org.hibernate.Transaction; -import org.hibernate.criterion.Restrictions; +import org.hibernate.query.Query; /** * WizardDao implementation. @@ -39,9 +42,12 @@ public Wizard findByName(String name) { Wizard result; try (var session = getSessionFactory().openSession()) { tx = session.beginTransaction(); - var criteria = session.createCriteria(persistentClass); - criteria.add(Restrictions.eq("name", name)); - result = (Wizard) criteria.uniqueResult(); + CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder(); + CriteriaQuery builderQuery = criteriaBuilder.createQuery(Wizard.class); + Root root = builderQuery.from(Wizard.class); + builderQuery.select(root).where(criteriaBuilder.equal(root.get("name"), name)); + Query query = session.createQuery(builderQuery); + result = query.uniqueResult(); tx.commit(); } catch (Exception e) { if (tx != null) { diff --git a/service-layer/src/test/java/com/iluwatar/servicelayer/magic/MagicServiceImplTest.java b/service-layer/src/test/java/com/iluwatar/servicelayer/magic/MagicServiceImplTest.java index 491fd24467a..c145f8e5f97 100644 --- a/service-layer/src/test/java/com/iluwatar/servicelayer/magic/MagicServiceImplTest.java +++ b/service-layer/src/test/java/com/iluwatar/servicelayer/magic/MagicServiceImplTest.java @@ -26,11 +26,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoInteractions; import static org.mockito.Mockito.verifyNoMoreInteractions; -import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; import com.iluwatar.servicelayer.spell.Spell; @@ -56,7 +55,7 @@ void testFindAllWizards() { final var spellDao = mock(SpellDao.class); final var service = new MagicServiceImpl(wizardDao, spellbookDao, spellDao); - verifyZeroInteractions(wizardDao, spellbookDao, spellDao); + verifyNoInteractions(wizardDao, spellbookDao, spellDao); service.findAllWizards(); verify(wizardDao).findAll(); @@ -70,7 +69,7 @@ void testFindAllSpellbooks() { final var spellDao = mock(SpellDao.class); final var service = new MagicServiceImpl(wizardDao, spellbookDao, spellDao); - verifyZeroInteractions(wizardDao, spellbookDao, spellDao); + verifyNoInteractions(wizardDao, spellbookDao, spellDao); service.findAllSpellbooks(); verify(spellbookDao).findAll(); @@ -84,7 +83,7 @@ void testFindAllSpells() { final var spellDao = mock(SpellDao.class); final var service = new MagicServiceImpl(wizardDao, spellbookDao, spellDao); - verifyZeroInteractions(wizardDao, spellbookDao, spellDao); + verifyNoInteractions(wizardDao, spellbookDao, spellDao); service.findAllSpells(); verify(spellDao).findAll(); @@ -103,17 +102,17 @@ void testFindWizardsWithSpellbook() { when(spellbook.getWizards()).thenReturn(wizards); final var spellbookDao = mock(SpellbookDao.class); - when(spellbookDao.findByName(eq(bookname))).thenReturn(spellbook); + when(spellbookDao.findByName(bookname)).thenReturn(spellbook); final var wizardDao = mock(WizardDao.class); final var spellDao = mock(SpellDao.class); final var service = new MagicServiceImpl(wizardDao, spellbookDao, spellDao); - verifyZeroInteractions(wizardDao, spellbookDao, spellDao, spellbook); + verifyNoInteractions(wizardDao, spellbookDao, spellDao, spellbook); final var result = service.findWizardsWithSpellbook(bookname); - verify(spellbookDao).findByName(eq(bookname)); + verify(spellbookDao).findByName(bookname); verify(spellbook).getWizards(); assertNotNull(result); @@ -140,13 +139,13 @@ void testFindWizardsWithSpell() throws Exception { final var spellName = "spellname"; final var spellDao = mock(SpellDao.class); - when(spellDao.findByName(eq(spellName))).thenReturn(spell); + when(spellDao.findByName(spellName)).thenReturn(spell); final var service = new MagicServiceImpl(wizardDao, spellbookDao, spellDao); - verifyZeroInteractions(wizardDao, spellbookDao, spellDao, spellbook); + verifyNoInteractions(wizardDao, spellbookDao, spellDao, spellbook); final var result = service.findWizardsWithSpell(spellName); - verify(spellDao).findByName(eq(spellName)); + verify(spellDao).findByName(spellName); verify(spellbook).getWizards(); assertNotNull(result);