-
00:48看截圖查看全部
-
對于inverse屬性的說明; 1、一方的hbm.xml文件的<set>節點的inverse屬性指定了關聯關系的控制方向,默認由one方來維護; 2、關聯關系中,inverse="false"則為主動方,由主動方負責維護關聯關系; 3、在一對多關聯中,設置one方的inverse為true,這將有助于性能的改善。 [ 查看全文 ]查看全部
-
一、單向多對一關聯 (1)簡介 1.在己方(多方)表中的一個外鍵參照另一個表的主鍵 2.通過在多方持有一方的引用實現,需要在多方配置<many-to-one> (2)配置 1.在多方持久類定義一方的引用 private Grade grade;并getter,setter 2.在多方的映射文件中添加 <many-to-one name="指定對一方的引用,即一方引用所定義的屬性grade" class="一方對應的持久化類,即關聯實體類com.imooc.entity.Grade" cloumn="外鍵的列名gid" ></many-to-one> (3)測試 public static void save(){ Grade g=new Grade("Java一班", "Java軟件開發一班"); Student s1=new Student("小米", "女"); Student s2=new Student("小明","男"); //創建多對一的配置 s1.setGrade(g); s2.setGrade(g); Session s=HibernateUtil.getSession(); Transaction t=s.beginTransaction(); s.save(g); s.save(s1); s.save(s2); t.commit(); HibernateUtil.closeSession(s); } 二、雙向多對一關聯 (1)分別在持久化類中定義另一方的引用; 一方:private Set<Student>students=new HashSet<Student>();并setter,getter 多方:private Grade grade;并setter,getter; (2)關聯關系配置 //一方 <set name="一方實體類定義的多方的引用,即多方屬性Students" table="多方的表名Students"> <key column="關聯外鍵的列gid"></key> <one-to-many class="多方實體類的全類名com.imooc.entity.Student" ></one> </set> //多方(同上略) (3)測試(同上略)查看全部
-
//單向多對一之添加學生信息 public static void save(){ Grade g=new Grade("Java一班", "Java軟件開發一班"); Student s1=new Student("小米", "女"); Student s2=new Student("小明","男"); //創建多對一的配置 s1.setGrade(g); s2.setGrade(g); Session session=HibernateUtil.getSession(); Transaction transaction=session.beginTransaction(); session.save(g); session.save(s1); session.save(s2); transaction.commit(); HibernateUtil.closeSession(session);查看全部
-
單向多對一的配置: 1.在多方持久類定義一方的引用 private Grade grade;并getter,setter 2.在多方的映射文件中添加 <many-to-one name="指定對一方的引用,即一方引用所定義的屬性grade" class="一方對應的持久化類,即關聯實體類com.imooc.entity.Grade" cloumn="外鍵的列名gid" ></many-to-one>查看全部
-
單向多對一關聯: 1、多對一的關系和關系數據庫中的外鍵參照關系最匹配,即在己方(多方)的表中的一個外鍵參照另一個表的主鍵; 2、通過在多方持有一方的引用實現,需要在“多”的一端使用<many-to-one>配置查看全部
-
一對多映射 一、簡介 什么是一對多的關系呢? 如同班級與學生的關系,站在班級的角度看,班級為一方,學生為多方,這種關系是單向的。 如何實現一對多的關系呢? 1.在數據庫中,可以通過添加主外鍵的關聯,表現一對多的關系; 2.在java中,通過在一方持有多方的集合實現,即在“一”的一端中使用<set>元素表示持有“多”的一端的對象。 二、實例 (1)創建HibernateUtil工具類 1.hibernate初始化 2.獲取sessionFactory和session對象 3.關閉session對象 (2)在MySQL中創建表 1.創建班級表 2.創建學生表 (3)創建持久化類和映射文件并配置單向一對多關系 a.持久化類 1.創建學生持久化類 2.創建班級持久化類(在一方定義一個多方集合) b.配置映射文件 1.班級映射文件(配置單向一對多關系) 2.學生映射文件 3.hibernate.cfg.xml中指定映射文件、 (4)測試 1.添加和查詢學生信息 2.修改和刪除學生信息查看全部
-
public static void delete(){ //獲取對話 Session session=HibernateUtil.getSession(); // 開啟事務 Transaction tx=session.beginTransaction(); //獲取學生信息2 Student stu=(Student) session.get(Student.class, 2); //刪除學生 如果修改,先創建班級信息g,在將獲得的學生信息添加最后 保存session.save(g); session.delete(stu); //提交事務 tx.commit(); //關閉事物 HibernateUtil.closeSession(session); } //修改學生信息 public static void update(){ Grade g=new Grade("Java二班","Java軟件開發二班"); Session session=HibernateUtil.getSession(); Transaction tx=session.beginTransaction(); Student stu=(Student) session.get(Student.class, 1); g.getStudents().add(stu); session.save(g); tx.commit(); HibernateUtil.closeSession(session);查看全部
-
//添加學生信息 public static void add(){ Grade g=new Grade("java一班","java軟件開發"); Student s1=new Student("李四", "男"); Student s2=new Student("小月","女"); g.getStu().add(s1); g.getStu().add(s2); Session s=HibernateUtil.getSession(); Transaction t=s.beginTransaction(); s.save(g); s.save(s1); s.save(s2); t.commit(); HibernateUtil.closeSession(s); } //通過班級獲取學生信息 public static void getStuByGrade(){ Session s=HibernateUtil.getSession(); Grade g=(Grade) s.get(Grade.class, 1); System.out.println("班級:"+g.getGname()+"班級信息:"+g.getGdesc()); Set<Student> students=g.getStu(); for (Student stu:students) { System.out.println(stu.getSname()+" "+stu.getSex()); } }查看全部
-
inverse在哪個文件中配置中設置關系one-many為true說明不需要用那個文件保持關系 cascade為查看全部
-
cascade屬性 級聯 用于自動持久化對象查看全部
-
inverse屬性查看全部
-
導航 關聯方向,只能通過班級查學生,而不能通過學生知道班級查看全部
-
配置單向的一對多關聯關系查看全部
-
設定連接數據庫時指定的字符集查看全部
舉報
0/150
提交
取消