- --学生证表
- create table paper
- (
- pid number primary key,
- pdesc varchar2(100) ,
- sid number references student(sid) not null
- );
- --课程表
- create table course
- (
- cid int primary key,
- cname varchar2(50),
- cdesc varchar2(200)
- );
- --学生生和课程表的中间表
- create table sc
- (
- sid number references student(sid),
- cid int references course(cid)
- );
学生类
- package entity;
- import java.util.HashSet;
- import java.util.Set;
- /*
- * 学生类
- */
- 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;
- //添加课程
- private Set<Course> courses=new HashSet<Course>();
- // 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;
- }
- public Set<Course> getCourses() {
- return courses;
- }
- public void setCourses(Set<Course> courses) {
- this.courses = courses;
- }
- }
课程类
- package entity;
- import java.util.HashSet;
- import java.util.Set;
- /**
- * 课程类
- */
- public class Course implements java.io.Serializable {
- // Fields
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private int cid;
- private String cname;
- private String cdesc;
- private Set<Student> students = new HashSet<Student>();
- // Constructors
- /** default constructor */
- public Course() {
- }
- /** minimal constructor */
- public Course(int cid) {
- this.cid = cid;
- }
- /** full constructor */
- public Course(int cid, String cname, String cdesc, Set <Student>students) {
- this.cid = cid;
- this.cname = cname;
- this.cdesc = cdesc;
- this.students = students;
- }
- // Property accessors
- public int getCid() {
- return this.cid;
- }
- public void setCid(int cid) {
- this.cid = cid;
- }
- public String getCname() {
- return this.cname;
- }
- public void setCname(String cname) {
- this.cname = cname;
- }
- public String getCdesc() {
- return this.cdesc;
- }
- public void setCdesc(String cdesc) {
- this.cdesc = cdesc;
- }
- public Set<Student> getStudents() {
- return students;
- }
- public void setStudents(Set<Student> students) {
- this.students = students;
- }
- }
hibernate.cfg.xml
- <?xml version='1.0' encoding='UTF-8'?>
- <!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
- <hibernate-configuration>
- <session-factory>
- <property name="dialect">
- org.hibernate.dialect.Oracle9Dialect
- </property>
- <property name="connection.url">
- jdbc:oracle:thin:@localhost:1521:orcl
- </property>
- <property name="connection.username">root</property>
- <property name="connection.password">root</property>
- <property name="connection.driver_class">
- oracle.jdbc.OracleDriver
- </property>
- <property name="show_sql">true</property>
- <property name="format_sql">true</property>
- <mapping resource="entity/Grade.hbm.xml" />
- <mapping resource="entity/Student.hbm.xml" />
- <mapping resource="entity/Paper.hbm.xml" />
- <mapping resource="entity/Course.hbm.xml" />
- </session-factory>
- </hibernate-configuration>
学生类配置文件
- <?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping>
- <class name="entity.Student" table="STUDENT" schema="ROOT">
- <id name="sid" type="java.lang.Integer">
- <column name="SID" precision="22" scale="0" />
- <generator class="assigned" />
- </id>
- <property name="sname" type="java.lang.String">
- <column name="SNAME" length="20" />
- </property>
- <property name="sex" type="java.lang.String">
- <column name="SEX" length="20" />
- </property>
- <!--配置grade属性 -->
- <many-to-one name="grade" class="entity.Grade" cascade="save-update">
- <!--指定学生表中的外键 -->
- <column name="GID" />
- </many-to-one>
- <!-- 添加学生证的配置 -->
- <one-to-one name="paper" class="entity.Paper" cascade="all" lazy="false" property-ref="student"/>
- <!--添加课程 -->
- <set name="courses" cascade="save-update" table="SC">
- <key column="sid" />
- <many-to-many class="entity.Course" column="cid"/>
- </set>
- </class>
- </hibernate-mapping>
课程类配置文件
- <?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <!--
- Mapping file autogenerated by MyEclipse Persistence Tools
- -->
- <hibernate-mapping>
- <class name="entity.Course" table="COURSE" schema="ROOT">
- <id name="cid" type="java.lang.Integer">
- <column name="CID" precision="22" scale="0" />
- <generator class="assigned" />
- </id>
- <property name="cname" type="java.lang.String">
- <column name="CNAME" length="50" />
- </property>
- <property name="cdesc" type="java.lang.String">
- <column name="CDESC" length="200" />
- </property>
- <set name="students" table="SC" cascade="save-update" inverse="true">
- <key column="cid" />
- <many-to-many class="entity.Student" column="sid" />
- </set>
- </class>
- </hibernate-mapping>
测试类
- package Test;
- import java.util.Set;
- import org.hibernate.Session;
- import org.hibernate.Transaction;
- import org.hibernate.cfg.Configuration;
- import entity.Course;
- import entity.Student;
- public class Demo7 {
- public static void main(String[] args) {
- delte();
- }
- public static void save(){
- Student stu1 = new Student();
- stu1.setSid(201503011);
- stu1.setSname("赵云");
- stu1.setSex("男");
- //课程
- Course c1=new Course();
- c1.setCid(1111);
- c1.setCname("长枪阵");
- c1.setCdesc("杀进杀出");
- Course c2=new Course();
- c2.setCid(2222);
- c2.setCname("大刀");
- c2.setCdesc("青龙偃月刀");
- stu1.getCourses().add(c1);
- stu1.getCourses().add(c2);
- Session session =new Configuration().configure().buildSessionFactory().openSession();
- Transaction tran=session.beginTransaction();
- session.save(stu1);
- tran.commit();
- session.close();
- }
- public static void find(){
- Session session =new Configuration().configure().buildSessionFactory().openSession();
- Course c=(Course) session.get(Course.class, 1111);
- System.out.println(c.getCid()+"\t"+c.getCname()+"\t"+c.getCdesc());
- Set<Student> stus=c.getStudents();
- for (Student s : stus) {
- System.out.println(s.getSname());
- }
- session.close();
- }
- public static void update(){
- Session session =new Configuration().configure().buildSessionFactory().openSession();
- Student stu=(Student) session.get(Student.class, 201509009);
- Course cou=(Course) session.get(Course.class, 2222);
- Transaction tran=session.beginTransaction();
- stu.getCourses().add(cou);
- session.update(stu);
- tran.commit();
- session.close();
- }
- public static void delte(){
- Session session =new Configuration().configure().buildSessionFactory().openSession();
- Student stu=(Student) session.get(Student.class, 201509009);
- Course cou=(Course) session.get(Course.class, 2222);
- Transaction tran=session.beginTransaction();
- stu.getCourses().remove(cou);
- session.update(stu);
- tran.commit();
- session.close();
- }
- }