hibernate练习之单项关联一对多

本文详细介绍了学生与班级的映射关系,包括实体类的设计、映射文件的配置及映射属性的描述。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


实体类

package cn.oneToMany;

import java.io.Serializable;
/**
 * 学生
 * @author Administrator
 *
 */
public class Student implements Serializable{

	private Long sid;
	private String sname;
	private String description;
	
	public Long getSid() {
		return sid;
	}
	public void setSid(Long sid) {
		this.sid = sid;
	}
	public String getSname() {
		return sname;
	}
	public void setSname(String sname) {
		this.sname = sname;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
}

package cn.oneToMany;

import java.io.Serializable;
import java.util.Set;
/**
 * 班级
 * @author Administrator
 *
 */
public class Classes implements Serializable{

	private Long cid;
	private String cname;
	private String description;
	private Set<Student> students;//一的一方写集合,
	
	public Long getCid() {
		return cid;
	}
	public void setCid(Long cid) {
		this.cid = cid;
	}
	public String getCname() {
		return cname;
	}
	public void setCname(String cname) {
		this.cname = cname;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	public Set<Student> getStudents() {
		return students;
	}
	public void setStudents(Set<Student> students) {
		this.students = students;
	}
}

映射文件

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
	<class name="cn.oneToMany.Student" table="student">
		<id name="sid" column="sid" type="java.lang.Long" length="20">
			<generator class="increment"></generator>
		</id>
		<property name="sname" type="java.lang.String" length="20"></property>
		<property name="description" type="java.lang.String" length="200"></property>
	</class>
	
</hibernate-mapping>

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
	
	<class name="cn.oneToMany.Classes" table="classes">
		<id name="cid" type="java.lang.Long" length="20">
			<column name="cid"></column>
			<generator class="increment"></generator>
		</id>
		<property name="cname" type="java.lang.String" length="20"></property>
		<property name="description" type="java.lang.String" length="200"></property>
		
		<!-- 
			set元素和类中的set集合对应
				从外键的角度建立classes和student之间的关系
				从类和类得角度建立classes和student之间的关系
			cascade级联
			inverse是用来维护关系的
				要么是一对多的关系
				要么是多对多的关系
				谁来维护关系:invetse所在的映射文件对应的持久化对象维护关系
							 默认值是false 表示维护关系
							        true  表示不维护关系
		 -->
		<set name="students" cascade="save-update">
			<!-- 
				key是用来描述外键的
				column代表就是外键的名字
			 -->
			<key>
				<column name="cid"></column>
			</key>
			<!-- 
    		 	one-to-many 	描述classes和哪个对象进行关联
    		  -->
			<one-to-many class="cn.oneToMany.Student"/>
		</set>
	</class>
	
</hibernate-mapping>
cascade属性值                        描述
none                在保存、更新或删除当前对象时,忽略其他关联的对象,是cascade属性的默认值
save-update            当通过Session的save()、update()以及savsOrUpdate()方法来保存或者更新当前对象时
                    级联保存所有关联的新建的临时对象,并且级联更新所有关联的游离对象
delete                当通过Session的delete()方法删除当前对象时,级联删除所有关联的对象
all                    包含save-update以及delete的行为,此外,对当前对象执行evict()或lock()操作时,也会对
                    所有关联的持久化对象执行evict()或lock()操作
delete_orphan        删除所有和当前对象解除关联关系的对象
all-delete_orphan    包含all和delete-orphan的行为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值