Package org.hibernate.test.instrument.cases

Source Code of org.hibernate.test.instrument.cases.TestLazyExecutable

package org.hibernate.test.instrument.cases;

import org.hibernate.test.TestCase;
import org.hibernate.test.instrument.cases.AbstractExecutable;
import org.hibernate.test.instrument.domain.Owner;
import org.hibernate.test.instrument.domain.Document;
import org.hibernate.test.instrument.domain.Folder;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.Hibernate;
import org.hibernate.LockMode;
import org.hibernate.CacheMode;
import org.hibernate.SessionFactory;

/**
* @author Steve Ebersole
*/
public class TestLazyExecutable extends AbstractExecutable {
  public void execute() {
    // The following block is repeated 100 times to reproduce HHH-2627.
    // Without the fix, Oracle will run out of cursors using 10g with
    // a default installation (ORA-01000: maximum open cursors exceeded).
    // The number of loops may need to be adjusted depending on the how
    // Oracle is configured.
    // Note: The block is not indented to avoid a lot of irrelevant differences.
    for ( int i=0; i<100; i++ ) {

    SessionFactory factory = getFactory();
    Session s = factory.openSession();
    Transaction t = s.beginTransaction();
    Owner o = new Owner();
    Document doc = new Document();
    Folder fol = new Folder();
    o.setName("gavin");
    doc.setName("Hibernate in Action");
    doc.setSummary("blah");
    doc.updateText("blah blah");
    fol.setName("books");
    doc.setOwner(o);
    doc.setFolder(fol);
    fol.getDocuments().add(doc);
    s.save(o);
    s.save(fol);
    t.commit();
    s.close();

    s = factory.openSession();
    s.setCacheMode( CacheMode.IGNORE );
    t = s.beginTransaction();
    doc = ( Document ) s.get( Document.class, doc.getId() );
    TestCase.assertTrue( Hibernate.isPropertyInitialized(doc, "weirdProperty"));
    TestCase.assertTrue(Hibernate.isPropertyInitialized(doc, "name"));
    TestCase.assertFalse(Hibernate.isPropertyInitialized(doc, "text"));
    TestCase.assertFalse(Hibernate.isPropertyInitialized(doc, "upperCaseName"));
    TestCase.assertFalse(Hibernate.isPropertyInitialized(doc, "folder"));
    TestCase.assertFalse(Hibernate.isPropertyInitialized(doc, "owner"));
    doc.getUpperCaseName()// should force initialization
    TestCase.assertTrue(Hibernate.isPropertyInitialized(doc, "text"));
    TestCase.assertTrue(Hibernate.isPropertyInitialized(doc, "weirdProperty"));
    TestCase.assertTrue(Hibernate.isPropertyInitialized(doc, "upperCaseName"));
    TestCase.assertTrue(Hibernate.isPropertyInitialized(doc, "folder"));
    TestCase.assertTrue(Hibernate.isPropertyInitialized(doc, "owner"));
    t.commit();
    s.close();

    s = factory.openSession();
    s.setCacheMode( CacheMode.IGNORE );
    t = s.beginTransaction();
    doc = (Document) s.createQuery("from Document").uniqueResult();
    doc.getName();
    TestCase.assertEquals( doc.getText(), "blah blah" );
    t.commit();
    s.close();

    s = factory.openSession();
    s.setCacheMode( CacheMode.IGNORE );
    t = s.beginTransaction();
    doc = (Document) s.createQuery("from Document").uniqueResult();
    doc.getName();
    TestCase.assertFalse(Hibernate.isPropertyInitialized(doc, "text"));
    TestCase.assertFalse(Hibernate.isPropertyInitialized(doc, "summary"));
    TestCase.assertEquals( doc.getText(), "blah blah" );
    TestCase.assertTrue(Hibernate.isPropertyInitialized(doc, "text"));
    TestCase.assertTrue(Hibernate.isPropertyInitialized(doc, "summary"));
    t.commit();
    s.close();

    s = factory.openSession();
    s.setCacheMode( CacheMode.IGNORE );
    t = s.beginTransaction();
    doc = (Document) s.createQuery("from Document").uniqueResult();
    doc.setName("HiA");
    t.commit();
    s.close();

    s = factory.openSession();
    s.setCacheMode( CacheMode.IGNORE );
    t = s.beginTransaction();
    doc = (Document) s.createQuery("from Document").uniqueResult();
    TestCase.assertEquals( doc.getName(), "HiA" );
    TestCase.assertEquals( doc.getText(), "blah blah" );
    t.commit();
    s.close();

    s = factory.openSession();
    s.setCacheMode( CacheMode.IGNORE );
    t = s.beginTransaction();
    doc = (Document) s.createQuery("from Document").uniqueResult();
    doc.getText();
    doc.setName("HiA second edition");
    t.commit();
    s.close();

    s = factory.openSession();
    s.setCacheMode( CacheMode.IGNORE );
    t = s.beginTransaction();
    doc = (Document) s.createQuery("from Document").uniqueResult();
    TestCase.assertTrue(Hibernate.isPropertyInitialized(doc, "weirdProperty"));
    TestCase.assertTrue(Hibernate.isPropertyInitialized(doc, "name"));
    TestCase.assertFalse(Hibernate.isPropertyInitialized(doc, "text"));
    TestCase.assertFalse(Hibernate.isPropertyInitialized(doc, "upperCaseName"));
    TestCase.assertFalse(Hibernate.isPropertyInitialized(doc, "owner"));
    TestCase.assertEquals( doc.getName(), "HiA second edition" );
    TestCase.assertEquals( doc.getText(), "blah blah" );
    TestCase.assertEquals( doc.getUpperCaseName(), "HIA SECOND EDITION" );
    TestCase.assertTrue(Hibernate.isPropertyInitialized(doc, "text"));
    TestCase.assertTrue(Hibernate.isPropertyInitialized(doc, "weirdProperty"));
    TestCase.assertTrue(Hibernate.isPropertyInitialized(doc, "upperCaseName"));
    t.commit();
    s.close();

    s = factory.openSession();
    s.setCacheMode( CacheMode.IGNORE );
    t = s.beginTransaction();
    doc = (Document) s.createQuery("from Document").uniqueResult();
    t.commit();
    s.close();

    TestCase.assertFalse(Hibernate.isPropertyInitialized(doc, "text"));

    s = factory.openSession();
    s.setCacheMode( CacheMode.IGNORE );
    t = s.beginTransaction();
    s.lock(doc, LockMode.NONE);
    TestCase.assertFalse(Hibernate.isPropertyInitialized(doc, "text"));
    TestCase.assertEquals( doc.getText(), "blah blah" );
    TestCase.assertTrue(Hibernate.isPropertyInitialized(doc, "text"));
    t.commit();
    s.close();

    s = factory.openSession();
    s.setCacheMode( CacheMode.IGNORE );
    t = s.beginTransaction();
    doc = (Document) s.createQuery("from Document").uniqueResult();
    t.commit();
    s.close();

    doc.setName("HiA2");

    TestCase.assertFalse(Hibernate.isPropertyInitialized(doc, "text"));

    s = factory.openSession();
    s.setCacheMode( CacheMode.IGNORE );
    t = s.beginTransaction();
    s.saveOrUpdate(doc);
    s.flush();
    TestCase.assertFalse(Hibernate.isPropertyInitialized(doc, "text"));
    TestCase.assertEquals( doc.getText(), "blah blah" );
    TestCase.assertTrue(Hibernate.isPropertyInitialized(doc, "text"));
    doc.updateText("blah blah blah blah");
    t.commit();
    s.close();

    s = factory.openSession();
    s.setCacheMode( CacheMode.IGNORE );
    t = s.beginTransaction();
    doc = ( Document ) s.createQuery("from Document").uniqueResult();
    TestCase.assertEquals( doc.getName(), "HiA2" );
    TestCase.assertEquals( doc.getText(), "blah blah blah blah" );
    t.commit();
    s.close();

    s = factory.openSession();
    s.setCacheMode( CacheMode.IGNORE );
    t = s.beginTransaction();
    doc = (Document) s.load( Document.class, doc.getId() );
    doc.getName();
    TestCase.assertFalse(Hibernate.isPropertyInitialized(doc, "text"));
    TestCase.assertFalse(Hibernate.isPropertyInitialized(doc, "summary"));
    t.commit();
    s.close();

    s = factory.openSession();
    s.setCacheMode( CacheMode.IGNORE );
    t = s.beginTransaction();
    doc = (Document) s.createQuery("from Document").uniqueResult();
    //s.delete(doc);
    s.delete( doc.getFolder() );
    s.delete( doc.getOwner() );
    s.flush();
    t.commit();
    s.close();

    }

  }

}
TOP

Related Classes of org.hibernate.test.instrument.cases.TestLazyExecutable

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.