14 多对一关联关系的映射与原理分析
来源:互联网 发布:杂志软件哪个好 编辑:程序博客网 时间:2024/05/17 01:26
关联映射
------------------------------------------------
- 多对一(Employee-Deapartment)
- 一对多(Department-Employee)
- 一对一(person-idCard)
- 多对多(teacher-student)
- 组件映射(User-Name)
- 集合映射(set,list,map,bag)
- inverse和cascade(Employee-Department)
------------------------------------------------
多对一(Employee-Department)
映射文件
------------------------------------------------
对象:
//部门(主表)
public class Department{
private int id;
private String name;
}
//员工(副表)
public class Employee{
private int id;
private String name;
// private in departid; //外键
private Department depart; //对象之间的导航
}
------------------------------------------------
映射文件:
Department.hbm.xml
<hibernate-mapping>
package="cn.itcast.hibernate.domain"
<class name="Department"
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
</class>
</hibernate-mapping>
Employee.hbm.xml
<hibernate-mapping>
package="cn.itcast.hibernate.domain"
<class name="Employee"
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<many-to-one name="depart" column="depart_id"/>
</class>
</hibernate-mapping>
-------------------------------------------------
many-to-one:
property的标签下的name处理:从表中将name字段直接赋
给对象的name属性就完了。 对于many-to-one不是简单
的将depart_id赋给depart属性。
它会根据name="depart"
通过反射得到depart类型,然后找到depart的映射文件,
进而得到depart对象
column="depart_id" 为缺省id,默认为depart表中的主键。
如果想让其他列为主键(比如name)
<many-to-one name="depart" column="depart_id" property-ref="name">
static Department add(){
Session s=null;
Transaction tx=null;
try{
Department dpart=new Department();
separt.setName("depart name");
Employee emp=new Employee();
emp.setDepart(depart);//两表建立关联
emp.setName("emp name");
s=HibernateUtil.getSession();
tx=s.beginTransaction();
s.save(depart);
s.save(emp);
tx.commit();
}finally{
fi(s!=null)
s.close();
}
}
输出sql
Hibernate:insert into Department(name) values(?)
Hiberante:insert into Employee(name,dpart_id) values(?,?)
------------------------------------------------
将 s.save(depart);
s.save(emp); 倒换:
输出sql
Hibernate:insert into Employee(name,depart_id) values(?,?)
Hibernate:insert into Department(name) values(?)
------------------------------------------------
- 多对一(Employee-Deapartment)
- 一对多(Department-Employee)
- 一对一(person-idCard)
- 多对多(teacher-student)
- 组件映射(User-Name)
- 集合映射(set,list,map,bag)
- inverse和cascade(Employee-Department)
------------------------------------------------
多对一(Employee-Department)
映射文件
<many-to-one name="depart" column="depart_id">
------------------------------------------------
对象:
//部门(主表)
public class Department{
private int id;
private String name;
}
//员工(副表)
public class Employee{
private int id;
private String name;
// private in departid; //外键
private Department depart; //对象之间的导航
}
------------------------------------------------
映射文件:
Department.hbm.xml
<hibernate-mapping>
package="cn.itcast.hibernate.domain"
<class name="Department"
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
</class>
</hibernate-mapping>
Employee.hbm.xml
<hibernate-mapping>
package="cn.itcast.hibernate.domain"
<class name="Employee"
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<many-to-one name="depart" column="depart_id"/>
</class>
</hibernate-mapping>
-------------------------------------------------
many-to-one:
property的标签下的name处理:从表中将name字段直接赋
给对象的name属性就完了。 对于many-to-one不是简单
的将depart_id赋给depart属性。
它会根据name="depart"
通过反射得到depart类型,然后找到depart的映射文件,
进而得到depart对象
column="depart_id" 为缺省id,默认为depart表中的主键。
如果想让其他列为主键(比如name)
<many-to-one name="depart" column="depart_id" property-ref="name">
static Department add(){
Session s=null;
Transaction tx=null;
try{
Department dpart=new Department();
separt.setName("depart name");
Employee emp=new Employee();
emp.setDepart(depart);//两表建立关联
emp.setName("emp name");
s=HibernateUtil.getSession();
tx=s.beginTransaction();
s.save(depart);
s.save(emp);
tx.commit();
}finally{
fi(s!=null)
s.close();
}
}
输出sql
Hibernate:insert into Department(name) values(?)
Hiberante:insert into Employee(name,dpart_id) values(?,?)
------------------------------------------------
将 s.save(depart);
s.save(emp); 倒换:
输出sql
Hibernate:insert into Employee(name,depart_id) values(?,?)
Hibernate:insert into Department(name) values(?)
Hibernate:update Employee set name=?,depart_id=?where id=?
0 0
- 14 多对一关联关系的映射与原理分析
- hibernate多对一关联关系的映射与原理分析
- 15 多对一关联关系的检索与原理分析
- Hibernate关联关系映射(多对一关联映射)
- 关联映射的关系(多对一)
- Hibernate关联关系映射-----单向多对一映射配置
- 第九章 关系映射 多对一关联映射
- 【SSH三大框架】Hibernate基础第六篇:多对一关联关系的映射、分析及添加、查询
- 技术分析之Hibernate的关联关系映射之一对多映射
- 技术分析之Hibernate的关联关系映射之多对多映射
- Hibernate学习笔记11--组件关联关系的映射与原理分析
- Hibernate关联映射---多对一实例分析(单项关联)
- Hibernate关联关系映射 一对一 一对多 多对一
- Hibernate关联关系映射(一对多/多对一)
- 【Hibernate】--关联关系映射:一对多和多对一
- Hibernate关系映射(7)_多对一单向关联
- Hibernate关联关系映射_单边多对一
- Hibernate关联关系映射_多对一双边
- 汇编中各寄存器的作用
- JDK8的随笔(07)_行云流水般的Lambda表达式
- Windows10预览
- 【又见C#】CH常用战略回忆 _CodeHunt战场 @ 编程之美2015资格赛
- codevs石子归并 动态规划
- 14 多对一关联关系的映射与原理分析
- 组播技术
- supervisor不产生日志
- 北京SEO优化服务:电子商务网站该如何做SEO优化?
- Launcher中的App索引——Apps字母索引组件
- oracle 查询 分页
- 【猫猫的Unity Shader之旅】之初识屏幕特效
- 一次归档日志被删除导致offline的datafile 无法访问的问题
- 黑马程序员-----String,StringBuffer,StringBulider