Hibernate一对多单向关联映射
来源:互联网 发布:东阳美工学徒招聘 编辑:程序博客网 时间:2024/06/09 20:55
一对多关联映射(单向)
1、People.hbm.xml
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping default-lazy="false">
<class name="com.persistent.People" table="people">
<id name="id" column="peopleId" unsaved-value="0">
<generator class="increment">
</generator>
</id>
<property name="name" column="name"></property>
<set name="addresses">
<key column="peopleId" not-null="true"/>
<one-to-many class="com.persistent.Address"/>
</set>
</class>
</hibernate-mapping>
2、address.hbm.xml
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.persistent.Address" table="address">
<id name="id" column="addressId" unsaved-value="0">
<generator class="increment">
</generator>
</id>
<property name="peopleId" column="peopleId"
insert="false" update="false">
</property>
<property name="addressName" column="addressName"></property>
</class>
</hibernate-mapping>
3、测试程序
session.beginTransaction();
List result = session.createQuery("from People").list();
session.getTransaction().commit();
for(int i = 0; i<result.size(); i++){
People people = (People)result.get(i);
System.out.println(people.getId()+" "+people.getName());
Set addresses = people.getAddresses();
for(Iterator it = addresses.iterator(); it.hasNext();){
Address address = (Address)it.next();
System.out.println(address.getId()+" "
+address.getPeopleId()+" "
+address.getAddressName());
}
}
如果加了阴影部分,则运行结果为:
Hibernate: select people0_.peopleId as peopleId0_, people0_.name as name0_ from people people0_
Hibernate: select addresses0_.peopleId as peopleId1_, addresses0_.addressId as addressId1_, addresses0_.addressId as addressId1_0_, addresses0_.peopleId as peopleId1_0_, addresses0_.addressName as addressN3_1_0_ from address addresses0_ where addresses0_.peopleId=?
Hibernate: select addresses0_.peopleId as peopleId1_, addresses0_.addressId as addressId1_, addresses0_.addressId as addressId1_0_, addresses0_.peopleId as peopleId1_0_, addresses0_.addressName as addressN3_1_0_ from address addresses0_ where addresses0_.peopleId=?
1 lucy
2 1
1 1
2 lily
如果不加阴影部分,则运行结果为
Hibernate: select people0_.peopleId as peopleId0_, people0_.name as name0_ from people people0_
1 lucy
Hibernate: select addresses0_.peopleId as peopleId1_, addresses0_.addressId as addressId1_, addresses0_.addressId as addressId1_0_, addresses0_.peopleId as peopleId1_0_, addresses0_.addressName as addressN3_1_0_ from address addresses0_ where addresses0_.peopleId=?
1 1
2 1
2 lily
Hibernate: select addresses0_.peopleId as peopleId1_, addresses0_.addressId as addressId1_, addresses0_.addressId as addressId1_0_, addresses0_.peopleId as peopleId1_0_, addresses0_.addressName as addressN3_1_0_ from address addresses0_ where addresses0_.peopleId=?
默认default-lazy为true,只有当程序中访问到People的Addresses时才会从数据库中加载。设置为false后,程序在加载People时立即就把它关联的Addresses全部加载进来。
- Hibernate一对多单向关联映射
- Hibernate映射一对多单向关联(之一)
- Hibernate一对多关联映射—单向
- hibernate一对多关联映射—单向
- hibernate一对多关联映射—单向
- 一对多单向关联映射
- Hibernate映射一对多单向关联(之二)
- Hibernate映射一对多单向关联(之三)
- Hibernate关系映射(8)_一对多单向关联
- Hibernate关联关系映射-----单向一对多配置
- Hibernate xml一对多关联映射 单向+双向
- 【Hibernate步步为营】--(一对多映射)之单向关联
- 【Hibernate步步为营】--(一对多映射)之单向关联
- hibernate之关于一对多单向关联映射
- 【Hibernate步步为营】--(一对多映射)之单向关联
- Hibernate(五)——一对多单向关联映射
- 【Hibernate步步为营】--(一对多映射)之单向关联
- hibernate-关系映射(一对多单向关联)-9
- 例行性命令的建立---linux下定时任务
- 任务调度的crond常驻命令
- linux下vpn客户端(pptp)的配置
- Linux环境主要数据库简介
- 开山之作 一无是处
- Hibernate一对多单向关联映射
- 正式进驻1410实验室!
- FTP协议完全详解
- Linux系统内核文件Cache管理机制
- 巧设防火墙 封杀特定网址
- 首页-简洁一点再简单一点
- 汤唯气质还不错,喜欢
- perl学习心得之二