框架 hibernate中many-to-one 、one-to-many这2课没听,请简单说明一下什么时候用它们,代码说明。讲得好我加分,分开讲。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一个简单的many-to-one例子:部门和公司一个公司是拥有多个部门的,所以部门对应公司是一个多对一的关系(many-to-one)Company实体类public class Company { private int companyId; private String companyName; public int getCompanyId() { return companyId; } public void setCompanyId(int companyId) { this.companyId = companyId; } public String getCompanyName() { return companyName; } public void setCompanyName(String companyName) { this.companyName = companyName; } }Department 实体类public class Department { private int departmentId; private String departmentName; private Company companyId; public int getDepartmentId() { return departmentId; } public void setDepartmentId(int departmentId) { this.departmentId = departmentId; } public String getDepartmentName() { return departmentName; } public void setDepartmentName(String departmentName) { this.departmentName = departmentName; } public Company getCompanyId() { return companyId; } public void setCompanyId(Company companyId) { this.companyId = companyId; } }如果从数据库的设计角度来看,要实现某一部门所属公司就必须在部门表中添加一个公司的引用,也就是公司Id的外键所以在Department中会有Company类成员 写多了看不清楚 分开写 上面是实体类现在我们做映射文件 用最简单的方式 不考虑性能Company的映射文件Comapny.hbm.xml<?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 package="orm"> <class name="Company"> <id name="companyId"> <generator class="native"/> </id> <property name="companyName"/> </class></hibernate-mapping>Department的映射文件Department.hbm.xml<?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 package="orm"> <class name="Department" > <id name="departmentId"> <generator class="native"/> </id> <property name="DepartmentName"/> <!-- <many-to-one>在"多"的一端加入一个外键, 指向“一”的一端,这个外键是由<many-to-one>中的column属性定义的, 如果忽略了这个属性,那么默认的外键与实体的属性一致。 --> <many-to-one name="companyId" column="companyId" class="Company"/> </class></hibernate-mapping> 数据的操作就不用再多说了吧......下面说说on-to-many上面是部门对应公司是一个 many-to-one反过来公司对应部门就是一个 one-to-many一个公司可以拥有多个部门实体类Department中不再拥有Company的字段而部门对于公司来说是一个集合所以Company中有一个用于保存部门的集合可以是List或着Set(建议使用泛型)我还是写一下吧......Company实体import java.util.Set;public class Company { private int companyId; private String companyName; private Set<Department> departments ; public int getCompanyId() { return companyId; } public void setCompanyId(int companyId) { this.companyId = companyId; } public String getCompanyName() { return companyName; } public void setCompanyName(String companyName) { this.companyName = companyName; } public Set<Department> getDepartments() { return departments; } public void setDepartments(Set<Department> departments) { this.departments = departments; } }Department实体public class Department { private int departmentId; private String departmentName; public int getDepartmentId() { return departmentId; } public void setDepartmentId(int departmentId) { this.departmentId = departmentId; } public String getDepartmentName() { return departmentName; } public void setDepartmentName(String departmentName) { this.departmentName = departmentName; }} 关于URL是否要线程安全的问题 java遍历问题 用servlet写程序时候遇到一个小问题,大家帮我看看 如何将list列表中一个位置不固定的人名提取出来,插入到第一位,其他人名依次后排! 急!!!!struts2的几个奇怪的问题 问一个超简单的javascript的问题 关于Tomcat4.12下的发布问题 如何让Tomcat对url的大小写不敏感 一个EJB超时问题。 WebLogic配置ConnectionPool就这么难啊 怎样在hibernate中用一个普通属性做外键 怎么使用 filter 限制系统登录程序
一个公司是拥有多个部门的,所以部门对应公司是一个多对一的关系(many-to-one)Company实体类public class Company {
private int companyId;
private String companyName; public int getCompanyId() {
return companyId;
} public void setCompanyId(int companyId) {
this.companyId = companyId;
} public String getCompanyName() {
return companyName;
} public void setCompanyName(String companyName) {
this.companyName = companyName;
}
}
Department 实体类public class Department {
private int departmentId;
private String departmentName;
private Company companyId; public int getDepartmentId() {
return departmentId;
} public void setDepartmentId(int departmentId) {
this.departmentId = departmentId;
} public String getDepartmentName() {
return departmentName;
} public void setDepartmentName(String departmentName) {
this.departmentName = departmentName;
} public Company getCompanyId() {
return companyId;
} public void setCompanyId(Company companyId) {
this.companyId = companyId;
}
}
如果从数据库的设计角度来看,要实现某一部门所属公司就必须在部门表中添加一个公司的引用,也就是公司Id的外键
所以在Department中会有Company类成员
现在我们做映射文件 用最简单的方式 不考虑性能Company的映射文件Comapny.hbm.xml
<?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 package="orm">
<class name="Company">
<id name="companyId">
<generator class="native"/>
</id>
<property name="companyName"/>
</class>
</hibernate-mapping>
Department的映射文件Department.hbm.xml<?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 package="orm">
<class name="Department" >
<id name="departmentId">
<generator class="native"/>
</id>
<property name="DepartmentName"/>
<!-- <many-to-one>在"多"的一端加入一个外键,
指向“一”的一端,这个外键是由<many-to-one>中的column属性定义的,
如果忽略了这个属性,那么默认的外键与实体的属性一致。
-->
<many-to-one name="companyId" column="companyId" class="Company"/>
</class>
</hibernate-mapping>
反过来公司对应部门就是一个 one-to-many
一个公司可以拥有多个部门实体类Department中不再拥有Company的字段
而部门对于公司来说是一个集合
所以Company中有一个用于保存部门的集合可以是List或着Set(建议使用泛型)我还是写一下吧......Company实体
import java.util.Set;public class Company {
private int companyId;
private String companyName;
private Set<Department> departments ; public int getCompanyId() {
return companyId;
} public void setCompanyId(int companyId) {
this.companyId = companyId;
} public String getCompanyName() {
return companyName;
} public void setCompanyName(String companyName) {
this.companyName = companyName;
} public Set<Department> getDepartments() {
return departments;
} public void setDepartments(Set<Department> departments) {
this.departments = departments;
}
}Department实体public class Department {
private int departmentId;
private String departmentName;
public int getDepartmentId() {
return departmentId;
} public void setDepartmentId(int departmentId) {
this.departmentId = departmentId;
} public String getDepartmentName() {
return departmentName;
} public void setDepartmentName(String departmentName) {
this.departmentName = departmentName;
}}