-
一對多的表
查看全部 -
一、在MyEclipse中添加數據庫連接 1.打開數據庫視圖 Open Perspective-->MyEclipse Database Explorer 或Window-->Show View-->Other-->MyEclipse Database-->DB Browser 2.New Database Connection Driver 二、實現為項目添加Hibernate支持 右擊項目-->MyEclipse-->Add Hibernaet Capabilities-->選擇hibernate版本(越高越好)-->...-->選擇數據庫連接-->... 三、使用MyEclipse反向工程生成映射關系 1.在MyEclipse中添加數據庫連接 2.添加Hibernate支持,生成配置文件 3.反向生成映射:在DB Browser里選中表->Hibernate Reverse Engineering:填寫Java src folder, Java package;勾選Create POJO;勾選Create Data Object,記得去掉Create abstract class;->指定Id Generator->選中表,勾選Include referenced talbes(A->B)和Include referenced talbes(A<-B)
查看全部 -
使用MyEclipse反向工程生成映射關系 1.在MyEclipse中添加數據庫連接 2.添加Hibernate支持,生成配置文件 3.反向生成映射:在DB Browser里選中表->Hibernate Reverse Engineering:填寫Java src folder, Java package;勾選Create POJO;勾選Create Data Object,記得去掉Create abstract class;->指定Id Generator->選中表,勾選Include referenced talbes(A->B)和Include referenced talbes(A<-B)
查看全部 -
3、實現為項目添加Hibernate支持 右擊項目-->MyEclipse-->Add Hibernaet Capabilities-->選擇hibernate版本(越高越好)-->...-->選擇數據庫連接-->.. 它能生成XXX.cfg.xml 文件還能生成HibernateSessionFactory工具類簡化我們的操作
查看全部 -
實現單向一對多: 在one方的實體中添加保存many方的集合 在one放的配置文件中添加<one-to-many>配置 實現單向多對一: 在many方的實體中添加one方的引用 在many方的配置文件中添加<many-to-one>配置 常用屬性: cascade:設置級聯關系 inverse:設置由哪一方維護關聯關系
查看全部 -
inverse和cascade屬性 一、inverse屬性 1、一方的hbm.xml文件的<set>節點的inverse屬性指定了關聯關系的控制方向,默認由one方來維護; 2、關聯關系中,inverse="false"則為主動方,由主動方負責維護關聯關系; 3、在一對多關聯中,設置one方的inverse為true,這將有助于性能的改善。 二、級聯(cascade)屬性 配置映射文件: //grade映射文件 ? ? ?<!-- 配置單向一對多關系;設置inverse為true,有多方進行關聯關系的維護; 當保存和更新時自動進行級聯操作--> ? ? ?<set name="stu" table="stu" inverse="true" cascade="save-update"> ? ? ? ?<!-- 指定關聯的外鍵列 --> ? ? ? ?<key column="gid"></key> ? ? ? ?<one-to-many class="com.entity.Student"/> ? ? ?</set> //student映射文件 <many-to-one name="grade" class="com.entity.Grade" column="gid" cascade="all"></many-to-one> 三、測試---信息查詢 public static void findGradeByStudent(){ Session session=HibernateUtil.getSession(); Student s1=(Student)session.get(Student.class, 2); System.out.println(s1.getSid()+","+s1.getSname()+","+s1.getSex()); Grade g=s1.getGrade(); System.out.println(g.getGid()+","+g.getGname()+","+g.getGdesc()); HibernateUtil.closeSession(session); }
查看全部 -
cascade屬性 當設置了cascade屬性不為none時,Hibernate會自動持久化所關聯的對象. cascade屬性的設置會帶來性能上的變動,需謹慎設置. 在<set>標簽與<many-to-one>標簽中都有cascade屬性. 如果在<set>設置了cascade="save-update":則當"一方"的對象通過session.save()方法保存在數據庫中時,會自動進行級聯操作,即保存"一方"的對象進數據庫時也會把在"一方"對象中的Set集合中的"多方"對象保存進數據庫.因此就可以省寫session.save("多方的對象"). 也可以在<many-to-one>中添加cascade="save-update"屬性,即當保存"多方"的對象進數據庫時,如果數據庫不存在此"多方"對象中的"一方"對象,那么會進行級聯操作,會把此"一方"對象添加到數據庫中. cascade可取: all:所有情況下均進行關聯操作,即save-update和delete. none:所有情況下均不進行關聯操作,這是默認值. save-update:在執行save/update/saveOrUpdate時進行關聯操作. delete:在執行delete 時進行關聯操作. all-delete-orphan:當一個節點在對象圖中成為孤兒節點時,刪除該節點.
查看全部 -
對于inverse屬性的說明; 1、一方的hbm.xml文件的<set>節點的inverse屬性指定了關聯關系的控制方向,默認由one方來維護; 2、關聯關系中,inverse="false"則為主動方,由主動方負責維護關聯關系; 3、在一對多關聯中,設置one方的inverse為true,這將有助于性能的改善。 ? ? ?<!-- 配置單向一對多關系,設置inverse為true,有多方進行關聯關系的維護 --> ? ? ?<set name="stu" table="stu" inverse="true"> ? ? ? ?<!-- 指定關聯的外鍵列 --> ? ? ? ?<key column="gid"></key> ? ? ? ?<one-to-many class="com.entity.Student"/> ? ? ?</set>
查看全部 -
<!-- ? 配置單向的一對多關聯關系(班級->學生) ? ?--> <set name="students" table="student"> <!-- 指定關聯的外鍵列 --> <key column="gid"></key> <one-to-many class="com.imooc.entity.Student" /> </set> <!-- ? 配置單向的多對一關聯關系(學生->班級) ? ?--> <many-to-one name="grade" class="com.imooc.entity.Grade" column="gid"></many-to-one>
查看全部 -
配置雙向的關聯關系: 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); }
查看全部 -
單向多對一關系: 測試代碼。 ?*在一對多關系中,在一方建立多方的集合。然后將多方添加進集合,進行保存。 ?*在多對一關系中,在多方建立一方的引用。然后對一方的引用賦值,進行保存。 //單向多對一之添加學生信息 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.在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.修改和刪除學生信息
查看全部 -
在數據庫中創建表: create table grade( ? gid int primary key, ? gname varchar(20) not null, ? gdesc varchar(50) ); create table student( ? sid int primary key, ? sname varchar(20) not null, ? sex varchar(2), ? gid int ? ); alter table student add constraint fk_student_gid foreign key (gid) references grade(gid);
查看全部 -
Myeclipse配置hibernate步驟:(推薦手動配置) 1.java project -> -> myeclipse -> add hibernate capabilities ->.... 2.手動添加hibernate的jar包,新建lib目錄,復制jar包入內;再進行Hibernate.cfg.xml配置 所有 XML 文檔中的文本均會被解析器解析。只有 CDATA 區段(CDATA section)中的文本會被解析器忽略。 CDATA全稱為character data(字符數據),在編寫xml文檔時,時常需要顯示字母,數字和其他的符號本身,比如 "<""&",而在xml中,這些字符已經有特殊的含義,這就需要用到CDATA語法,語法格式如下: <![CDATA[這里放置需要顯示的字符]]> 數據庫連接URL,使用CDATA包含是為了不讓解析CDATA內部的特殊符號 ?如"&",如果不用CDATA則用"&"來代替"&"
查看全部
舉報