第六次作业

1.创建实体类

创建学生类,宿舍类和学科类。其中学生类和宿舍类是多对一关系,学生类和学科类是多对多关系。

学生类:

package entity;

import java.util.HashSet;
import java.util.Set;

public class student {
	private int stuID;
	private String name;
	private String sex;
	private department dept;
	private Set<course>courses = new HashSet<course>();
	
	public int getStuID() {
		return stuID;
	}
	public void setStuID(int stuID) {
		this.stuID = stuID;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	
	
	public department getDept() {
		return dept;
	}
	public void setDept(department dept) {
		this.dept = dept;
	}
	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 department {
	private int deptID;
	private int room_number;
	private Set<student> students = new HashSet<student>();
	
	public int getDeptID() {
		return deptID;
	}
	public void setDeptID(int deptID) {
		this.deptID = deptID;
	}
	public int getRoom_number() {
		return room_number;
	}
	public void setRoom_number(int room_number) {
		this.room_number = room_number;
	}
	public Set<student> getStudents() {
		return students;
	}
	public void setStudents(Set<student> students) {
		this.students = students;
	}
	
	
}

学科类:

package entity;

import java.util.HashSet;
import java.util.Set;

public class course {
	private int courseID;
	private String course_name;
	private String classroom;
	private Set<student> students = new HashSet<student>();
	
	public int getCourseID() {
		return courseID;
	}
	public void setCourseID(int courseID) {
		this.courseID = courseID;
	}
	public String getCourse_name() {
		return course_name;
	}
	public void setCourse_name(String course_name) {
		this.course_name = course_name;
	}
	public String getClassroom() {
		return classroom;
	}
	public void setClassroom(String classroom) {
		this.classroom = classroom;
	}
	public Set<student> getStudents() {
		return students;
	}
	public void setStudents(Set<student> students) {
		this.students = students;
	}
	
}

2.创建关联关系映射

学生:

<?xml version="1.0"?>

<!--
  ~ Hibernate, Relational Persistence for Idiomatic Java
  ~
  ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
  ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
  -->
<!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="entity.student" table="t_student">
		<id name="stuID" column="stuID">
			<generator class="native" />
		</id>
		<property name="name" column="name" length="16"/>
		<property name="sex" column="sex" length="16"/>
		<many-to-one name="dept" column="deptID" cascade="save-update"/>
		
		<set name="courses" cascade="all" inverse="true">
			<key column="stuID"></key> 
			<one-to-many class="entity.course"/>
			
		</set>
		
	</class>

</hibernate-mapping>

宿舍:

<?xml version="1.0"?>

<!--
  ~ Hibernate, Relational Persistence for Idiomatic Java
  ~
  ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
  ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
  -->
<!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="entity.department" table="t_department" select-before-update="true" dynamic-update="true">
		<id name="deptID" column="deptID">
			<generator class="native" />
		</id>
		
		<property name="room_number" column="room_number"/>
		
		
		<set name="students" cascade="all" inverse="true">
			<key column="deptID"></key> 
			<one-to-many class="entity.student"/>
			
		</set>
	</class>

</hibernate-mapping>

课程:

<?xml version="1.0"?>


<!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="entity.course" table="t_course" select-before-update="true" dynamic-update="true">
		<id name="courseID" column="courseID">
			<generator class="native" />
		</id>
		
		<property name="course_name" column="course_name" length="100"/>
		<property name="classroom" column="classroom" length="100"/>
		
		<set name="students" cascade="all" inverse="true">
			<key column="courseID"></key> 
			<one-to-many class="entity.student"/>
			
		</set>
	</class>

</hibernate-mapping>

3.创建核心配置文件

<!--
  ~ Hibernate, Relational Persistence for Idiomatic Java
  ~
  ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
  ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
  -->
<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory>
	    <!-- 在控制台显示SQL语句 -->
		<property name="show_sql">true</property>
		<!-- 连接数据库的方言 -->
       <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
		<!-- 连接数据库的驱动名 -->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<!-- 连接数据库的URL -->
		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/database01</property>
		<!-- 连接数据库的用户名 -->
		<property name="hibernate.connection.username">root</property>
		 <!-- 连接数据库的密码 -->
		<property name="hibernate.connection.password">0x3137</property>
		
		<!-- 保证每个线程有一个属于自己的Session对象 -->
		<property name = "hibernate.current_session_context_class">thread</property>
		<!-- 自动生成表 -->
		 <property name="hibernate.hbm2ddl.auto">update</property>
		 
		 
		<mapping resource="entity/student.hbm.xml"/>
		<mapping resource="entity/department.hbm.xml"/>
		<mapping resource="entity/course.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

4.打开数据库

创建数据库database01,与实体类进行连接。

5.编写测试类

实现增删改查功能:

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import javax.jws.soap.SOAPBinding.Use;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.query.Query;
import org.junit.Test;

import dao.HibernateUtil;
import entity.course;
import entity.department;
import entity.student;

public class Main {
@Test
public void save() {
	Session s = null;
	Transaction tx = null;
	try {
		s = HibernateUtil.getSessionFactory().getCurrentSession();
		tx= s.beginTransaction();
		
		course c = new course();
		c.setCourse_name("语文");
		department dept = new department();
		dept.setRoom_number(101);
		
		student stu = new student();
		stu.setName("小田");
		stu.setDept(dept);
		
		
		
		stu.getCourses().add(c);
		s.save(stu);
		
		tx.commit();
	} catch (Exception e) {
		if(tx!=null)
		tx.commit();
	}
}
	@Test
	public void query() {
		Session s = null;
		Transaction tx = null;
		Query<student> query = null;
		try {
			s = HibernateUtil.getSessionFactory().getCurrentSession();
			tx= s.beginTransaction();
			
			query = s.createQuery("from student s where s.name=:name");
			query.setParameter("name", "小田");
		    student stu = query.list().get(0);
		   
		    department  dept = stu.getDept();
		    System.out.println(stu.getName()+"   "+dept.getRoom_number()+"   ");
		    		
			tx.commit();
		} catch (Exception e) {
			if(tx!=null)
			tx.commit();
		}
	}

	@Test
	public void update() {
		Session s = null;
		Transaction tx = null;
		Query<student> query = null;
		try {
			s = HibernateUtil.getSessionFactory().getCurrentSession();
			tx= s.beginTransaction();
			
			query = s.createQuery("from student s where s.name=:name");
			query.setParameter("name", "小田");
		    student stu = query.list().get(0);
		   
		    stu.setName("小章");
		    		
		    s.update(stu);
			tx.commit();
		} catch (Exception e) {
			if(tx!=null)
			tx.commit();
		}
	}
	
	@Test
	public void delete() {
		Session s = null;
		Transaction tx = null;
		Query<student> query = null;
		try {
			s = HibernateUtil.getSessionFactory().getCurrentSession();
			tx= s.beginTransaction();
			
			query = s.createQuery("from student s where s.name=:name");
			query.setParameter("name", "小章");
		    student stu = query.list().get(0);	
		    department  dept = stu.getDept();
		    s.delete(dept);
			tx.commit();
		} catch (Exception e) {
			if(tx!=null)
			tx.commit();
		}
	}
}

 

转载于:https://my.oschina.net/u/3850623/blog/1831361

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值