Hibernate作业(一)

黄瑞生0127

编写代码实现Hibernate关联映射。

学生与身份证是一对一关联;

学生实体类:

package com.hrs.entity;

public class Student {
private Integer StudentId;
private Idcard idcard;
public Idcard getIdcard() {
	return idcard;
}
public void setIdcard(Idcard idcard) {
	this.idcard = idcard;
}
public Integer getStudentId() {
	return StudentId;
}
public void setStudentId(Integer studentId) {
	StudentId = studentId;
}
public String getStudentName() {
	return StudentName;
}
public void setStudentName(String studentName) {
	StudentName = studentName;
}
public Integer getStudentage() {
	return Studentage;
}
public void setStudentage(Integer studentage) {
	Studentage = studentage;
}
private String StudentName;
private Integer Studentage;
}

身份证实体类:

package com.hrs.entity;

public class Idcard {
			private Integer cardid;
			private Integer cardnum;
			private String cardadd;
			private Student stdent;
			public Student getStdent() {
				return stdent;
			}
			public void setStdent(Student stdent) {
				this.stdent = stdent;
			}
			public Integer getCardid() {
				return cardid;
			}
			public void setCardid(Integer cardid) {
				this.cardid = cardid;
			}
			public Integer getCardnum() {
				return cardnum;
			}
			public void setCardnum(Integer cardnum) {
				this.cardnum = cardnum;
			}
			public String getCardadd() {
				return cardadd;
			}
			public void setCardadd(String cardadd) {
				this.cardadd = cardadd;
			}
}

学生类映射文件:

<?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属性:实体类全路径
table属性:数据库表名称 -->
<class name="com.hrs.entity.Student" table="testStudent">
<id name="StudentId" column="StudentId" type="java.lang.Integer">
<generator class="foregin">
<param name="property"> student</param>
</generator>
</id>
<property name="StudentName" column="cardnum" type="java.lang.String"></property>
<property name="Studentage" column="Studentage" type="java.lang.Integer"></property>
<!-- 在用户映射文件中,表示所有角色
使用set标签使用所有联系人,set标签里面有name属性,
属性值写在用户实体类里面表示角色的set集合名称 
table属性:写第三张表名称-->
<!-- 一对多建表有外键,hibernate机制:双向维护外键,在一和多的那一方都配置外键
column属性值:当前映射文件在第三张表的外键名称 -->
<!-- class里面写角色实体类全路径 column里面写角色在第三张表外键名称 -->
<one-to-one name="com.hrs.entity.Idcard" constrained="true"></one-to-one>
</class>
</hibernate-mapping>

身份证类映射文件:

<?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属性:实体类全路径
table属性:数据库表名称 -->
<class name="com.hrs.entity.Idcard" table="testIdcard">
<id name="cardid" column="cardid" type="java.lang.Integer">
<generator class="native"></generator>
</id>
<property name="cardnum" column="cardnum" type="java.lang.Integer"></property>
<property name="cardadd" column="cardadd" type="java.lang.String"></property>
<!-- 在用户映射文件中,表示所有角色
使用set标签使用所有联系人,set标签里面有name属性,
属性值写在用户实体类里面表示角色的set集合名称 
table属性:写第三张表名称-->
<!-- 一对多建表有外键,hibernate机制:双向维护外键,在一和多的那一方都配置外键
column属性值:当前映射文件在第三张表的外键名称 -->
<!-- class里面写角色实体类全路径 column里面写角色在第三张表外键名称 -->
</class>
</hibernate-mapping>
学生与角色是一对多关联;

学生实体类:


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

public class Student {
private Integer StudentId;
private String StudentName;
private Integer Studentage;
public Set<Role> getRoleSet() {
	return RoleSet;
}
public void setRoleSet(Set<Role> roleSet) {
	RoleSet = roleSet;
}
private Set <Role> RoleSet=new HashSet<Role>();
public Integer getStudentId() {
	return StudentId;
}
public void setStudentId(Integer studentId) {
	StudentId = studentId;
}
public String getStudentName() {
	return StudentName;
}
public void setStudentName(String studentName) {
	StudentName = studentName;
}
public Integer getStudentage() {
	return Studentage;
}
public void setStudentage(Integer studentage) {
	Studentage = studentage;
}

}

在这里插入代码片

角色实体类:

package com.hrs.entity;

public class Role {
	private Integer role_id;
	private String role_name;
	private String role_memo;//角色类型
	private Student student;
	public Integer getRole_id() {
		return role_id;
	}
	public void setRole_id(Integer role_id) {
		this.role_id = role_id;
	}
	public String getRole_name() {
		return role_name;
	}
	public void setRole_name(String role_name) {
		this.role_name = role_name;
	}
	public String getRole_memo() {
		return role_memo;
	}
	public void setRole_memo(String role_memo) {
		this.role_memo = role_memo;
	}
	public Student getStudent() {
		return student;
	}
	public void setStudent(Student student) {
		this.student = student;
	}
}

学生实体类映射文件:

<?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属性:实体类全路径
table属性:数据库表名称 -->
<class name="com.hrs.entity.Student" table="t_user">
<id name="StudentId" column="StudentId" type="java.lang.Integer">
<generator class="native"></generator>
</id>
<property name="StudentName" column="StudentName" type="java.lang.String"></property>
<property name="StudentAge" column="StudentAge" type="java.lang.Integer"></property>
<!-- 在客户映射文件中,表示所有联系人
使用set标签使用所有联系人,set标签里面有name属性,
属性值写在客户实体类里面表示联系人的set集合名称 -->
<set name="RoleSet" >
<!-- 一对多建表有外键,hibernate机制:双向维护外键,在一和多的那一方都配置外键
column属性值:外键名称 -->
<key column="studentid"></key>
<!-- 客户所有的联系人,class里面写联系人实体类全路径 -->
<one-to-many class="com.hrs.entity.Role"></one-to-many>
</set>
</class>
</hibernate-mapping>

角色实体类映射文件:

<?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属性:实体类全路径
table属性:数据库表名称 -->
<class name="com.hrs.entity.Role" table="t_role">
<id name="role_id" column="role_id" type="java.lang.Integer">
<generator class="native"></generator>
</id>
<property name="role_name" column="role_name" type="java.lang.String"></property>
<property name="role_memo" column="role_memo" type="java.lang.String"></property>
<!-- 联系人所属的客户
	name属性:因为在联系人实体类使用customer对象表示,写customer名称
	class属性:customer全路径名
	column属性:外键名称
 -->
 <many-to-one name="student" class="com.hrs.entity.Student" column="uid"> </many-to-one>
</class>
</hibernate-mapping>
学生与课程是多对多关联。

学生实体类:

package com.hrs.entity;

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

public class Student {
private Integer StudentId;
private String StudentName;
private Integer StudentAge;
//在学生实体类表示课程用set集合
private Set <Course> CourseSet=new HashSet<Course>();

public Set<Course> getCourseSet() {
	return CourseSet;
}
public void setCourseSet(Set<Course> courseSet) {
	CourseSet = courseSet;
}
public Integer getStudentId() {
	return StudentId;
}
public void setStudentId(Integer studentId) {
	StudentId = studentId;
}
public String getStudentName() {
	return StudentName;
}
public void setStudentName(String studentName) {
	StudentName = studentName;
}
public Integer getStudentAge() {
	return StudentAge;
}
public void setStudentAge(Integer studentAge) {
	StudentAge = studentAge;
}

}


课程实体类:

package com.hrs.entity;

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

public class Course {
private Integer CourseId;
private String CourseName;
private Integer Coursetime;
//在课程实体类表示学生用set集合
private Set <Student> StudentSet=new HashSet<Student>();

public Set<Student> getStudentSet() {
	return StudentSet;
}
public void setStudentSet(Set<Student> studentSet) {
	StudentSet = studentSet;
}
public Integer getCourseId() {
	return CourseId;
}
public void setCourseId(Integer courseId) {
	CourseId = courseId;
}
public String getCourseName() {
	return CourseName;
}
public void setCourseName(String courseName) {
	CourseName = courseName;
}
public Integer getCoursetime() {
	return Coursetime;
}
public void setCoursetime(Integer coursetime) {
	Coursetime = coursetime;
}

}

学生映射文件:

<?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属性:实体类全路径
table属性:数据库表名称 -->
<class name="com.hrs.entity.Student" table="testStudent">
<id name="StudentId" column="StudentId" type="java.lang.Integer">
<generator class="native"></generator>
</id>
<property name="StudentName" column="StudentName" type="java.lang.String"></property>
<property name="StudentAge" column="StudentAge" type="java.lang.Integer"></property>
<!-- 在用户映射文件中,表示所有角色
使用set标签使用所有联系人,set标签里面有name属性,
属性值写在用户实体类里面表示角色的set集合名称 
table属性:写第三张表名称-->
<set name="CourseSet" table="student_course" >
<!-- 一对多建表有外键,hibernate机制:双向维护外键,在一和多的那一方都配置外键
column属性值:当前映射文件在第三张表的外键名称 -->
<key column="studentid"></key>
<!-- class里面写角色实体类全路径 column里面写角色在第三张表外键名称 -->
<many-to-many class="com.hrs.entity.Course" column="courseid"></many-to-many>
</set>
</class>
</hibernate-mapping>

课程映射文件:

<?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属性:实体类全路径
table属性:数据库表名称 -->
<class name="com.hrs.entity.Cuorse" table="testCousr">
<id name="CourseId" column="CourseId" type="java.lang.Integer">
<generator class="native"></generator>
</id>
<property name="CourseName" column="CourseName" type="java.lang.String"></property>
<property name="Coursetime" column="Coursetime" type="java.lang.Integer"></property>
<!-- 在用户映射文件中,表示所有角色
使用set标签使用所有联系人,set标签里面有name属性,
属性值写在用户实体类里面表示角色的set集合名称 
table属性:写第三张表名称-->
<set name="StudentSet" table="student_course" >
<!-- 一对多建表有外键,hibernate机制:双向维护外键,在一和多的那一方都配置外键
column属性值:当前映射文件在第三张表的外键名称 -->
<key column="courseid"></key>
<!-- class里面写角色实体类全路径 column里面写角色在第三张表外键名称 -->
<many-to-many class="com.hrs.entity.Student" column="studentid"></many-to-many>
</set>
</class>
</hibernate-mapping>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值