Hibernate一對多關聯操作

步驟:

(1)在數據庫testdb6中創建學生表student( Integer id, Varchar sname, Integer cid ),班級表class1( Integer id, Varchar cname ),同時在數據庫中將student表的外鍵cidclass1表的主鍵id進行關聯。

創建的過程可以參照這篇文章,http://blog.csdn.net/m_eve/article/details/70850546

Class1

 

Student

 

然後點擊外鍵,如下圖

 

(2)MyEclipse中創建與數據庫testdb6的連接,創建一個Java項目工程chap,爲工程添加Hibernate支持

(3)MyEclipseDB Browser窗格中利用Hivernate反向工程(Hibernate Reverse Engineering)生成class表和student表的映射文件及POJO類。

這幾步直接參考這篇文章,http://blog.csdn.net/m_eve/article/details/70850546

(4)Java項目中創建一個測試類Test.java,並完成以下操作。

1)class表中添加“101”和“102”兩個班級

2)student表中添加4個學生,包括“101”班的“李逵”和“林沖”,“102”班的“孫權”和“周瑜”。

(1)testz.java

package com.entity;

import java.util.Iterator;
import java.util.Set;

import org.hibernate.Session;
import a006.HibernateSessionFactory;

public class testz {
	Session s1 = HibernateSessionFactory.getSession();
	
	public Class1 getClass(int id){
		 Session s1 = HibernateSessionFactory.getSession();
		 Class1 dep = (Class1)s1.get(Class1.class, id);
		 s1.close();
		 return dep;
	}
	public void ins(){}   //插入班級
	public void ins(String cname1){

		Class1 dep1 = new Class1();			
		dep1.setCname(cname1);    //班級
		s1.save(dep1);
	}
	public void inss(){}  //插入學生
	public void ins(String sname,Class1 dep1){		
			Student stu1 = new Student();
			stu1.setSname(sname);
			stu1.setClass1(dep1);
			s1.save(stu1);
	}
	
	public void del(){}  //刪除學生
	public void del(int id){
		
		Student stu5 = (Student)s1.get(Student.class, id);//學生ID
		s1.delete(stu5);
	}
	
	public void que(){}   //查詢某一個班級的學生
	public void que(int cid){
			
		Class1 dep = (Class1)s1.get(Class1.class, cid);
		Set students = dep.getStudents();
		Iterator it = students.iterator();

		while(it.hasNext()){  //查詢
			Student stu = (Student)it.next();
			System.out.println(stu.getSname());
		}

	}
	
	public void up(){}  //某一學生轉班
	public void up(int sid,int cid){//學生id,班級id
		
		Student stu1 = (Student)s1.get(Student.class, sid);//學生ID
		Class1 dep1 = (Class1)s1.get(Class1.class, cid);   //轉班
		stu1.setClass1(dep1);
	}
}

(2)test.java,每次執行時調用一個方法,將其它方法註釋即可
package com.entity;

import org.hibernate.Session;
import org.hibernate.Transaction;

import a006.HibernateSessionFactory;

public class test {
	public static void main(String[] args) {
		Session s1 = HibernateSessionFactory.getSession();
		Transaction tx = null;
			tx = s1.beginTransaction();
			
//			insert a = new insert();    //插入班級
//			a.ins("101");
//			
//			Class1 dep1 = (Class1)s1.get(Class1.class,1); //插入學生
//			testz b = new testz();  
//			b.ins("林沖",dep1);
//			
//			testz c = new testz();  //刪除學生
//			c.del(6);
			
			testz d = new testz();
			d.up(2, 1);             //將id爲2的學生轉到id爲1的班級
			
//			testz e = new testz();
//			e.que(1);              //查詢id爲1的班級的學生
			tx.commit();
	}
}

最後注意一下,如果你發現沒有辦法添加中文字符,那麼可以參考這篇文章,http://blog.csdn.net/M_Eve/article/details/70763481

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章