-
cascade屬性: 1、當設置了cascade屬性不為none時,Hibernate會自動持久化所關聯的對象; 2、cascade屬性的設置會帶來性能上的變動,需要謹慎設置; ———————————————————————————— 屬性值 含義和作用 all 對所有操作進行級聯操作 save-update 執行保存和更新操作時進行級聯操作 delete 執行刪除時進行級聯操作 none 對所有操作不進行級聯操作 ———————————————— 說明: 1.在向Grade添加Student后,保存Grade對象時,能不能不需要顯示的保存Student對象,答案是可以的,可以使用級聯操作:在Grade的映射文件中的<set>節點添加cascade屬性不為none,為"save-update"; 2.在向Student添加Grade后,保存Student對象時,能不能不需要顯示的保存Grade對象,答案是可以的,可以使用級聯操作:在Student的映射文件中的<many-to-one>節點添加cascade屬性不為none,為"save-update".查看全部
-
配置雙向的關聯關系: 1、分別在持久化類中定義另一方的引用; 一方:private Set<Student>students=new HashSet<Student>();并setter、getter 多方:private Grade grade;并setter、getter; 2、在一方映射文件配置一對多屬性集合與在多方配置多對一關聯關系 //在一方配置關聯關系 <set name="一方實體類定義的多方的引用,即多方屬性Students" table="多方的表名"> <key column="關聯外鍵的列gid"></key> <one-to-many class="多方實體類的全類名com.imooc.entity.Student" ></one> </set> //在多方配置關聯關系 <many-to-one name="指定對應的屬性的名稱" class="對應實體類的全類名com.imooc.entity.Grade" column="指定外鍵的列名gid" > </many-to-one> //測試方法 public static void save(){ Grade g=new Grade("Java一班", "Java軟件開發一班"); Student s1=new Student("小米", "女"); Student s2=new Student("小明","男"); //創建多對一的配置 g.getStu().add(s1); g.getStu().add(s2); 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.多對一的關系和關系數據庫中的外鍵參照關系最匹配,即在己方的表中的一個外鍵參照另一個表的主鍵 2.通過在多方持有一方的引用實現,需要在“多”的一端使用<many-to-one>配置 // 在一對多的一方,定義一個集合表示多方 private Set<Students> students = new HashSet<Students>(); <set name="students" table="STUDENTS" inverse="false" lazy="true"> <key> <column name="GID" /> </key> <one-to-many class="com.Students" /> </set>查看全部
-
在"一"保存"多"的集合創建一對多關系: 1.在插入"一"的數據時,首先將"一"的元素(除了建立一對多關系的集合)添加到對應表項,然后根據集合元素到"多"對應的表中更新"多"的參照數據(集合只用于更新"多"的數據,而不會作為"一"的數據保存) 2.可以直接(不用二次查表)通過"一"得到相應的"多",反之不行(導航查詢要注意方向:一到多)查看全部
-
什么是一對多的關系呢? 就像班級和學生。站在班級的角度看。班級和學生就是一對多的關系。單向的 那怎么樣實現這種關系呢? 1.在數據庫中,可以通過添加主外鍵的關聯,表現一對多的關系; 2.在java中,通過在一方持有多方的集合實現,即在“一”的一端中使用<set>元素表示持有“多”的一端的對象。查看全部
-
Hibernate的映射類型: 一對多 (one-to-many) 多對一 (many-to-one) 一對一 (one-to-one) 多對多 (many-to-many)查看全部
-
添加外鍵查看全部
-
soputasmile 感覺老師講的inverse的理解有問題,inverse表示是否將控制權交給對方,為true表示交給對方,自己變成被空方。在一對多中,在一方設置inverse為true的話,g.add(stu),session.save(g),設置級聯為save-update,在數據庫中學生的外鍵其實為空,也就是說,其實在一方設置inverse為true,實際上是表示由多方維護關系,而g.add(stu)是多方在執行,所以沒有維護 時間: 2017-03-22 4查看全部
-
java數據類型對應的hibernate數據類型:查看全部
-
實現為項目添加Hibernate支持 右擊項目-->MyEclipse-->Add Hibernaet Capabilities-->選擇hibernate版本(越高越好)-->...-->選擇數據庫連接-->.. 它能生成XXX.cfg.xml 文件還能生成HibernateSessionFactory工具類簡化我們的操作查看全部
-
MyEclipse 給工程添加hibernate支持 菜單Windws-->Show-->View-->Other,展開MyEclipse Datebase 選擇DB Browser(數據庫視圖) 左側空白右擊,New-->DatebaseDriver 選擇相應數據庫 給連接命名,指定DB URl-->user /password--> Driver JARs :點擊Add JARS 選擇JAR包 可點擊Test Driver 可勾選save password查看全部
-
cascade(級聯)屬性查看全部
-
inverse屬性的用法查看全部
-
雙向一對多映射的建立: 以一對多,多對一的方式配置兩個持久化類的hbm.xml,然后用代碼相互添加對方的引用,就行了。 不過這樣,一對多的hbm.xml會多執行一次維護雙方關系的sql語句,即班級再次設置學生的gid。這樣會影響性能。提高性能的方法要用到inverse屬性。查看全部
-
單向多對一關系: 測試代碼。 *在一對多關系中,在一方建立多方的集合。然后將多方添加進集合,進行保存。 *在多對一關系中,在多方建立一方的引用。然后對一方的引用賦值,進行保存。 //單向多對一之添加學生信息 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); }查看全部
舉報
0/150
提交
取消