- 浏览: 1973268 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (509)
- JavaEE (122)
- Oracle数据库 (29)
- JavaScript (37)
- SAP (5)
- MySql数据库 (7)
- JavaSE (4)
- Ajax (1)
- jQuery (13)
- SSH框架 (36)
- Web Service (10)
- JSF框架 (2)
- JBPM (0)
- ireport报表 (2)
- ibatis (5)
- Hibernate (31)
- JSP (11)
- Tomcat 服务器 (20)
- Other (19)
- JavaWeb (4)
- Maven (11)
- OSWorkFlow (10)
- HTML (13)
- Exception汇总 (7)
- SVN (2)
- 笑话 (1)
- JSTL (1)
- WebSphere Message Broker (13)
- ANT命令 (3)
- Liunx (12)
- Struts2 (26)
- Eclipse (6)
- DOS (3)
- Flex (11)
- WebSphere (1)
- 开发常用工具 (3)
- Junit (2)
- EJB (4)
- Struts1.2 (2)
- Jboss (1)
- Android (2)
- Java框架源码解析 (1)
- Spring (4)
- MyBatis (6)
- SpringMVC (4)
- Jetty (2)
- 数据库表设计 (1)
- SSO (4)
最新评论
-
贝塔ZQ:
也可以试试PageOffice插件,觉得更简单点
Jxl操作Excel设置背景、字体颜色、对齐方式、列的宽度 -
jia1208:
...
Could not publish server configuration for Tomcat v6.0 Server at localhost. -
u011274527:
赞
java.io.EOFException java.io.ObjectInputStream$PeekInputStream.readFully 错误 -
旭旭小牛啦:
怎么没哟了,继续赛
jQuery 选择器 -
wzw3919:
100行会报空指针
Java 解压缩zip文件
这次,继续上一次的实例。 记录1对1 主键双向关联.
还是Person和 Address为例.
请直接看代码:
Person_SX_PK_One_to_One:
public class Person_SX_PK_One_to_One { private Integer id; private String name; private Integer age; private Address_SX_PK_One_To_One addressSXPKOneToOne; //getter和setter方法省略 }
Address_SX_PK_One_To_One:
public class Address_SX_PK_One_To_One { private Integer id; private String addressDetail; private Person_SX_PK_One_to_One personSXPKOneToOne; //getter和setter方式省略 }
Hibernate配置文件:
Person_SX_PK_One_to_One.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> <class name="pack.java.model.Person_SX_PK_One_to_One" table="ZHT_PERSON_SX_PK_ONE_TO_ONE"> <id name="id" column="ID"> <generator class="identity"></generator> </id> <property name="name" column="NAME"></property> <property name="age" column="AGE"></property> <!-- 1对1,引用address对象, --> <one-to-one name="addressSXPKOneToOne" class="pack.java.model.Address_SX_PK_One_To_One" fetch="select" lazy="false" cascade="all"> </one-to-one> </class> </hibernate-mapping>
Address_SX_PK_One_To_One.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> <class name="pack.java.model.Address_SX_PK_One_To_One" table="ZHT_ADDRESS_SX_PK_ONE_TO_ONE"> <id column="ID" name="id"> <!-- generator 主键生成策略,配制成foreign,外键,是引用主表person的对象。 --> <generator class="foreign"> <param name="property">personSXPKOneToOne</param> </generator> </id> <property name="addressDetail" column="ADDRESSDETAIL"></property> <!-- 表示在address表中,存在外键约束,外键参考相关表person对象。 --> <one-to-one name="personSXPKOneToOne" constrained="true"></one-to-one> </class> </hibernate-mapping>
在Hibernate.cfg.xml配置刚刚添加的两个映射hibernate.hbm.xml文件。
配置好之后,就进行测试.
写一个Test类,
package pack.java.test; import org.hibernate.Session; import pack.java.hibernate.HibernateSessionFactory; import pack.java.model.Address_SX_PK_One_To_One; import pack.java.model.Person_SX_PK_One_to_One; /** * 1对1,主键双向关联。 * @author Administrator * */ public class HibernateDemoXS_PK_OneToOne { public static void main(String[] args) { HibernateDemoXS_PK_OneToOne demoXSPKOneToOne = new HibernateDemoXS_PK_OneToOne(); Session session = demoXSPKOneToOne.getSession(); //保存操作; demoXSPKOneToOne.savePerson(session); //查询; Person_SX_PK_One_to_One personSXPKOneToOne = demoXSPKOneToOne.queryPersonBy(1); System.out.println("\n结果查询如下:"); System.out.println(personSXPKOneToOne.getId()+","+personSXPKOneToOne.getName()+","+personSXPKOneToOne.getAge()+","+personSXPKOneToOne.getAddressSXPKOneToOne().getAddressDetail()); //更新; demoXSPKOneToOne.updatePersonByPersonID(1); //再次查询; personSXPKOneToOne = demoXSPKOneToOne.queryPersonBy(1); System.out.println("\n结果查询如下:"); System.out.println(personSXPKOneToOne.getId()+","+personSXPKOneToOne.getName()+","+personSXPKOneToOne.getAge()+","+personSXPKOneToOne.getAddressSXPKOneToOne().getAddressDetail()); } /** * 根据Person编号,查询Person对象; * @param personID */ private Person_SX_PK_One_to_One queryPersonBy(Integer personID){ //获取session; Session session = getSession(); Person_SX_PK_One_to_One personSXPKOneToOne = (Person_SX_PK_One_to_One) session.load(Person_SX_PK_One_to_One.class, personID); return personSXPKOneToOne; } /** * 更新操作; * @param personID */ private void updatePersonByPersonID(Integer personID){ //先查询出person,然后,在更新; Person_SX_PK_One_to_One personSXPKOneToOne = queryPersonBy(personID); personSXPKOneToOne.setName("张无忌"); personSXPKOneToOne.setAge(23); //获取session; Session session = getSession(); //开始事务,更新操作, 提交事务。 session.beginTransaction().begin(); session.update(personSXPKOneToOne); session.beginTransaction().commit(); session.close(); } /** * 保存 * @param session */ private void savePerson(Session session){ Person_SX_PK_One_to_One person = new Person_SX_PK_One_to_One(); person.setAge(63); person.setName("张三丰"); Address_SX_PK_One_To_One address = new Address_SX_PK_One_To_One(); address.setAddressDetail("北京市朝阳区东三环北路"); //给person设置address; person.setAddressSXPKOneToOne(address); //给address设置person; address.setPersonSXPKOneToOne(person); //保存操作; session.beginTransaction().begin(); session.save(person); session.beginTransaction().commit(); session.close(); System.out.println("保存成功!"); } /** * 获取session; * @return */ private Session getSession(){ return HibernateSessionFactory.getSession(); } }
控制台输出如下:
保存成功!
结果查询如下:
1,张三丰,63,北京市朝阳区东三环北路
结果查询如下:
1,张无忌,23,北京市朝阳区东三环北路
发表评论
-
大型互联网服务集成平台:springmvc+mybatis+restfull+JMS+webservice+bootstrap
2015-04-12 23:36 22SpringMVC + Mybatis + SpringS ... -
Spring中二级缓存的配置
2011-12-18 20:40 22101.首先,在spring的hibernate配置里(app ... -
Hibernate 配置文件提示
2011-12-11 16:03 10051.这个则是hibernate.cfg.xml文件的头信息.. ... -
Hibernate中二级缓存的配置
2011-10-18 00:26 1234我们知道 hibernate的session提供了一级缓存, ... -
Hibernate 生成策略属性
2011-10-17 14:01 986"assigned" 主键由外部程序负责生 ... -
Exception in thread "main" java.lang.NoClassDefFoundError: javax/transaction/Syn
2011-10-16 18:37 2431Exception in thread "main& ... -
Hibernate缓存的分类
2011-10-16 11:25 1004Hibernate缓存分类: Session ... -
在Hibernate中使用日期函数获取数据库时间
2011-10-04 20:13 1643在Hibernate中使用日期函数获取数据库时间 ... -
Exception in thread "main" org.hibernate.id.IdentifierGenerationException: attem
2011-09-23 00:46 2035今天在做Hibernate中1多1双向关联映射的实例时, ... -
Hibernate关联映射-one to one 外键双向关联.
2011-09-22 00:28 1148说明:双向一对一,是一对多的特例,只需要在多的一方设置成 ... -
Hibernate关联映射-many to many 外键单向关联.
2011-09-20 01:18 1426多对多的实例很多,这里说一个比较简单的例子,而且还是单向 ... -
Hibernate关联映射-many to one 外键单向关联
2011-09-18 00:25 1929多个人可以对应一个地址,也就是所谓的多对一关系,many to ... -
Hibernate关联映射-one to to 主键单向关联
2011-09-17 23:23 1023这次介绍 还是以Person 和 Address 为例. ... -
Hibernate关联映射-one to many外键单向关联
2011-09-15 01:14 4564以下是说明,1对多 单向外键关联 的实例.同样以person ... -
Hibernate关联映射-one to one单向外键关联
2011-09-13 22:00 1604Hibernate的关联关系很多,也非常的复杂. 常见的有 ... -
org.hibernate.TransientObjectException: object references an unsaved transient i
2011-09-12 19:02 1464org.hibernate.TransientObjectEx ... -
org.hibernate.PropertyAccessException: Exception occurred inside getter of pack.
2011-09-12 18:54 6101报如下,异常是因为,在Person对象中.设置的属性类型 ... -
org.hibernate.MappingException: could not instantiate id generator
2011-09-10 14:32 2437在搭建Hibernate的环境时, ... -
配置hibernate.properties 或 hibernate.cfg.xml 文件时,在配置JDBC连接参数时,要配置数据库方言
2011-09-10 13:04 1909各数据库的方言 (配置 hibernate.cfg.xml 时 ... -
java.sql.SQLException: ORA-01747: user.table.column, table.column 或列说明无效
2011-08-17 11:53 7160今天,使用Hibernate框架,做映射时,添加数据时, ...
相关推荐
020 <one-to-one>、<many-to-one>单端关联上的 lazy(懒加载)属性 021 继承关联映射 022 component(组件)关联映射 023 复合主键 关联映射 024 其它 关联映射 025 hibernate 悲观锁、乐观锁 026 hibernate 操作树形...
hibernate一对一主键关联映射(双向关联Person<---->IdCard) 9 hibernate一对一唯一外键关联映射(单向关联Person---->IdCard) 10 hibernate一对一唯一外键关联映射(双向关联Person<---->IdCard) 11 session ...
Hibernate Annotation几种关联映射 一对一(One-To-One) 使用@OneToOne注解建立实体Bean之间的一对一关联。一对一关联有三种情况:(1).关联的实体都共享同样的主键,(2).其中一个实体通过外键关联到另一个实体的主键...
Hibernate想要实现双向的关联就必须在映射文件的两端同时配置<one>,另外还要在主映射的一端采用foreign外键关联属性,下面我们就一起来看一下Java的Hibernate框架中的双向主键关联与双向外键关联方法:
6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联,...
一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联,涉及...
Hibernate参考文档 ...24.4.1. "Typed" one-to-one association 24.4.2. Composite key example 24.4.3. Content based discrimination 24.4.4. Associations on alternate keys 25. 最佳实践(Best Practices)
当然,当你定义Item时,你无法引用这些purchase,因此你无法实现双向关联查询。记住组件是值类型,并且不允许共享引用。某一个特定的Purchase 可以放在Order的集合中,但它不能同时被Item所引用。 其实组合元素的...
6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 三重关联...
7.2.5. 一对多关联(One-to-many Associations) 7.3. 高级集合映射(Advanced collection mappings) 7.3.1. 有序集合(Sorted collections) 7.3.2. 双向关联(Bidirectional associations) 7.3.3. 三重关联...
一对多关联(One-to-many Associations) 7.3. 高级集合映射(Advanced collection mappings) 7.3.1. 有序集合(Sorted collections) 7.3.2. 双向关联(Bidirectional associations) 7.3.3. 三重关联...
符合Java习惯的关系...24.4.1. \"Typed\" one-to-one association 24.4.2. Composite key example 24.4.3. Content based discrimination 24.4.4. Associations on alternate keys 25. 最佳实践(Best Practices)
6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 三重关联...
6.2.5. 一对多关联(One-to-many Associations) 6.3. 高级集合映射(Advanced collection mappings) 6.3.1. 有序集合(Sorted collections) 6.3.2. 双向关联(Bidirectional associations) 6.3.3. 双向关联,...
7.2 映射一对多双向关联关系 156 7.2.1 [set]元素的inverse属性 161 7.2.2 级联删除 163 7.2.3 父子关系 164 7.3 映射一对多双向自身关联关系 165 7.4 改进持久化类 171 7.5 小结 175 7.6 思考题 176 第8章 ...
7.2 映射一对多双向关联关系 156 7.2.1 [set]元素的inverse属性 161 7.2.2 级联删除 163 7.2.3 父子关系 164 7.3 映射一对多双向自身关联关系 165 7.4 改进持久化类 171 7.5 小结 175 7.6 思考题 176 第8章 ...
many-to-one:标签中对于cascade的取值delete,delete-orphan,all-delete-orphan(只用unique属性值不为true不能出现)慎用 cascade:级联属性 none:不做任何级联操作 save-update:对当前对象执行save,update, ...
6.8. 双向关联(Bidirectional associations) 6.9. 三重关联(Ternary associations) 6.10. 异质关联(Heterogeneous Associations) 6.11. 集合例子(Collection example) 7. 组件(Component)映射 7.1. 依赖...
6.8. 双向关联(Bidirectional associations) 6.9. 三重关联(Ternary associations) 6.10. 异质关联(Heterogeneous Associations) 6.11. 集合例子(Collection example) 7. 组件(Component)映射 7.1. 依赖...
{1.9.6}go-to}{33}{subsection.1.9.6} {1.9.7}\texttt {do-while}}{33}{subsection.1.9.7} {1.10}数组(array)}{34}{section.1.10} {1.10.1}数组变量的声明}{34}{subsection.1.10.1} {1.10.2}数组变量的初始化...