From 6d2983d6817b7f021de9a8d592114bf58416ff15 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Fri, 27 Jun 2008 12:39:27 +0000 Subject: [PATCH] Introduce Hibernate lazy loading git-svn-id: https://svn.argeo.org/slc/trunk@1294 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- ...e.java => TreeTestResultDaoHibernate.java} | 2 +- .../org.apache.tools.ant.ProjectHelper | 1 - .../hibernate/spring/applicationContext.xml | 2 +- .../hibernate/test/tree/PartSubList.hbm.xml | 28 ++++---- .../test/tree/TreeTestResult.hbm.xml | 55 ++++++++-------- .../tree/TreeTestResultDaoHibernateTest.java | 66 +++++++++++++++---- 6 files changed, 96 insertions(+), 58 deletions(-) rename org.argeo.slc.hibernate/src/main/java/org/argeo/slc/hibernate/test/tree/{TestResultDaoHibernate.java => TreeTestResultDaoHibernate.java} (92%) delete mode 100644 org.argeo.slc.hibernate/src/main/resources/META-INF/services/org.apache.tools.ant.ProjectHelper diff --git a/org.argeo.slc.hibernate/src/main/java/org/argeo/slc/hibernate/test/tree/TestResultDaoHibernate.java b/org.argeo.slc.hibernate/src/main/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernate.java similarity index 92% rename from org.argeo.slc.hibernate/src/main/java/org/argeo/slc/hibernate/test/tree/TestResultDaoHibernate.java rename to org.argeo.slc.hibernate/src/main/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernate.java index c18d2be8a..17c7d856d 100644 --- a/org.argeo.slc.hibernate/src/main/java/org/argeo/slc/hibernate/test/tree/TestResultDaoHibernate.java +++ b/org.argeo.slc.hibernate/src/main/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernate.java @@ -15,7 +15,7 @@ import org.springframework.orm.hibernate3.support.HibernateDaoSupport; * * @see TreeTestResult */ -public class TestResultDaoHibernate extends HibernateDaoSupport implements +public class TreeTestResultDaoHibernate extends HibernateDaoSupport implements TreeTestResultDao { public void create(TestResult testResult) { diff --git a/org.argeo.slc.hibernate/src/main/resources/META-INF/services/org.apache.tools.ant.ProjectHelper b/org.argeo.slc.hibernate/src/main/resources/META-INF/services/org.apache.tools.ant.ProjectHelper deleted file mode 100644 index 1c222d5e1..000000000 --- a/org.argeo.slc.hibernate/src/main/resources/META-INF/services/org.apache.tools.ant.ProjectHelper +++ /dev/null @@ -1 +0,0 @@ -org.argeo.slc.ant.SlcProjectHelper \ No newline at end of file diff --git a/org.argeo.slc.hibernate/src/main/resources/org/argeo/slc/hibernate/spring/applicationContext.xml b/org.argeo.slc.hibernate/src/main/resources/org/argeo/slc/hibernate/spring/applicationContext.xml index e18b8a2bc..fe975fb7c 100644 --- a/org.argeo.slc.hibernate/src/main/resources/org/argeo/slc/hibernate/spring/applicationContext.xml +++ b/org.argeo.slc.hibernate/src/main/resources/org/argeo/slc/hibernate/spring/applicationContext.xml @@ -58,7 +58,7 @@ diff --git a/org.argeo.slc.hibernate/src/main/resources/org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml b/org.argeo.slc.hibernate/src/main/resources/org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml index f86de7312..74a02aa61 100644 --- a/org.argeo.slc.hibernate/src/main/resources/org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml +++ b/org.argeo.slc.hibernate/src/main/resources/org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml @@ -1,4 +1,4 @@ - + @@ -7,19 +7,19 @@ - + - - - - - - - - + + + + + + + + \ No newline at end of file diff --git a/org.argeo.slc.hibernate/src/main/resources/org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml b/org.argeo.slc.hibernate/src/main/resources/org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml index 37db79a6d..efc6eb85a 100644 --- a/org.argeo.slc.hibernate/src/main/resources/org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml +++ b/org.argeo.slc.hibernate/src/main/resources/org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml @@ -1,34 +1,35 @@ - + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/org.argeo.slc.hibernate/src/test/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernateTest.java b/org.argeo.slc.hibernate/src/test/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernateTest.java index 6737cb6c5..7896b01fa 100644 --- a/org.argeo.slc.hibernate/src/test/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernateTest.java +++ b/org.argeo.slc.hibernate/src/test/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernateTest.java @@ -1,5 +1,7 @@ package org.argeo.slc.hibernate.test.tree; +import java.sql.SQLException; + import org.argeo.slc.core.structure.SimpleSElement; import org.argeo.slc.core.structure.tree.TreeSPath; import org.argeo.slc.core.structure.tree.TreeSRegistry; @@ -10,14 +12,22 @@ import org.argeo.slc.dao.test.tree.TreeTestResultDao; import org.argeo.slc.unit.AbstractSpringTestCase; import org.argeo.slc.unit.test.tree.TreeTestResultTestUtils; import org.argeo.slc.unit.test.tree.UnitTestTreeUtil; +import org.hibernate.HibernateException; +import org.hibernate.LockMode; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.Transaction; +import org.springframework.orm.hibernate3.HibernateCallback; +import org.springframework.orm.hibernate3.HibernateTemplate; public class TreeTestResultDaoHibernateTest extends AbstractSpringTestCase { private TreeTestResultDao testResultDao = null; + private HibernateTemplate template = null; @Override public void setUp() { - testResultDao = (TreeTestResultDao) getContext().getBean( - "testResultDao"); + testResultDao = getBean(TreeTestResultDao.class); + template = new HibernateTemplate(getBean(SessionFactory.class)); } public void testCreate() { @@ -29,7 +39,7 @@ public class TreeTestResultDaoHibernateTest extends AbstractSpringTestCase { TreeTestResult ttrPersisted = (TreeTestResult) testResultDao .getTestResult(ttr.getUuid()); - UnitTestTreeUtil.assertTreeTestResult(ttr, ttrPersisted); + assertInHibernate(ttr, ttrPersisted); } public void testUpdate() { @@ -37,7 +47,7 @@ public class TreeTestResultDaoHibernateTest extends AbstractSpringTestCase { .createCompleteTreeTestResult(); testResultDao.create(ttr); - TreeTestResult ttrUpdated = (TreeTestResult) testResultDao + final TreeTestResult ttrUpdated = (TreeTestResult) testResultDao .getTestResult(ttr.getUuid()); // Modifying ttrUpdated @@ -49,21 +59,29 @@ public class TreeTestResultDaoHibernateTest extends AbstractSpringTestCase { */ String pathStr = "/test"; - TreeSPath path = TreeSPath.parseToCreatePath(pathStr); + final TreeSPath path = new TreeSPath(pathStr); - TreeSRegistry registry = new TreeSRegistry(); + final TreeSRegistry registry = new TreeSRegistry(); SimpleSElement elem = new SimpleSElement("Unit Test"); elem.getTags().put("myTag", "myTagValue"); registry.register(path, elem); - ttrUpdated.notifyCurrentPath(registry, path); + template.execute(new HibernateCallback() { + + public Object doInHibernate(Session session) + throws HibernateException, SQLException { + session.refresh(ttrUpdated); + ttrUpdated.notifyCurrentPath(registry, path); - ttrUpdated.addResultPart(TreeTestResultTestUtils - .createSimpleResultPartPassed()); - ttrUpdated.addResultPart(TreeTestResultTestUtils - .createSimpleResultPartFailed()); - ttrUpdated.addResultPart(TreeTestResultTestUtils - .createSimpleResultPartError()); + ttrUpdated.addResultPart(TreeTestResultTestUtils + .createSimpleResultPartPassed()); + ttrUpdated.addResultPart(TreeTestResultTestUtils + .createSimpleResultPartFailed()); + ttrUpdated.addResultPart(TreeTestResultTestUtils + .createSimpleResultPartError()); + return null; + } + }); testResultDao.update(ttrUpdated); @@ -71,7 +89,7 @@ public class TreeTestResultDaoHibernateTest extends AbstractSpringTestCase { TreeTestResult ttrRetrieved = (TreeTestResult) testResultDao .getTestResult(ttr.getUuid()); - UnitTestTreeUtil.assertTreeTestResult(ttrRetrieved, ttrUpdated); + assertInHibernate(ttrUpdated, ttrRetrieved); } public void testMultipleUpdateScenario() throws Exception { @@ -112,6 +130,12 @@ public class TreeTestResultDaoHibernateTest extends AbstractSpringTestCase { ttr.close(); testResultDao.close(ttr.getUuid(), ttr.getCloseDate()); + + TreeTestResult ttrRetrieved = (TreeTestResult) testResultDao + .getTestResult(ttr.getUuid()); + + assertInHibernate(ttr, ttrRetrieved); + } @Override @@ -119,4 +143,18 @@ public class TreeTestResultDaoHibernateTest extends AbstractSpringTestCase { return "org/argeo/slc/hibernate/applicationContext.xml"; } + public void assertInHibernate(final TreeTestResult ttrExpected, + final TreeTestResult ttrPersisted) { + template.execute(new HibernateCallback() { + public Object doInHibernate(Session session) { + session.refresh(ttrPersisted); + UnitTestTreeUtil + .assertTreeTestResult(ttrExpected, ttrPersisted); + return null; + } + + }); + + } + } -- 2.39.2