1创建数据库:
1 --班级表 2 create table grade 3 ( 4 gid number primary key, --班级ID 5 gname varchar2(50), --班级名称 6 gdesc varchar2(50) --班级介绍 7 ); 8 --学生表 9 create table student 10 ( 11 sid number primary key, --主键ID学生ID 12 sname varchar2(20), --学生姓名 13 sex varchar2(20), --学生性别 14 gid number references grade(gid) ---外键班级ID 15 ); 16 17 --学生证表 18 create table paper 19 ( 20 pid number primary key, 21 pdesc varchar2(100) , 22 sid number references student(sid) not null 23 24 );
二、创建配置文件和持久化类:
学生类
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package entity; /* * 学生类 */ public class Student implements java.io.Serializable { // Fields private static final long serialVersionUID = 1L; private int sid; private String sname; private String sex; //增加班级属性 private Grade grade; //学生证类 private Paper paper; // Constructors /** default constructor */ public Student() { } /** minimal constructor */ public Student(int sid) { this.sid = sid; } /** full constructor */ public Student(int sid, String sname, String sex ) { this.sid = sid; this.sname = sname; this.sex = sex; } // Property accessors public int getSid() { return this.sid; } public void setSid(int sid) { this.sid = sid; } public String getSname() { return this.sname; } public void setSname(String sname) { this.sname = sname; } public String getSex() { return this.sex; } public void setSex(String sex) { this.sex = sex; } public Grade getGrade() { return grade; } public void setGrade(Grade grade) { this.grade = grade; } public Paper getPaper() { return paper; } public void setPaper(Paper paper) { this.paper = paper; } }
学生证类
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package entity; 2 3 /* 4 * 学生证类 5 */ 6 7 public class Paper implements java.io.Serializable { 8 9 // Fields 10 11 private static final long serialVersionUID = 1L; 12 private int pid; 13 private Student student; 14 private String pdesc; 15 16 // Constructors 17 18 /** default constructor */ 19 public Paper() { 20 } 21 22 /** minimal constructor */ 23 public Paper(int pid) { 24 this.pid = pid; 25 } 26 27 /** full constructor */ 28 public Paper(int pid, Student student, String pdesc) { 29 this.pid = pid; 30 this.student = student; 31 this.pdesc = pdesc; 32 } 33 34 // Property accessors 35 36 public int getPid() { 37 return this.pid; 38 } 39 40 public void setPid(int pid) { 41 this.pid = pid; 42 } 43 44 public Student getStudent() { 45 return this.student; 46 } 47 48 public void setStudent(Student student) { 49 this.student = student; 50 } 51 52 public String getPdesc() { 53 return this.pdesc; 54 } 55 56 public void setPdesc(String pdesc) { 57 this.pdesc = pdesc; 58 } 59 60 }
hibernate.cfg.xml配置文件
1 <?xml version='1.0' encoding='UTF-8'?> 2 <!DOCTYPE hibernate-configuration PUBLIC 3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 4 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 5 6 <hibernate-configuration> 7 8 <session-factory> 9 <property name="dialect"> 10 org.hibernate.dialect.Oracle9Dialect 11 </property> 12 <property name="connection.url"> 13 jdbc:oracle:thin:@localhost:1521:orcl 14 </property> 15 <property name="connection.username">root</property> 16 <property name="connection.password">root</property> 17 <property name="connection.driver_class"> 18 oracle.jdbc.OracleDriver 19 </property> 20 <property name="show_sql">true</property> 21 <property name="format_sql">true</property> 22 23 <mapping resource="entity/Grade.hbm.xml" /> 24 <mapping resource="entity/Student.hbm.xml" /> 25 <mapping resource="entity/Paper.hbm.xml" /> 26 27 </session-factory> 28 29 </hibernate-configuration>
Student类配置文件
1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 4 5 <hibernate-mapping> 6 <class name="entity.Student" table="STUDENT" schema="ROOT"> 7 <id name="sid" type="java.lang.Integer"> 8 <column name="SID" precision="22" scale="0" /> 9 <generator class="assigned" /> 10 </id> 11 <property name="sname" type="java.lang.String"> 12 <column name="SNAME" length="20" /> 13 </property> 14 <property name="sex" type="java.lang.String"> 15 <column name="SEX" length="20" /> 16 </property> 17 <!--配置grade属性 --> 18 <many-to-one name="grade" class="entity.Grade" cascade="save-update"> 19 <!--指定学生表中的外键 --> 20 <column name="GID" /> 21 </many-to-one> 22 <!-- 添加学生证的配置 --> 23 <one-to-one name="paper" class="entity.Paper" cascade="all" lazy="false"/> 24 </class> 25 </hibernate-mapping>
Paper类配置文件
1 <?xml version="1.0" encoding="utf-8"?> 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 4 5 <hibernate-mapping> 6 <class name="entity.Student" table="STUDENT" schema="ROOT"> 7 <id name="sid" type="java.lang.Integer"> 8 <column name="SID" precision="22" scale="0" /> 9 <generator class="assigned" /> 10 </id> 11 <property name="sname" type="java.lang.String"> 12 <column name="SNAME" length="20" /> 13 </property> 14 <property name="sex" type="java.lang.String"> 15 <column name="SEX" length="20" /> 16 </property> 17 18 <!-- 添加学生证的配置 --> 19 <one-to-one name="paper" class="entity.Paper" cascade="all" lazy="false" property-ref="student"/> 20 </class> 21 </hibernate-mapping>
测试类
1 package Test; 2 3 import org.hibernate.Session; 4 import org.hibernate.Transaction; 5 import org.hibernate.cfg.Configuration; 6 7 import entity.Paper; 8 import entity.Student; 9 10 public class Demo6 { 11 12 public static void main(String[] args) { 13 findByStu(); 14 } 15 16 public static void save() { 17 18 Student stu1 = new Student(); 19 stu1.setSid(20151109); 20 stu1.setSname("王霸"); 21 stu1.setSex("女"); 22 23 Paper paper=new Paper(); 24 paper.setPid(9001); 25 paper.setPdesc("王霸的学生证"); 26 paper.setStudent(stu1); 27 28 29 stu1.setPaper(paper); 30 31 // 建立session 32 Session session = new Configuration().configure().buildSessionFactory() 33 .openSession(); 34 // 开始事务 35 Transaction transaction = session.beginTransaction(); 36 37 38 // 保存学生证 39 session.save(stu1); 40 // 提交事务 41 transaction.commit(); 42 // 关闭session 43 session.close(); 44 45 } 46 47 public static void find() { 48 // 建立session 49 Session session = new Configuration().configure().buildSessionFactory() 50 .openSession(); 51 Paper paper=(Paper) session.get(Paper.class, 9001); 52 System.out.println(paper.getPid()+paper.getPdesc()); 53 Student stu1=paper.getStudent(); 54 System.out.println(stu1.getSid()+" "+stu1.getSname()); 55 } 56 public static void findByStu() { 57 // 建立session 58 Session session = new Configuration().configure().buildSessionFactory() 59 .openSession(); 60 Student stu=(Student) session.get(Student.class, 20151109); 61 System.out.println(stu.getSname()); 62 Paper paper=stu.getPaper(); 63 System.out.println(paper.getPid()+" "+paper.getPdesc()); 64 } 65 66 }