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

📄 main.java

📁 hibernate 开源框架的代码 jar包希望大家能喜欢
💻 JAVA
字号:
//$Id: Main.java 7369 2005-07-04 03:18:34Z oneovthafew $package org.hibernate.auction;import java.util.ArrayList;import java.util.Date;import java.util.HashSet;import java.util.Iterator;import java.util.List;import org.hibernate.FetchMode;import org.hibernate.FlushMode;import org.hibernate.LockMode;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.hibernate.cfg.Environment;import org.hibernate.criterion.Example;import org.hibernate.criterion.Expression;import org.hibernate.criterion.MatchMode;/** * Demonstrate some useful features of Hibernate. * * @author Gavin King */public class Main {	private SessionFactory factory;	/**	 * Demonstrates HQL projection/aggregation	 */	public void viewAllAuctionsFast() throws Exception {		System.out.println("Viewing all auction item info");		Session s = factory.openSession();		Transaction tx=null;		try {			tx = s.beginTransaction();			List auctions = s.createQuery(				"select new AuctionInfo( item.id, item.description, item.ends, max(bid.amount) ) "				+ "from AuctionItem item "				+ "left join item.bids bid "				+ "group by item.id, item.description, item.ends "				+ "order by item.ends desc"				)				.setMaxResults(100)				.list();			Iterator iter = auctions.iterator();			while ( iter.hasNext() ) {				AuctionInfo ai = (AuctionInfo) iter.next();				System.out.println(					"Auction: " + ai.getId() + " - " + ai.getDescription() +					", ends: " + ai.getEnds() +					", highest bid: " + ai.getMaxAmount()				);			}			System.out.println();			tx.commit();		}		catch (Exception e) {			if (tx!=null) tx.rollback();			throw e;		}		finally {			s.close();		}	}	/**	 * Demonstrates HQL with runtime fetch strategy	 */	public void viewAllAuctionsSlow() throws Exception {		System.out.println("Viewing all auction item objects");		Session s = factory.openSession();		Transaction tx=null;		try {			s.setFlushMode(FlushMode.NEVER); //entirely optional!!			tx = s.beginTransaction();			List auctions = s.createQuery(				"from AuctionItem item "				+ "left join fetch item.bids bid left join fetch bid.bidder "				+ "order by item.ends desc"				)				.setMaxResults(100)				.list();			Iterator iter = new HashSet(auctions).iterator();			while ( iter.hasNext() ) {				AuctionItem auction = (AuctionItem) iter.next();				System.out.println(					"Auction: " + auction.getId() + " - " + auction.getDescription() +					", ends: " + auction.getEnds() +					", bids: " + auction.getBids()				);			}			System.out.println();			tx.commit();		}		catch (Exception e) {			if (tx!=null) tx.rollback();			throw e;		}		finally {			s.close();		}	}	/**	 * Demonstrates transitive persistence with detached object support	 */	public void bidOnAuction(User bidder, AuctionItem item, float amount) throws Exception {		System.out.println("Creating a new bid for auction item: " + item.getId() + " by user: " + bidder.getId() );		Session s = factory.openSession();		Transaction tx=null;		try {			tx = s.beginTransaction();			s.lock(item, LockMode.NONE);			s.lock(bidder, LockMode.NONE);			Bid bid = new Bid();			bid.setBidder(bidder);			bid.setDatetime( new Date() );			bid.setAmount(amount);			bid.setItem(item);			bidder.getBids().add(bid);			item.getBids().add(bid);			tx.commit();		}		catch (Exception e) {			if (tx!=null) tx.rollback();			throw e;		}		finally {			s.close();		}	}	/**	 * Demonstrates detached object support	 */	public void changeUserDetails(User user) throws Exception {		System.out.println("Changing user details for: " + user.getId() );		Session s = factory.openSession();		Transaction tx=null;		try {			tx = s.beginTransaction();			s.merge(user);			tx.commit();		}		catch (Exception e) {			if (tx!=null) tx.rollback();			throw e;		}		finally {			s.close();		}	}	/**	 * Demonstrates automatic dirty checking	 */	public void changeItemDescription(Long itemId, String description) throws Exception {		System.out.println("Changing auction item description for: " + itemId );		Session s = factory.openSession();		Transaction tx=null;		try {			tx = s.beginTransaction();			AuctionItem item = (AuctionItem) s.get(AuctionItem.class, itemId);			if (item==null) throw new IllegalArgumentException("No item for the given id: " + itemId);			item.setDescription(description);			tx.commit();		}		catch (Exception e) {			if (tx!=null) tx.rollback();			throw e;		}		finally {			s.close();		}	}	/**	 * Demonstrates query by criteria with runtime fetch strategy	 */	public void viewUserAuctions(Long sellerId) throws Exception {		System.out.println("Viewing user and auctions: " + sellerId);		Session s = factory.openSession();		Transaction tx=null;		try {			tx = s.beginTransaction();			List list = s.createCriteria(User.class)				.add( Expression.eq("id", sellerId) )				.setFetchMode("auctions", FetchMode.JOIN)				.list();			if (list.size()==0) throw new IllegalArgumentException("No user for the given id: " + sellerId);			User user = (User) list.get(0);			System.out.println(				"User: " + user.getId() + " - " + user.getName() +				", email: " + user.getEmail() +				", auctions: " + user.getAuctions()			);			tx.commit();		}		catch (Exception e) {			if (tx!=null) tx.rollback();			throw e;		}		finally {			s.close();		}	}	/**	 * Demonstrates query by example	 */	public void viewAuctionsByDescription(String description, int condition) throws Exception {		String msg = "Viewing auctions containing: " + description;		if (condition>0) msg += " with condition: " + condition + "/10";		AuctionItem item = new AuctionItem();		item.setDescription(description);		item.setCondition(condition);		Session s = factory.openSession();		Transaction tx=null;		try {			tx = s.beginTransaction();			Iterator iter = s.createCriteria(AuctionItem.class)				.add( Example.create(item)					.enableLike(MatchMode.ANYWHERE)					.ignoreCase()					.excludeZeroes()				)				.list()				.iterator();			System.out.println(msg);			while ( iter.hasNext() ) {				item = (AuctionItem) iter.next();				System.out.println("Item: " + item.getId() + " - " + item.getDescription() );			}			System.out.println();			tx.commit();		}		catch (Exception e) {			if (tx!=null) tx.rollback();			throw e;		}		finally {			s.close();		}	}	/**	 * Demonstrates transitive persistence	 */	public void createTestAuctions() throws Exception {		System.out.println("Setting up some test data");		Session s = factory.openSession();		Transaction tx = s.beginTransaction();		User seller = new User();		seller.setUserName("xam");		seller.setName( new Name("Max", new Character('R'), "Andersen") );		seller.setEmail("max@hibernate.org");		seller.setPassword("******");		seller.setAuctions( new ArrayList() );		s.save(seller);		User bidder1 = new User();		bidder1.setUserName("1E1");		bidder1.setName( new Name( "Gavin", new Character('A'), "King") );		bidder1.setEmail("gavin@hibernate.org");		bidder1.setPassword("******");		bidder1.setBids( new ArrayList() );		s.save(bidder1);		User bidder2 = new User();		bidder2.setUserName("steve");		bidder2.setName( new Name("Steve", null, "Ebersole") );		bidder2.setEmail("steve@hibernate.org");		bidder2.setPassword("******");		bidder2.setBids( new ArrayList() );		s.save(bidder2);		for ( int i=0; i<3; i++ ) {			AuctionItem item = new AuctionItem();			item.setShortDescription("Auction " + i);			item.setDescription("the auction item number " + i);			item.setEnds( new Date() );			item.setBids( new ArrayList() );			item.setSeller(seller);			item.setCondition(i*3 + 2);			for ( int j=0; j<i; j++ ) {				Bid bid = new Bid();				bid.setBidder(bidder1);				bid.setAmount(j);				bid.setDatetime( new Date() );				bid.setItem(item);				item.getBids().add(bid);				bidder1.getBids().add(bid);				Bid bid2 = new Bid();				bid2.setBidder(bidder2);				bid2.setAmount( j + 0.5f);				bid2.setDatetime( new Date() );				bid2.setItem(item);				item.getBids().add(bid2);				bidder2.getBids().add(bid2);			}			seller.getAuctions().add(item);			mainItem = item;		}		mainBidder = bidder2;		mainSeller = seller;		BuyNow buyNow = new BuyNow();		buyNow.setAmount(1.2f);		buyNow.setDatetime( new Date() );		buyNow.setBidder(mainBidder);		buyNow.setItem(mainItem);		mainBidder.getBids().add(buyNow);		mainItem.getBids().add(buyNow);		tx.commit();		s.close();	}	static AuctionItem mainItem;	static User mainBidder;	static User mainSeller;	public static void main(String[] args) throws Exception {		final Main test = new Main();		Configuration cfg = new Configuration()			.addClass(AuctionItem.class)			.addClass(Bid.class)			.addClass(User.class)			.setProperty(Environment.HBM2DDL_AUTO, "create");		//cfg.setProperty("hibernate.show_sql", "true");		test.factory = cfg.buildSessionFactory();		test.createTestAuctions();		test.viewAllAuctionsSlow();		test.viewAllAuctionsFast();		test.bidOnAuction(mainBidder, mainItem, 5.5f);		test.viewAllAuctionsFast();		test.viewUserAuctions( mainSeller.getId() );		mainSeller.setEmail("max@jboss.org");		test.changeUserDetails(mainSeller);		test.changeItemDescription(mainItem.getId(), "new description");		test.viewUserAuctions( mainSeller.getId() );		test.viewAuctionsByDescription("It", 0);		test.viewAuctionsByDescription("DESC", 3);		test.viewAuctionsByDescription("DESC", 8);		test.factory.close();	}}

⌨️ 快捷键说明

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