From 885ec87e6fb0baf865cce3429c56aa26446efd7d Mon Sep 17 00:00:00 2001 From: Ilkka Seppala <iluwatar@gmail.com> Date: Mon, 13 Apr 2015 22:36:52 +0300 Subject: [PATCH] Moving towards Service Layer example. --- dao/src/main/java/com/iluwatar/App.java | 19 ++++++----------- dao/src/main/java/com/iluwatar/Dao.java | 16 ++++++++++++++ .../{DaoBase.java => DaoBaseImpl.java} | 17 +++++++++------ .../main/java/com/iluwatar/MagicService.java | 13 ++++++++++++ .../java/com/iluwatar/MagicServiceImpl.java | 21 +++++++++++++++++++ dao/src/main/java/com/iluwatar/Spell.java | 2 -- dao/src/main/java/com/iluwatar/SpellDao.java | 5 ----- .../main/java/com/iluwatar/SpellDaoImpl.java | 5 +++++ dao/src/main/java/com/iluwatar/Spellbook.java | 4 +--- .../main/java/com/iluwatar/SpellbookDao.java | 5 ----- .../java/com/iluwatar/SpellbookDaoImpl.java | 5 +++++ dao/src/main/java/com/iluwatar/Wizard.java | 4 +--- dao/src/main/java/com/iluwatar/WizardDao.java | 5 ----- .../main/java/com/iluwatar/WizardDaoImpl.java | 5 +++++ 14 files changed, 84 insertions(+), 42 deletions(-) create mode 100644 dao/src/main/java/com/iluwatar/Dao.java rename dao/src/main/java/com/iluwatar/{DaoBase.java => DaoBaseImpl.java} (91%) create mode 100644 dao/src/main/java/com/iluwatar/MagicService.java create mode 100644 dao/src/main/java/com/iluwatar/MagicServiceImpl.java delete mode 100644 dao/src/main/java/com/iluwatar/SpellDao.java create mode 100644 dao/src/main/java/com/iluwatar/SpellDaoImpl.java delete mode 100644 dao/src/main/java/com/iluwatar/SpellbookDao.java create mode 100644 dao/src/main/java/com/iluwatar/SpellbookDaoImpl.java delete mode 100644 dao/src/main/java/com/iluwatar/WizardDao.java create mode 100644 dao/src/main/java/com/iluwatar/WizardDaoImpl.java diff --git a/dao/src/main/java/com/iluwatar/App.java b/dao/src/main/java/com/iluwatar/App.java index 285b325ad..db4d417b2 100644 --- a/dao/src/main/java/com/iluwatar/App.java +++ b/dao/src/main/java/com/iluwatar/App.java @@ -1,16 +1,15 @@ package com.iluwatar; -import java.util.List; public class App { public static void main( String[] args ) { - WizardDao dao = new WizardDao(); + WizardDaoImpl dao = new WizardDaoImpl(); persistData(dao); - queryData(dao); + queryData(); } - public static void persistData(WizardDao dao) { + public static void persistData(WizardDaoImpl dao) { Spell spell = new Spell("Fireball"); Spellbook spellbook = new Spellbook("Book of fire"); spell.setSpellbook(spellbook); @@ -21,16 +20,10 @@ public class App { dao.persist(wizard); } - public static void queryData(WizardDao dao) { - List<Wizard> wizards = dao.findAll(); - for (Wizard w: wizards) { + public static void queryData() { + MagicService magicService = new MagicServiceImpl(); + for (Wizard w: magicService.findAllWizards()) { System.out.println(w); - for (Spellbook spellbook: w.getSpellbooks()) { - System.out.println(spellbook); - for (Spell spell: spellbook.getSpells()) { - System.out.println(spell); - } - } } } } diff --git a/dao/src/main/java/com/iluwatar/Dao.java b/dao/src/main/java/com/iluwatar/Dao.java new file mode 100644 index 000000000..a0edd386e --- /dev/null +++ b/dao/src/main/java/com/iluwatar/Dao.java @@ -0,0 +1,16 @@ +package com.iluwatar; + +import java.util.List; + +public interface Dao<E extends BaseEntity> { + + E find(Long id); + + void persist(E entity); + + E merge(E entity); + + void delete(E entity); + + List<E> findAll(); +} diff --git a/dao/src/main/java/com/iluwatar/DaoBase.java b/dao/src/main/java/com/iluwatar/DaoBaseImpl.java similarity index 91% rename from dao/src/main/java/com/iluwatar/DaoBase.java rename to dao/src/main/java/com/iluwatar/DaoBaseImpl.java index 86c09bbc3..a022f7038 100644 --- a/dao/src/main/java/com/iluwatar/DaoBase.java +++ b/dao/src/main/java/com/iluwatar/DaoBaseImpl.java @@ -10,7 +10,7 @@ import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.criterion.Restrictions; -public abstract class DaoBase<E extends BaseEntity> { +public abstract class DaoBaseImpl<E extends BaseEntity> implements Dao<E> { @SuppressWarnings("unchecked") protected Class<E> persistentClass = (Class<E>) ((ParameterizedType) getClass() @@ -36,7 +36,8 @@ public abstract class DaoBase<E extends BaseEntity> { return sessionFactory.openSession(); } - E find(Long id) { + @Override + public E find(Long id) { Session session = getSession(); Transaction tx = null; E result = null; @@ -57,7 +58,8 @@ public abstract class DaoBase<E extends BaseEntity> { return result; } - void persist(E entity) { + @Override + public void persist(E entity) { Session session = getSession(); Transaction tx = null; try { @@ -74,7 +76,8 @@ public abstract class DaoBase<E extends BaseEntity> { } } - E merge(E entity) { + @Override + public E merge(E entity) { Session session = getSession(); Transaction tx = null; E result = null; @@ -93,7 +96,8 @@ public abstract class DaoBase<E extends BaseEntity> { return result; } - void delete(E entity) { + @Override + public void delete(E entity) { Session session = getSession(); Transaction tx = null; try { @@ -110,7 +114,8 @@ public abstract class DaoBase<E extends BaseEntity> { } } - List<E> findAll() { + @Override + public List<E> findAll() { Session session = getSession(); Transaction tx = null; List<E> result = null; diff --git a/dao/src/main/java/com/iluwatar/MagicService.java b/dao/src/main/java/com/iluwatar/MagicService.java new file mode 100644 index 000000000..c02c23ecb --- /dev/null +++ b/dao/src/main/java/com/iluwatar/MagicService.java @@ -0,0 +1,13 @@ +package com.iluwatar; + +import java.util.List; + +public interface MagicService { + + List<Wizard> findAllWizards(); + + List<Spellbook> findAllSpellbooks(); + + List<Spell> findAllSpells(); + +} diff --git a/dao/src/main/java/com/iluwatar/MagicServiceImpl.java b/dao/src/main/java/com/iluwatar/MagicServiceImpl.java new file mode 100644 index 000000000..8fbd0d6e4 --- /dev/null +++ b/dao/src/main/java/com/iluwatar/MagicServiceImpl.java @@ -0,0 +1,21 @@ +package com.iluwatar; + +import java.util.List; + +public class MagicServiceImpl implements MagicService { + + @Override + public List<Wizard> findAllWizards() { + return new WizardDaoImpl().findAll(); + } + + @Override + public List<Spellbook> findAllSpellbooks() { + return new SpellbookDaoImpl().findAll(); + } + + @Override + public List<Spell> findAllSpells() { + return new SpellDaoImpl().findAll(); + } +} diff --git a/dao/src/main/java/com/iluwatar/Spell.java b/dao/src/main/java/com/iluwatar/Spell.java index 076575e85..04b9dcd8b 100644 --- a/dao/src/main/java/com/iluwatar/Spell.java +++ b/dao/src/main/java/com/iluwatar/Spell.java @@ -4,8 +4,6 @@ import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; diff --git a/dao/src/main/java/com/iluwatar/SpellDao.java b/dao/src/main/java/com/iluwatar/SpellDao.java deleted file mode 100644 index 1d96e231e..000000000 --- a/dao/src/main/java/com/iluwatar/SpellDao.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.iluwatar; - -public class SpellDao extends DaoBase<Spell> { - -} diff --git a/dao/src/main/java/com/iluwatar/SpellDaoImpl.java b/dao/src/main/java/com/iluwatar/SpellDaoImpl.java new file mode 100644 index 000000000..77e6872bd --- /dev/null +++ b/dao/src/main/java/com/iluwatar/SpellDaoImpl.java @@ -0,0 +1,5 @@ +package com.iluwatar; + +public class SpellDaoImpl extends DaoBaseImpl<Spell> { + +} diff --git a/dao/src/main/java/com/iluwatar/Spellbook.java b/dao/src/main/java/com/iluwatar/Spellbook.java index 63b7de0b7..fbd490e70 100644 --- a/dao/src/main/java/com/iluwatar/Spellbook.java +++ b/dao/src/main/java/com/iluwatar/Spellbook.java @@ -9,8 +9,6 @@ import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; @@ -48,7 +46,7 @@ public class Spellbook extends BaseEntity { @JoinColumn(name="WIZARD_ID_FK", referencedColumnName="WIZARD_ID") private Wizard wizard; - @OneToMany(mappedBy = "spellbook", orphanRemoval = true, fetch = FetchType.EAGER, cascade = CascadeType.ALL) + @OneToMany(mappedBy = "spellbook", orphanRemoval = true, fetch = FetchType.LAZY, cascade = CascadeType.ALL) private Set<Spell> spells; public String getName() { diff --git a/dao/src/main/java/com/iluwatar/SpellbookDao.java b/dao/src/main/java/com/iluwatar/SpellbookDao.java deleted file mode 100644 index b1b1497dc..000000000 --- a/dao/src/main/java/com/iluwatar/SpellbookDao.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.iluwatar; - -public class SpellbookDao extends DaoBase<Spellbook> { - -} diff --git a/dao/src/main/java/com/iluwatar/SpellbookDaoImpl.java b/dao/src/main/java/com/iluwatar/SpellbookDaoImpl.java new file mode 100644 index 000000000..e1c6fd6f6 --- /dev/null +++ b/dao/src/main/java/com/iluwatar/SpellbookDaoImpl.java @@ -0,0 +1,5 @@ +package com.iluwatar; + +public class SpellbookDaoImpl extends DaoBaseImpl<Spellbook> { + +} diff --git a/dao/src/main/java/com/iluwatar/Wizard.java b/dao/src/main/java/com/iluwatar/Wizard.java index c75f549c6..bd8481f15 100644 --- a/dao/src/main/java/com/iluwatar/Wizard.java +++ b/dao/src/main/java/com/iluwatar/Wizard.java @@ -9,8 +9,6 @@ import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; import javax.persistence.OneToMany; import javax.persistence.Table; @@ -42,7 +40,7 @@ public class Wizard extends BaseEntity { private String name; - @OneToMany(mappedBy = "wizard", orphanRemoval = true, fetch = FetchType.EAGER, cascade = CascadeType.ALL) + @OneToMany(mappedBy = "wizard", orphanRemoval = true, fetch = FetchType.LAZY, cascade = CascadeType.ALL) private Set<Spellbook> spellbooks; public String getFirstName() { diff --git a/dao/src/main/java/com/iluwatar/WizardDao.java b/dao/src/main/java/com/iluwatar/WizardDao.java deleted file mode 100644 index f9cf92768..000000000 --- a/dao/src/main/java/com/iluwatar/WizardDao.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.iluwatar; - -public class WizardDao extends DaoBase<Wizard> { - -} diff --git a/dao/src/main/java/com/iluwatar/WizardDaoImpl.java b/dao/src/main/java/com/iluwatar/WizardDaoImpl.java new file mode 100644 index 000000000..58d61216b --- /dev/null +++ b/dao/src/main/java/com/iluwatar/WizardDaoImpl.java @@ -0,0 +1,5 @@ +package com.iluwatar; + +public class WizardDaoImpl extends DaoBaseImpl<Wizard> { + +}