Hibernate學習之單向多對一映射

來源:互聯網
上載者:User

標籤:mod   hibernate   單向多對一   date   sch   video   註解   vax   figure   

? 著作權聲明:本文為博主原創文章,轉載請註明出處

說明:該執行個體是通過對應檔和註解兩種方式實現的。可根據自己的需要選擇合適的方式

執行個體:

1.項目結構

2.pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion><groupId>org.hibernate</groupId><artifactId>Hibernate-ManyToOne</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- Junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!-- hibernate --><dependency>    <groupId>org.hibernate</groupId>    <artifactId>hibernate-core</artifactId>    <version>5.1.7.Final</version></dependency><!-- MySQL --><dependency>    <groupId>mysql</groupId>    <artifactId>mysql-connector-java</artifactId>    <version>5.1.42</version></dependency></dependencies></project>

3.Grade.java

package org.hibernate.entity;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import org.hibernate.annotations.GenericGenerator;@Entitypublic class Grade {@Id@GeneratedValue(generator="gid")@GenericGenerator(name="gid", strategy="native")private int gid;// 班號@Column(length=100)private String gname;// 班名private String gdesc;// 描述public Grade() {}public Grade(String gname, String gdesc) {super();this.gname = gname;this.gdesc = gdesc;}public int getGid() {return gid;}public void setGid(int gid) {this.gid = gid;}public String getGname() {return gname;}public void setGname(String gname) {this.gname = gname;}public String getGdesc() {return gdesc;}public void setGdesc(String gdesc) {this.gdesc = gdesc;}}

4.Student.java

package org.hibernate.entity;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;import org.hibernate.annotations.Cascade;import org.hibernate.annotations.GenericGenerator;@Entitypublic class Student {@Id@GeneratedValue(generator="sid")@GenericGenerator(name="sid", strategy="native")private int sid;// 學號@Column(length=100)private String sname;// 姓名@Column(length=2)private String sex;// 性別@ManyToOne(fetch=FetchType.EAGER)@Cascade(value=org.hibernate.annotations.CascadeType.SAVE_UPDATE)@JoinColumn(name="gid")private Grade grade;// 所屬班級 public Student() {}public Student(String sname, String sex, Grade grade) {this.sname = sname;this.sex = sex;this.grade = grade;}public int getSid() {return sid;}public void setSid(int sid) {this.sid = sid;}public String getSname() {return sname;}public void setSname(String sname) {this.sname = sname;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public Grade getGrade() {return grade;}public void setGrade(Grade grade) {this.grade = grade;}}

5.Grade.hbm.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="org.hibernate.entity.Grade" table="grade"><id name="gid" type="java.lang.Integer"><column name="gid"/><generator class="native"/></id><property name="gname" type="java.lang.String"><column name="gname" length="100"></column></property><property name="gdesc" type="java.lang.String"><column name="gdesc"/></property></class></hibernate-mapping>

6.Student.hbm.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="org.hibernate.entity.Student" table="student"><id name="sid" type="java.lang.Integer"><column name="sid"/><generator class="native"/></id><property name="sname" type="java.lang.String"><column name="sname" length="100"/></property><property name="sex" type="java.lang.String"><column name="sex" length="2"/></property><!-- 配置單向的多對一關聯關係 --><many-to-one name="grade" cascade="save-update" column="gid" class="org.hibernate.entity.Grade"/></class></hibernate-mapping>

7.hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><!-- 配置SessionFactory --><session-factory><!-- 設定資料庫串連資訊 --><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql:///hibernate?useSSL=true&amp;characterEncoding=UTF-8</property><property name="connection.username">root</property><property name="connection.password">***</property><!-- 配置hibernate常用屬性 --><property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property><!-- 方言 --><property name="hbm2ddl.auto">update</property><!-- 是否自動建立表結構 --><property name="show_sql">true</property><!-- 是否顯示SQL --><!-- 引入映射類 --><!-- <mapping class="org.hibernate.entity.Student"/><mapping class="org.hibernate.entity.Grade"/> --><!-- 引入對應檔 --><mapping resource="hbm/Student.hbm.xml"/><mapping resource="hbm/Grade.hbm.xml"/></session-factory></hibernate-configuration>

8.TestManyToOne.java

package org.hibernate.test;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.hibernate.entity.Grade;import org.hibernate.entity.Student;import org.junit.After;import org.junit.Before;import org.junit.Test;public class TestManyToOne {private SessionFactory sessionFactory;private Session session;private Transaction transaction;@Beforepublic void before() {// 建立SessionFactory對象sessionFactory = new Configuration().configure().buildSessionFactory();// 擷取Session對象session = sessionFactory.openSession();// 開啟事務transaction = session.beginTransaction();}@Afterpublic void after() {// 提交事務transaction.commit();// 關閉Sessionsession.close();// 關閉SessionFactorysessionFactory.close();}@Testpublic void testAdd() {Grade grade = new Grade("Java一班", "Java應用開發一班");Student student1 = new Student("張三", "男", grade);Student student2 = new Student("李四", "男", grade);session.save(grade);session.save(student1);session.save(student2);}@Testpublic void testQuery() {Student student = session.get(Student.class, 1);System.out.println(student.getSname() + " - " + student.getSex() + " - "+ student.getGrade().getGname() + " - " + student.getGrade().getGdesc());}@Testpublic void testUpdate() {Grade grade = new Grade("Java二班", "Java應用開發二班");Student student = session.get(Student.class, 2);student.setGrade(grade);session.update(student);}@Testpublic void testDelete() {Student student = session.get(Student.class, 2);session.delete(student);}}

9.效果預覽

  9.1 執行testAdd方法

  9.2 執行testQuery方法

  9.3 執行testUpdate方法

  9.4 執行testDelete方法

 

參考:http://www.imooc.com/video/8675

        http://www.imooc.com/video/10089

Hibernate學習之單向多對一映射

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.