⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fumtest.java

📁 介绍了hibernate的入门有一些基本常用的事例
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
//$Id: FumTest.java,v 1.10 2005/02/27 14:43:58 oneovthafew Exp $package org.hibernate.test.legacy;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;import java.sql.SQLException;import java.util.ArrayList;import java.util.Date;import java.util.GregorianCalendar;import java.util.HashSet;import java.util.Iterator;import java.util.LinkedList;import java.util.List;import java.util.Map;import java.util.Properties;import java.util.Set;import junit.framework.Test;import junit.framework.TestSuite;import junit.textui.TestRunner;import org.hibernate.Criteria;import org.hibernate.FetchMode;import org.hibernate.FlushMode;import org.hibernate.Hibernate;import org.hibernate.HibernateException;import org.hibernate.LockMode;import org.hibernate.Query;import org.hibernate.Transaction;import org.hibernate.classic.Session;import org.hibernate.criterion.Expression;import org.hibernate.criterion.MatchMode;import org.hibernate.dialect.HSQLDialect;import org.hibernate.dialect.MckoiDialect;import org.hibernate.dialect.MySQLDialect;import org.hibernate.dialect.PointbaseDialect;import org.hibernate.dialect.TimesTenDialect;import org.hibernate.test.TestCase;import org.hibernate.transform.AliasToBeanResultTransformer;import org.hibernate.type.DateType;import org.hibernate.type.EntityType;import org.hibernate.type.StringType;import org.hibernate.type.Type;public class FumTest extends TestCase {	private static short fumKeyShort = 1;	public FumTest(String arg) {		super(arg);	}		public void testQuery() {		Session s = openSession();		Transaction t = s.beginTransaction();		s.createQuery("from Fum fum where fum.fo.id.string = 'x'").list();		t.commit();		s.close();	}	public void testCriteriaCollection() throws Exception {		if ( getDialect() instanceof HSQLDialect ) return;		Session s = openSession();		Fum fum = new Fum( fumKey("fum") );		fum.setFum("a value");		fum.getMapComponent().getFummap().put("self", fum);		fum.getMapComponent().getStringmap().put("string", "a staring");		fum.getMapComponent().getStringmap().put("string2", "a notha staring");		fum.getMapComponent().setCount(1);		s.save(fum);		s.flush();		s.connection().commit();		s.close();		s = openSession();		Fum b = (Fum) s.createCriteria(Fum.class).add(			Expression.in("fum", new String[] { "a value", "no value" } )		)		.uniqueResult();		//assertTrue( Hibernate.isInitialized( b.getMapComponent().getFummap() ) );		assertTrue( Hibernate.isInitialized( b.getMapComponent().getStringmap() ) );		assertTrue( b.getMapComponent().getFummap().size()==1 );		assertTrue( b.getMapComponent().getStringmap().size()==2 );		s.delete(b);		s.flush();		s.connection().commit();		s.close();	}	public void testCriteria() throws Exception {		Session s = openSession();		Fum fum = new Fum( fumKey("fum") );		fum.setFo( new Fum( fumKey("fo") ) );		fum.setFum("fo fee fi");		fum.getFo().setFum("stuff");		Fum fr = new Fum( fumKey("fr") );		fr.setFum("goo");		Fum fr2 = new Fum( fumKey("fr2") );		fr2.setFum("soo");		fum.setFriends( new HashSet() );		fum.getFriends().add(fr);		fum.getFriends().add(fr2);		s.save(fr);		s.save(fr2);		s.save( fum.getFo() );		s.save(fum);		Criteria base = s.createCriteria(Fum.class)			.add( Expression.like("fum", "f", MatchMode.START) );		base.createCriteria("fo")			.add( Expression.isNotNull("fum") );		base.createCriteria("friends")			.add( Expression.like("fum", "g%") );		List list = base.list();		assertTrue( list.size()==1 && list.get(0)==fum );		base = s.createCriteria(Fum.class)			.add( Expression.like("fum", "f%") )			.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);		base.createCriteria("fo", "fo")			.add( Expression.isNotNull("fum") );		base.createCriteria("friends", "fum")			.add( Expression.like("fum", "g", MatchMode.START) );		Map map = (Map) base.uniqueResult();		assertTrue(			map.get("this")==fum &&			map.get("fo")==fum.getFo() &&			fum.getFriends().contains( map.get("fum") ) &&			map.size()==3		);		base = s.createCriteria(Fum.class)			.add( Expression.like("fum", "f%") )			.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)			.setFetchMode("friends", FetchMode.EAGER);		base.createCriteria("fo", "fo")			.add( Expression.eq( "fum", fum.getFo().getFum() ) );		map = (Map) base.list().get(0);		assertTrue(			map.get("this")==fum &&			map.get("fo")==fum.getFo() &&			map.size()==2		);		list = s.createCriteria(Fum.class)			.createAlias("friends", "fr")			.createAlias("fo", "fo")			.add( Expression.like("fum", "f%") )			.add( Expression.isNotNull("fo") )			.add( Expression.isNotNull("fo.fum") )			.add( Expression.like("fr.fum", "g%") )			.add( Expression.eqProperty("fr.id.short", "id.short") )			.list();		assertTrue( list.size()==1 && list.get(0)==fum );		s.flush();		s.connection().commit();		s.close();		s = openSession();		base = s.createCriteria(Fum.class)			.add( Expression.like("fum", "f%") );		base.createCriteria("fo")			.add( Expression.isNotNull("fum") );		base.createCriteria("friends")			.add( Expression.like("fum", "g%") );		fum = (Fum) base.list().get(0);		assertTrue(  fum.getFriends().size()==2 );		s.delete(fum);		s.delete( fum.getFo() );		Iterator iter = fum.getFriends().iterator();		while ( iter.hasNext() ) s.delete( iter.next() );		s.flush();		s.connection().commit();		s.close();	}	static public class ABean {		public Fum fum;		public Fum fo;		public Fum getFo() {			return fo;		}		public void setFo(Fum fo) {			this.fo = fo;		}		public Fum getFum() {			return fum;		}		public void setFum(Fum fum) {			this.fum = fum;		}	}		public void testBeanResultTransformer() throws HibernateException, SQLException {				Session s = openSession();		Transaction transaction = s.beginTransaction();		Fum fum = new Fum( fumKey("fum") );		fum.setFo( new Fum( fumKey("fo") ) );		fum.setFum("fo fee fi");		fum.getFo().setFum("stuff");		Fum fr = new Fum( fumKey("fr") );		fr.setFum("goo");		Fum fr2 = new Fum( fumKey("fr2") );		fr2.setFum("soo");		fum.setFriends( new HashSet() );		fum.getFriends().add(fr);		fum.getFriends().add(fr2);		s.save(fr);		s.save(fr2);		s.save( fum.getFo() );		s.save(fum);				Criteria test = s.createCriteria(Fum.class, "xam")			.createCriteria("fo", "fo")			.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);				Map fc = (Map) test.list().get(0);		assertNotNull(fc.get("xam"));				Criteria base = s.createCriteria(Fum.class, "fum")		.add( Expression.like("fum", "f%") )		.setResultTransformer(new AliasToBeanResultTransformer(ABean.class))		.setFetchMode("friends", FetchMode.JOIN);		base.createCriteria("fo", "fo")		.add( Expression.eq( "fum", fum.getFo().getFum() ) );		ABean map = (ABean) base.list().get(0);		assertTrue(				map.getFum()==fum &&				map.getFo()==fum.getFo() );				s.delete(fr);		s.delete(fr2);		s.delete(fum);		s.delete(fum.getFo());		s.flush();		transaction.commit();		s.close();			}			public void testListIdentifiers() throws Exception {		Session s = openSession();		Fum fum = new Fum( fumKey("fum") );		fum.setFum("fo fee fi");		s.save(fum);		fum = new Fum( fumKey("fi") );		fum.setFum("fee fi fo");		s.save(fum);		List list = s.find("select fum.id from Fum as fum where not fum.fum='FRIEND'");		assertTrue( "list identifiers", list.size()==2);		Iterator iter = s.iterate("select fum.id from Fum fum where not fum.fum='FRIEND'");		int i=0;		while ( iter.hasNext() ) {			assertTrue( "iterate identifiers",  iter.next() instanceof FumCompositeID);			i++;		}		assertTrue(i==2);		s.delete( s.load(Fum.class, (Serializable) list.get(0) ) );		s.delete( s.load(Fum.class, (Serializable) list.get(1) ) );		s.flush();		s.connection().commit();		s.close();	}	public FumCompositeID fumKey(String str) {		return fumKey(str,false);	}	private FumCompositeID fumKey(String str, boolean aCompositeQueryTest) {		FumCompositeID id = new FumCompositeID();		if ( getDialect() instanceof MckoiDialect ) {			GregorianCalendar now = new GregorianCalendar();			GregorianCalendar cal = new GregorianCalendar(				now.get(java.util.Calendar.YEAR),				now.get(java.util.Calendar.MONTH),				now.get(java.util.Calendar.DATE)			);			id.setDate( cal.getTime() );		}		else {			id.setDate( new Date() );		}		id.setString( new String(str) );		if (aCompositeQueryTest) {			id.setShort( fumKeyShort++ );		}		else {			id.setShort( (short) 12 );		}		return id;	}	public void testCompositeID() throws Exception {		if ( getDialect() instanceof HSQLDialect ) return;		Session s = openSession();		Fum fum = new Fum( fumKey("fum") );		fum.setFum("fee fi fo");		s.save(fum);		assertTrue( "load by composite key", fum==s.load( Fum.class, fumKey("fum") ) );		s.flush();		s.connection().commit();		s.close();		s = openSession();		fum = (Fum) s.load( Fum.class, fumKey("fum"), LockMode.UPGRADE );		assertTrue( "load by composite key", fum!=null );		Fum fum2 = new Fum( fumKey("fi") );		fum2.setFum("fee fo fi");		fum.setFo(fum2);		s.save(fum2);		assertTrue(			"find composite keyed objects",			s.find("from Fum fum where not fum.fum='FRIEND'").size()==2		);		assertTrue(			"find composite keyed object",			s.find("select fum from Fum fum where fum.fum='fee fi fo'").get(0)==fum		);		fum.setFo(null);		s.flush();		s.connection().commit();		s.close();		s = openSession();		Iterator iter = s.iterate("from Fum fum where not fum.fum='FRIEND'");		int i = 0;		while ( iter.hasNext() ) {			fum = (Fum) iter.next();			//iter.remove();			s.delete(fum);			i++;		}		assertTrue( "iterate on composite key", i==2 );		s.flush();		s.connection().commit();		s.close();	}	public void testCompositeIDOneToOne() throws Exception {		if ( getDialect() instanceof HSQLDialect ) return;		Session s = openSession();		Fum fum = new Fum( fumKey("fum") );		fum.setFum("fee fi fo");		//s.save(fum);		Fumm fumm = new Fumm();		fumm.setFum(fum);		s.save(fumm);		s.flush();		s.connection().commit();		s.close();		s = openSession();		fumm = (Fumm) s.load( Fumm.class, fumKey("fum") );		//s.delete( fumm.getFum() );		s.delete(fumm);		s.flush();		s.connection().commit();		s.close();	}	public void testCompositeIDQuery() throws Exception {		if ( getDialect() instanceof HSQLDialect ) return;		Session s = openSession();		Fum fee = new Fum( fumKey("fee",true) );		fee.setFum("fee");		s.save(fee);		Fum fi = new Fum( fumKey("fi",true) );		fi.setFum("fi");		short fiShort = fi.getId().getShort();		s.save(fi);		Fum fo = new Fum( fumKey("fo",true) );		fo.setFum("fo");		s.save(fo);		Fum fum = new Fum( fumKey("fum",true) );		fum.setFum("fum");		s.save(fum);		s.flush();		s.connection().commit();		s.close();		s = openSession();		// Try to find the Fum object "fo" that we inserted searching by the string in the id		List vList = s.find("from Fum fum where fum.id.string='fo'"  );		assertTrue( "find by composite key query (find fo object)", vList.size() == 1 );		fum = (Fum)vList.get(0);		assertTrue( "find by composite key query (check fo object)", fum.getId().getString().equals("fo") );		// Try to find the Fum object "fi" that we inserted searching by the date in the id		vList = s.find("from Fum fum where fum.id.short = ?",new Short(fiShort),Hibernate.SHORT);		assertTrue( "find by composite key query (find fi object)", vList.size() == 1 );		fi = (Fum)vList.get(0);		assertTrue( "find by composite key query (check fi object)", fi.getId().getString().equals("fi") );		// Make sure we can return all of the objects by searching by the date id		assertTrue(			"find by composite key query with arguments",			s.find("from Fum fum where fum.id.date <= ? and not fum.fum='FRIEND'",new Date(),Hibernate.DATE).size()==4		);		s.flush();		s.connection().commit();		s.close();		s = openSession();		assertTrue(			s.iterate("select fum.id.short, fum.id.date, fum.id.string from Fum fum").hasNext()		);		assertTrue(			s.iterate("select fum.id from Fum fum").hasNext()		);		Query qu = s.createQuery("select fum.fum, fum , fum.fum, fum.id.date from Fum fum");		Type[] types = qu.getReturnTypes();		assertTrue(types.length==4);		for ( int k=0; k<types.length; k++) {			assertTrue( types[k]!=null );		}		assertTrue(types[0] instanceof StringType);		assertTrue(types[1] instanceof EntityType);		assertTrue(types[2] instanceof StringType);		assertTrue(types[3] instanceof DateType);		Iterator iter = qu.iterate();		int j = 0;		while ( iter.hasNext() ) {			j++;			assertTrue( ( (Object[]) iter.next() )[1] instanceof Fum );		}		assertTrue( "iterate on composite key", j==8 );		fum = (Fum) s.load( Fum.class, fum.getId() );		s.filter( fum.getQuxArray(), "where this.foo is null" );		s.filter( fum.getQuxArray(), "where this.foo.id = ?", "fooid", Hibernate.STRING );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -