<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    日出星辰

    Hibernate學習之初步使用

    package com.test;
    
    import java.util.List;
    import com.model.Tuser;
    import net.sf.hibernate.HibernateException;
    import net.sf.hibernate.Session;
    import net.sf.hibernate.SessionFactory;
    import net.sf.hibernate.Transaction;
    import net.sf.hibernate.cfg.Configuration;
    import junit.framework.Assert;
    import junit.framework.TestCase;
    
    public class HibernateTest extends TestCase {
    
    	Session session = null;
    
    	/**
    	 * setUp方法在TestCase初始化的時候會自動調用 一般用于初始化公用資源 這個方法中用于初始化Hibernate Seesion
    	 */
    	protected void setUp() {
    		try {
    			/**
    			 * 采用hiberante.properties或者hibernate.cfg.xml配置文件初始化代碼的方法
    			 * Configuration cfg = new Configuration();
    			 * cfg.addClass(Tuser.class);
    			 */
    
    			/**
    			 * 采用hibernate.cfg.xml配置文件 注意與上面初始化configuration時代差異:
    			 * 1.Configuration的初始化方式
    			 * 2.xml文件中已經定義了Mapping文件,因此無需再編碼導入
    			 */
    			//-------------------------Configuration基礎語義-----------------------------------------
    			//Configuration類負責管理Hibernate配置信息。Hibernate運行時需要獲取一些底層實現的基本信息,其中關鍵屬性
    			//數據庫url、數據庫用戶名、密碼、JDBC驅動類、dialect(適配器)
    			//Configuration Hibernate會自動在當前的classpath中搜尋hibernate.cfg.xml文件并將其加載至內存中,作為后續操作的基礎配置
    			//Configuration類一般只有獲取SessonFacotry時需要涉及,當SessionFactory實例創建之后,
    			//由于配置信息已經由Hibernate綁定在返回的SessionFactory中,因此一般情況下無需再對Configuration進行操作
    			//如果不希望使用默認的hibernate.cfg.xml文件作為配置文件,可以指定配置文件名
    			//File file=new File("C:\\sample\\myhibernate.cfg.xml");
    			//Configuration cofing=new Configuration().configure(file);
    			Configuration config = new Configuration().configure();
    			//--------------------------SessionFactory基礎語義-----------------------------
    			//SessionFactory負責創建session實例,可以通過Configuration實例構建SessionFactory
    			//Configuration實例config會根據當前的數據庫配置信息,構造SessionFactory實例并返回。
    			//SessionFactory一旦構造完畢,即被賦予特定的配置信息!
    			//也就是說,之后的config的任何改變將不會影響到已經創建的SessionFacotry實例(factory)
    			//SessionFactory是線程安全,可由多個線程并發調用
    			SessionFactory factory = config.buildSessionFactory();
    			//--------------------------Session基礎語義-----------------------------------
    			//Session是Hibernate持久化操作的基礎  session是非線程安全的
    			//也就是說一個session實例只可同時有一個線程調用,同一個session實例的多線程并發調用將導致不可預知的錯誤
    			session = factory.openSession();
    		} catch (HibernateException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    
    	/**
    	 * 與setUP相對應,TestCase執行完畢時,會自動調用tearDown方法 一般用于資源釋放
    	 * 此方法中用于關閉在setUp方法中打開的Hibernate Session
    	 */
    	protected void tearDown() {
    		try {
    			session.close();
    		} catch (HibernateException e) {
    			e.printStackTrace();
    		}
    	}
    
    	/**
    	 * 對象持久化(Insert)方法 Junit中,以“test”作為前綴的方法為測試方法,將被Junit自動添加到測試計劃中
    	 */
    	public void testInsert() {
    		Transaction tran = null;
    		try {
    			tran = session.beginTransaction();
    			Tuser user = new Tuser();
    			user.setName("zhangsan");
    			session.save(user);
    			session.flush();   //把緩存中的數據刷新到數據庫
    			tran.commit();
    			Assert.assertEquals(user.getId().intValue() > 0, true);
    		} catch (HibernateException e) {
    			e.printStackTrace();
    			Assert.fail(e.getMessage());
    			if (tran != null) {
    				try {
    					tran.rollback();
    				} catch (HibernateException e1) {
    					e1.printStackTrace();
    				}
    			}
    		}
    	}
    
    	/**
    	 * 對象讀取(select)測試
    	 */
    	public void testSelect() {
    		String hql = "from Tuser where name='zhangsan'";
    		try {
    			@SuppressWarnings("rawtypes")
    			List userList = session.createQuery(hql).list();
    			Tuser user = (Tuser) userList.get(0);
    			Assert.assertEquals(user.getName(), "zhangsan");
    		} catch (HibernateException e) {
    			e.printStackTrace();
    			Assert.fail(e.getMessage());
    		}
    	}
    	
    	public void testUserType(){
    		try {
    			Tuser user=(Tuser) session.load(Tuser.class, 5);
    			List list=user.getEmail();
    			list.add("saadsd@163.com");
    			Transaction tx=session.beginTransaction();
    			session.save(user);
    			tx.commit();
    		} catch (HibernateException e) {
    			e.printStackTrace();
    		}
    	}
    }
    

    posted on 2011-08-23 10:47 日出星辰 閱讀(72) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲AV无码成人精品区大在线| 精品一区二区三区无码免费视频| 成年女人毛片免费观看97| 亚洲欧洲日产v特级毛片| 最近高清中文字幕免费| 亚洲AV综合色区无码一区 | 亚洲色大成网站www尤物| 日本人的色道免费网站| 亚洲小说图片视频| 成人福利免费视频| 精品亚洲国产成人| 国内自产少妇自拍区免费| 亚洲a∨国产av综合av下载| 日本一道本高清免费| 牛牛在线精品观看免费正| 久久亚洲2019中文字幕| 久久国产乱子精品免费女| 亚洲国产精品专区| 狠狠久久永久免费观看| 香蕉国产在线观看免费| 亚洲熟妇丰满多毛XXXX| 日本一卡精品视频免费| 亚洲av成人一区二区三区| 日韩免费高清视频网站| 国产特黄一级一片免费 | 亚洲一区免费观看| 亚洲国产综合在线| 国产资源免费观看| 一级特黄aaa大片免费看| 亚洲AV永久无码区成人网站| 9277手机在线视频观看免费| 亚洲乱色伦图片区小说 | 国产乱子影视频上线免费观看| 男女污污污超污视频免费在线看| 亚洲一区二区女搞男| 精品国产免费人成电影在线观看| 亚洲乱亚洲乱妇24p| 国产亚洲精品自在久久| 在线a级毛片免费视频| 无遮挡国产高潮视频免费观看| 亚洲好看的理论片电影|