joinfetchtest.java
来自「hibernate-3.0.5 中文文档」· Java 代码 · 共 142 行
JAVA
142 行
//$Id: JoinFetchTest.java,v 1.5 2005/05/21 14:22:15 oneovthafew Exp $package org.hibernate.test.joinfetch;import junit.framework.Test;import junit.framework.TestSuite;import org.hibernate.FetchMode;import org.hibernate.Hibernate;import org.hibernate.Session;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.hibernate.cfg.Environment;import org.hibernate.test.TestCase;/** * @author Gavin King */public class JoinFetchTest extends TestCase { public JoinFetchTest(String str) { super(str); } public void testJoinFetch() { Session s = openSession(); Transaction t = s.beginTransaction(); s.createQuery( "delete from Bid" ).executeUpdate(); s.createQuery( "delete from Comment" ).executeUpdate(); s.createQuery( "delete from Item" ).executeUpdate(); t.commit(); s.close(); Item i = new Item("Camera"); Bid b = new Bid(i, 100.0f); new Bid(i, 105.0f); new Comment(i, "This looks like a really good deal"); new Comment(i, "Is it the latest version?"); new Comment(i, "<comment deleted>"); System.out.println( b.getTimestamp() ); s = openSession(); t = s.beginTransaction(); s.persist(i); t.commit(); s.close(); getSessions().evict(Item.class); s = openSession(); t = s.beginTransaction(); i = (Item) s.get( Item.class, i.getId() ); assertTrue( Hibernate.isInitialized( i.getBids() ) ); assertEquals( i.getBids().size(), 2 ); assertTrue( Hibernate.isInitialized( i.getComments() ) ); assertEquals( i.getComments().size(), 3 ); t.commit(); s.close(); getSessions().evict(Bid.class); s = openSession(); t = s.beginTransaction(); b = (Bid) s.get( Bid.class, b.getId() ); assertTrue( Hibernate.isInitialized( b.getItem() ) ); assertTrue( Hibernate.isInitialized( b.getItem().getComments() ) ); assertEquals( b.getItem().getComments().size(), 3 ); System.out.println( b.getTimestamp() ); t.commit(); s.close(); getSessions().evictCollection(Item.class.getName() + ".bids"); s = openSession(); t = s.beginTransaction(); i = (Item) s.createCriteria( Item.class ) .setFetchMode("bids", FetchMode.SELECT) .setFetchMode("comments", FetchMode.SELECT) .uniqueResult(); assertFalse( Hibernate.isInitialized( i.getBids() ) ); assertFalse( Hibernate.isInitialized( i.getComments() ) ); b = (Bid) i.getBids().iterator().next(); assertTrue( Hibernate.isInitialized( b.getItem() ) ); t.commit(); s.close(); s = openSession(); t = s.beginTransaction(); i = (Item) s.createQuery("from Item i left join fetch i.bids left join fetch i.comments").uniqueResult(); assertTrue( Hibernate.isInitialized( i.getBids() ) ); assertTrue( Hibernate.isInitialized( i.getComments() ) ); assertEquals( i.getComments().size(), 3 ); assertEquals( i.getBids().size(), 2 ); t.commit(); s.close(); s = openSession(); t = s.beginTransaction(); Object[] row = (Object[]) s.getNamedQuery("items").list().get(0); i = (Item) row[0]; assertTrue( Hibernate.isInitialized( i.getBids() ) ); assertTrue( Hibernate.isInitialized( i.getComments() ) ); assertEquals( i.getComments().size(), 3 ); assertEquals( i.getBids().size(), 2 ); t.commit(); s.close(); s = openSession(); t = s.beginTransaction(); i = (Item) s.createCriteria(Item.class).uniqueResult(); assertTrue( Hibernate.isInitialized( i.getBids() ) ); assertTrue( Hibernate.isInitialized( i.getComments() ) ); assertEquals( i.getComments().size(), 3 ); assertEquals( i.getBids().size(), 2 ); t.commit(); s.close(); s = openSession(); t = s.beginTransaction(); s.createQuery( "delete from Bid" ).executeUpdate(); s.createQuery( "delete from Comment" ).executeUpdate(); s.createQuery( "delete from Item" ).executeUpdate(); t.commit(); s.close(); } protected String[] getMappings() { return new String[] { "joinfetch/ItemBid.hbm.xml" }; } protected void configure(Configuration cfg) { cfg.setProperty(Environment.MAX_FETCH_DEPTH, "10"); cfg.setProperty(Environment.USE_SECOND_LEVEL_CACHE, "false"); } public static Test suite() { return new TestSuite(JoinFetchTest.class); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?