From e5c5b89755100c43991b2014c955c40a82a04088 Mon Sep 17 00:00:00 2001 From: PRITAM BANERJEE Date: Fri, 12 Aug 2016 00:06:19 -0700 Subject: [PATCH] Eager Loading vs Lazy Loading (#600) * BAEL-212 Contains: 1. Hibernate Criteria Query Classes 2. Hibernate Criteria Query Test * Updating the config file and the HibernateUtil class * Hibernate Criteria Queries Example * Hibernate Fetching : Eager Loading vs Lazy Loading * Hibernate Criteria Query files * Hibernate Eager Loading and Lazy Loading Changes --- .../fetching/util/HibernateUtil.java | 2 -- .../fetching/view/FetchingAppView.java | 2 -- .../src/main/resources/fetching.cfg.xml | 1 + .../src/main/resources/fetchingLazy.cfg.xml | 1 + .../criteria/HibernateCriteriaTestRunner.java | 15 ++++++++++++ .../criteria/HibernateCriteriaTestSuite.java | 11 +++++++++ .../fetching/HibernateFetchingTest.java | 24 +++++++++++++++++++ .../fetching/model/OrderDetail.hbm.xml | 0 .../hibernate/fetching/model/User.hbm.xml | 0 .../hibernate/fetching/model/UserLazy.hbm.xml | 0 .../src/test/resources/fetching.cfg.xml | 17 +++++++++++++ .../src/test/resources/fetchingLazy.cfg.xml | 17 +++++++++++++ 12 files changed, 86 insertions(+), 4 deletions(-) create mode 100644 spring-hibernate4/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestRunner.java create mode 100644 spring-hibernate4/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestSuite.java create mode 100644 spring-hibernate4/src/test/java/com/baeldung/hibernate/fetching/HibernateFetchingTest.java rename spring-hibernate4/src/{main/java => test/resources}/com/baeldung/hibernate/fetching/model/OrderDetail.hbm.xml (100%) rename spring-hibernate4/src/{main/java => test/resources}/com/baeldung/hibernate/fetching/model/User.hbm.xml (100%) rename spring-hibernate4/src/{main/java => test/resources}/com/baeldung/hibernate/fetching/model/UserLazy.hbm.xml (100%) create mode 100644 spring-hibernate4/src/test/resources/fetching.cfg.xml create mode 100644 spring-hibernate4/src/test/resources/fetchingLazy.cfg.xml diff --git a/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/util/HibernateUtil.java b/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/util/HibernateUtil.java index c6b095dde2..be877fcaba 100644 --- a/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/util/HibernateUtil.java +++ b/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/util/HibernateUtil.java @@ -16,7 +16,6 @@ public class HibernateUtil { if ("lazy".equals(fetchMethod)) { sf = new Configuration().configure("fetchingLazy.cfg.xml").buildSessionFactory(); } else { - sf = new Configuration().configure("fetching.cfg.xml").buildSessionFactory(); } // fetching.cfg.xml is used for this example @@ -25,7 +24,6 @@ public class HibernateUtil { } public static Session getHibernateSession() { - System.out.println("Loading eager"); SessionFactory sf = null; sf = new Configuration().configure("fetching.cfg.xml").buildSessionFactory(); final Session session = sf.openSession(); diff --git a/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/view/FetchingAppView.java b/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/view/FetchingAppView.java index 5e4ab32d03..729acde019 100644 --- a/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/view/FetchingAppView.java +++ b/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/view/FetchingAppView.java @@ -51,9 +51,7 @@ public class FetchingAppView { public void createTestData() { final Session session = HibernateUtil.getHibernateSession(); - Transaction tx = null; - tx = session.beginTransaction(); final User user1 = new User(); final User user2 = new User(); diff --git a/spring-hibernate4/src/main/resources/fetching.cfg.xml b/spring-hibernate4/src/main/resources/fetching.cfg.xml index 1595c829cd..4a7e574dda 100644 --- a/spring-hibernate4/src/main/resources/fetching.cfg.xml +++ b/spring-hibernate4/src/main/resources/fetching.cfg.xml @@ -10,6 +10,7 @@ root iamtheking org.hibernate.dialect.MySQLDialect + true diff --git a/spring-hibernate4/src/main/resources/fetchingLazy.cfg.xml b/spring-hibernate4/src/main/resources/fetchingLazy.cfg.xml index 4c64b4deb6..1f9a7df94e 100644 --- a/spring-hibernate4/src/main/resources/fetchingLazy.cfg.xml +++ b/spring-hibernate4/src/main/resources/fetchingLazy.cfg.xml @@ -10,6 +10,7 @@ root iamtheking org.hibernate.dialect.MySQLDialect + true diff --git a/spring-hibernate4/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestRunner.java b/spring-hibernate4/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestRunner.java new file mode 100644 index 0000000000..8341df9fcb --- /dev/null +++ b/spring-hibernate4/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestRunner.java @@ -0,0 +1,15 @@ +package com.baeldung.hibernate.criteria; + +import org.junit.runner.JUnitCore; +import org.junit.runner.Result; +import org.junit.runner.notification.Failure; + +public class HibernateCriteriaTestRunner { + + public static void main(final String[] args) { + Result result = JUnitCore.runClasses(HibernateCriteriaTestSuite.class); + for (Failure failure : result.getFailures()) { + + } + } +} diff --git a/spring-hibernate4/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestSuite.java b/spring-hibernate4/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestSuite.java new file mode 100644 index 0000000000..ab27a6ba82 --- /dev/null +++ b/spring-hibernate4/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestSuite.java @@ -0,0 +1,11 @@ +package com.baeldung.hibernate.criteria; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; + +@RunWith(Suite.class) +@Suite.SuiteClasses({ HibernateCriteriaTest.class }) + +public class HibernateCriteriaTestSuite { + +} diff --git a/spring-hibernate4/src/test/java/com/baeldung/hibernate/fetching/HibernateFetchingTest.java b/spring-hibernate4/src/test/java/com/baeldung/hibernate/fetching/HibernateFetchingTest.java new file mode 100644 index 0000000000..94ee8a3c79 --- /dev/null +++ b/spring-hibernate4/src/test/java/com/baeldung/hibernate/fetching/HibernateFetchingTest.java @@ -0,0 +1,24 @@ +package com.baeldung.hibernate.fetching; + +import static org.junit.Assert.*; + +import org.junit.Test; + +import com.baeldung.hibernate.fetching.view.FetchingAppView; + +public class HibernateFetchingTest { + + @Test + public void testLazyFetching() { + FetchingAppView fav = new FetchingAppView(); + fav.createTestData(); + assertFalse(fav.lazyLoaded()); + } + + @Test + public void testEagerFetching() { + FetchingAppView fav = new FetchingAppView(); + assertTrue(fav.eagerLoaded()); + } + +} diff --git a/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/OrderDetail.hbm.xml b/spring-hibernate4/src/test/resources/com/baeldung/hibernate/fetching/model/OrderDetail.hbm.xml similarity index 100% rename from spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/OrderDetail.hbm.xml rename to spring-hibernate4/src/test/resources/com/baeldung/hibernate/fetching/model/OrderDetail.hbm.xml diff --git a/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/User.hbm.xml b/spring-hibernate4/src/test/resources/com/baeldung/hibernate/fetching/model/User.hbm.xml similarity index 100% rename from spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/User.hbm.xml rename to spring-hibernate4/src/test/resources/com/baeldung/hibernate/fetching/model/User.hbm.xml diff --git a/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/UserLazy.hbm.xml b/spring-hibernate4/src/test/resources/com/baeldung/hibernate/fetching/model/UserLazy.hbm.xml similarity index 100% rename from spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/UserLazy.hbm.xml rename to spring-hibernate4/src/test/resources/com/baeldung/hibernate/fetching/model/UserLazy.hbm.xml diff --git a/spring-hibernate4/src/test/resources/fetching.cfg.xml b/spring-hibernate4/src/test/resources/fetching.cfg.xml new file mode 100644 index 0000000000..4a7e574dda --- /dev/null +++ b/spring-hibernate4/src/test/resources/fetching.cfg.xml @@ -0,0 +1,17 @@ + + + + + + com.mysql.jdbc.Driver + jdbc:mysql://localhost:3306/test + root + iamtheking + org.hibernate.dialect.MySQLDialect + true + + + + \ No newline at end of file diff --git a/spring-hibernate4/src/test/resources/fetchingLazy.cfg.xml b/spring-hibernate4/src/test/resources/fetchingLazy.cfg.xml new file mode 100644 index 0000000000..1f9a7df94e --- /dev/null +++ b/spring-hibernate4/src/test/resources/fetchingLazy.cfg.xml @@ -0,0 +1,17 @@ + + + + + + com.mysql.jdbc.Driver + jdbc:mysql://localhost:3306/test + root + iamtheking + org.hibernate.dialect.MySQLDialect + true + + + + \ No newline at end of file