hibernate一对一,一对多,多对一,多对多关联映射的具体范例

1.One to one(基于外键的1对1)(单向)

实体类

Book.java

	private int id;
	private String bookname;
	private User user;

User.java

	private Integer id;
	private String username;
    private String password;

配置文件

Book.hbm.xml

<class name="com.hxzy.hibernate.entity.Book" table="t_book1">
		<id name="id">
			<generator class="native"></generator>
		</id>
		<property name="bookname"></property>
		<many-to-one name="user" column="userid" unique="true" cascade="all"></many-to-one>
</class>

User.hbm.xml

<class name="com.hxzy.hibernate.entity.User" table="t_user1">
       	<id name="id">
       		<generator class="native"></generator>
       	</id>
       	<property name="username"></property>
       	<property name="password"></property>
</class>

数据表结构

Book表

字段名字段类型
idNumber(主键)
booknameVarchar2
userid(外键关联,唯一键)Number

User表

字段名字段类型
idNumber(主键)
usernameVarchar2
passwordVarchar2

2.One to one(基于主键的1对1)(单向)

实体类

Person.java

	private int id;
	private String username;
	private Address address;

Address.java

	private int id;
	private String addrName;

配置文件

Person.hbm.xml

<class name="com.hxzy.hibernate.entity.Person" table="t_person1">
		<id name="id" column="addrid">
			<generator class="foreign">
				<param name="property">address</param>
			</generator>
		</id>
		<property name="username"></property>
		<!-- constrained  使当前主键添加上外键约束 -->
		<one-to-one name="address" constrained="true"></one-to-one>
</class>

Address.hbm.xml

<class name="com.hxzy.hibernate.entity.Address" table="t_Address1">
       	<id name="id" column="addrid">
       		<generator class="native"></generator>
       	</id>
       	<property name="addrName"></property>
</class>

数据表结构

Tips:相当于直接把Address的id当成Person的id

Person表

字段名字段类型
addrid(外键关联)Number(主键)
usernameVarchar2

Address表

字段名字段类型
addridNumber(主键)
addrNameVarchar2

3.Many to one多对一(单向)

实体类

多本书对应一个用户

Book.java

	private int id;
	private String bookname;
	private User user;

User.java

	private Integer id;
	private String username;
	private String password;

配置文件

Book.hbm.xml

<class name="com.hxzy.hibernate.entity.Book" table="t_book1">
		<id name="id">
			<generator class="native"></generator>
		</id>
		<property name="bookname"></property>
		<many-to-one name="user" column="userid" cascade="all"></many-to-one>
</class>

User.hbm.xml

<class name="com.hxzy.hibernate.entity.User" table="t_user1">
       	<id name="id">
       		<generator class="native"></generator>
       	</id>
       	<property name="username"></property>
       	<property name="password"></property>
</class>

数据表结构

Book表

字段名字段类型
idNumber(主键)
booknameVarchar2
userid(外键关联)Number

User表

字段名字段类型
idNumber(主键)
usernameVarchar2
passwordVarchar2

4.One to many一对多(单向)

实体类

一个班级对应多个学生

Clazz.java

	private int id;
	private String clsName;
	private Set<Student> students = new HashSet<Student>();	

Student.java

	private int id;
	private String stuName;

配置文件

Clazz.hbm.xml

<class name="com.hxzy.hibernate.entity.Clazz" table="t_Clazz1">
		<id name="id" column="clsid">
			<generator class="native"></generator>
		</id>
		<property name="clsName"></property>
		<set name="students">
			<key column="clsid" not-null="true"></key>
			<one-to-many class="com.hxzy.hibernate.entity.Student"/>
		</set>
</class>

Student.hbm.xml

<class name="com.hxzy.hibernate.entity.Student" table="t_Student1">
		<id name="id" column="stuid">
			<generator class="native"></generator>
		</id>
		<property name="stuName"></property>
</class>

数据表结构

Clazz表

字段名字段类型
clsidNumber(主键)
clsNameVarchar2
passwordVarchar2

Student表

字段名字段类型
stuidNumber(主键)
stuNameVarchar2
clsid(外键)Number

5.Many to many多对多(单向)

实体类

多个课程对应多个学生

Course.java

	private int id;
	private String courseName;
	private Set<Student> students = new HashSet<Student>();	

Student.java

	private int id;
	private String stuName;

配置文件

Course.hbm.xml

<class name="com.hxzy.hibernate.entity.Course" table="t_Course1">
		<id name="id" column="courseid">
			<generator class="native"></generator>
		</id>
		<property name="courseName"></property>
		<set name="students" table="t_course_student">
			<key column="courseid"></key>
			<many-to-many column="stuid" class="com.hxzy.hibernate.entity.Student"></many-to-many>
		</set>
</class>

Student.hbm.xml

<class name="com.hxzy.hibernate.entity.Student" table="t_Student1">
		<id name="id" column="stuid">
			<generator class="native"></generator>
		</id>
		<property name="stuName"></property>
</class>

数据表结构

Course表

字段名字段类型
courseidNumber(主键)
courseNameVarchar2

Student表

字段名字段类型
stuidNumber(主键)
stuNameVarchar2

中间表

字段名字段类型
Courseid(关联)Number(主键)
Stuid(关联)Number(主键)

6.Many to many多对多(双向)

实体类

多个课程对应多个学生

Course.java

	private int id;
	private String courseName;
	private Set<Student> students = new HashSet<Student>();	

Student.java

	private int id;
	private String stuName;
	private Set<Course> courses = new HashSet<Course>();

配置文件

Course.hbm.xml

<class name="com.hxzy.hibernate.entity.Course" table="t_Course1">
		<id name="id" column="courseid">
			<generator class="native"></generator>
		</id>
		<property name="courseName"></property>
		<set name="students" table="t_course_student">
			<key column="courseid"></key>
			<many-to-many column="stuid" class="com.hxzy.hibernate.entity.Student"></many-to-many>
		</set>
</class>

Student.hbm.xml

<class name="com.hxzy.hibernate.entity.Student" table="t_Student1">
		<id name="id" column="stuid">
			<generator class="native"></generator>
		</id>
		<property name="stuName"></property>
<!-- 将一方的inverse属性设置为true,即将主外键的关系交由另一方来维护 -->
		<set name="courses" inverse="true" table="t_course_student">
			<key column="stuid"></key>
			<many-to-many column="courseid" 						class="com.hxzy.hibernate.entity.Course"></many-to-many>
		</set>
</class>

数据表结构

Course表

字段名字段类型
courseidNumber(主键)
courseNameVarchar2

Student表

字段名字段类型
stuidNumber(主键)
stuNameVarchar2

中间表

字段名字段类型
Courseid(关联)Number(主键)
Stuid(关联)Number(主键)

7.One to one(基于外键的1对1)(双向)

实体类

Book.java

	private int id;
	private String bookname;
	private User user;

User.java

	private Integer id;
	private String username;
	private String password;
	private Book book;

配置文件

Book.hbm.xml

<class name="com.hxzy.hibernate.entity.Book" table="t_book1">
		<id name="id">
			<generator class="native"></generator>
		</id>
		<property name="bookname"></property>
		<many-to-one name="user" column="userid" unique="true" cascade="all"></many-to-one>
</class>

User.hbm.xml

<class name="com.hxzy.hibernate.entity.User" table="t_user1">
		<id name="id">
			<generator class="native"></generator>
		</id>
		<property name="username"></property>
		<property name="password"></property>
		<one-to-one name="book" property-ref="user"></one-to-one>
</class>

数据表结构

Book表

字段名字段类型
idNumber(主键)
booknameVarchar2
userid(外键关联,唯一键)Number

User表

字段名字段类型
idNumber(主键)
usernameVarchar2
passwordVarchar2

8.One to one(基于主键的1对1)(双向)

实体类

Person.java

	private int id;
	private String username;
	private Address address;

Address.java

	private int id;
	private String addrName;
	private User user;

配置文件

Person.hbm.xml

<class name="com.hxzy.hibernate.entity.Person" table="t_person1">
		<id name="id" column="addrid">
			<generator class="foreign">
				<param name="property">address</param>
			</generator>
		</id>
		<property name="username"></property>
		<!-- constrained  使当前主键添加上外键约束 -->
		<one-to-one name="address" constrained="true"></one-to-one>
</class>

Address.hbm.xml

<class name="com.hxzy.hibernate.entity.Address"
		table="t_Address1">
		<id name="id" column="addrid">
			<generator class="native"></generator>
		</id>
		<property name="addrName"></property>
		<one-to-one name="person"></one-to-one>
</class>

数据表结构

Tips:相当于直接把Address的id当成Person的id

Person表

字段名字段类型
addrid(外键关联)Number(主键)
usernameVarchar2

Address表

字段名字段类型
addridNumber(主键)
addrNameVarchar2

9.一对多,多对一(双向)

实体类

Student.java

	private int id;
	private String stuName;	
	private Clazz clazz;

Clazz.java

	private int id;
	private String clsName;
	private Set<Student> students = new HashSet<Student>();

配置文件

Student.hbm.xml

<class name="com.hxzy.hibernate.entity.Student" table="t_Student1">
		<id name="id" column="stuid">
			<generator class="native"></generator>
		</id>
		<property name="stuName"></property>
		<many-to-one name="clazz" column="clsid" cascade="all"/>
</class>

Clazz.hbm.xml

<class name="com.hxzy.hibernate.entity.Clazz" table="t_Clazz1">
		<id name="id" column="clsid">
			<generator class="native"></generator>
		</id>
		<property name="clsName"></property>
		<set name="students" inverse="true">
			<key column="clsid" not-null="true"></key>
			<one-to-many class="com.hxzy.hibernate.entity.Student"/>
		</set>
</class>

数据表结构

Student表

字段名字段类型
stuidNumber(主键)
stuNameVarchar2
Clsid(外键)Number

Clazz表

字段名字段类型
clsidNumber(主键)
clsNameVarchar2
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值