- 浏览: 1990131 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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 22331.首先,在spring的hibernate配置里(app ... -
Hibernate 配置文件提示
2011-12-11 16:03 10311.这个则是hibernate.cfg.xml文件的头信息.. ... -
Hibernate中二级缓存的配置
2011-10-18 00:26 1257我们知道 hibernate的session提供了一级缓存, ... -
Hibernate 生成策略属性
2011-10-17 14:01 1014"assigned" 主键由外部程序负责生 ... -
Exception in thread "main" java.lang.NoClassDefFoundError: javax/transaction/Syn
2011-10-16 18:37 2466Exception in thread "main& ... -
Hibernate缓存的分类
2011-10-16 11:25 1031Hibernate缓存分类: Session ... -
在Hibernate中使用日期函数获取数据库时间
2011-10-04 20:13 1673在Hibernate中使用日期函数获取数据库时间 ... -
Exception in thread "main" org.hibernate.id.IdentifierGenerationException: attem
2011-09-23 00:46 2064今天在做Hibernate中1多1双向关联映射的实例时, ... -
Hibernate关联映射-one to one 外键双向关联.
2011-09-22 00:28 1168说明:双向一对一,是一对多的特例,只需要在多的一方设置成 ... -
Hibernate关联映射-many to many 外键单向关联.
2011-09-20 01:18 1452多对多的实例很多,这里说一个比较简单的例子,而且还是单向 ... -
Hibernate关联映射-many to one 外键单向关联
2011-09-18 00:25 1957多个人可以对应一个地址,也就是所谓的多对一关系,many to ... -
Hibernate关联映射-one to to 主键单向关联
2011-09-17 23:23 1048这次介绍 还是以Person 和 Address 为例. ... -
Hibernate关联映射-one to many外键单向关联
2011-09-15 01:14 4588以下是说明,1对多 单向外键关联 的实例.同样以person ... -
Hibernate关联映射-one to one单向外键关联
2011-09-13 22:00 1650Hibernate的关联关系很多,也非常的复杂. 常见的有 ... -
org.hibernate.TransientObjectException: object references an unsaved transient i
2011-09-12 19:02 1485org.hibernate.TransientObjectEx ... -
org.hibernate.PropertyAccessException: Exception occurred inside getter of pack.
2011-09-12 18:54 6125报如下,异常是因为,在Person对象中.设置的属性类型 ... -
org.hibernate.MappingException: could not instantiate id generator
2011-09-10 14:32 2475在搭建Hibernate的环境时, ... -
配置hibernate.properties 或 hibernate.cfg.xml 文件时,在配置JDBC连接参数时,要配置数据库方言
2011-09-10 13:04 1931各数据库的方言 (配置 hibernate.cfg.xml 时 ... -
java.sql.SQLException: ORA-01747: user.table.column, table.column 或列说明无效
2011-08-17 11:53 7191今天,使用Hibernate框架,做映射时,添加数据时, ...
相关推荐
"Hibernate one-to-many / many-to-one关系映射"是两个基本的关系类型,用于表示实体间的关联。在这个主题中,我们将深入探讨这两种关系映射的原理、配置和实际应用。 一、一对一(one-to-one)与一对多(one-to-...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是一种常见的关系数据库模型映射方式。这种关联通常发生在两个实体之间,且每个实体都只有一个对应的实例。本篇文章将详细探讨双向一对一主键关联映射...
`hibernate_one2one_pk_1`和`hibernate_one2one_pk_2`可能涉及主键级联,即两个表共享相同的主键,而`hibernate_one2one_ufk_1`和`hibernate_one2one_ufk_2`可能是通过外键实现的一对一关系。在Hibernate中,这需要...
9. Hibernate 一对一外键双向关联、主键双向关联、连接表双向关联、一对多外键双向关联、一对多连接表双向关联、多对多双向关联: 这些关联方式与单向关联类似,区别在于两个实体类都知道彼此的关联。在双向关联中...
本文主要关注Hibernate中的一个核心概念——一对一(One-to-One)、一对多(One-to-Many)和多对一(Many-to-One)关联映射,特别是关于“一到多”单向和双向关联映射的配置心得。 首先,让我们了解“一到多”关联...
【hibernate关联映射详解】 Hibernate 是一款流行的Java持久层框架,用于简化数据库操作。在Hibernate中,关联映射是实现对象关系映射(ORM)的关键,它允许我们在对象模型和关系数据库之间建立联系。关联映射主要...
本篇将深入探讨一种特殊的关联映射方式——一对一(One to One)映射,特别是在双向关联的情况下的实现。在这个案例中,我们将详细解析`hibernate_one2onepk2`的压缩包文件,了解如何设置和操作这种关联。 一对一...
### Hibernate关联关系映射 #### 一、单向关联 单向关联指的是对象之间的关联关系只在一个方向上存在,也就是说这种关联关系仅在一个类中表示出来,在另一个类中不体现这种关联。 ##### 1. 一对一外键单向关联 ...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是一种常见的关系映射方式,用于表示两个实体之间一对一的对应关系。本篇主要探讨的是基于主键(Primary Key)的双向关联映射,这在实际项目中非常常见...
在一对一(One-to-One)主键关联关系中,两个实体类之间存在唯一对应的关系,通常一个实体对应另一个实体的一个实例,这种关系可以通过共享主键来实现。 在Hibernate中,一对一的主键关联关系可以通过以下几种方式...
"Hibernate的关联映射"是Hibernate中的核心概念之一,用于模拟数据库中的关系,包括一对一(One-to-One)、一对多(One-to-Many)、多对一(Many-to-One)和多对多(Many-to-Many)四种关系。现在,让我们详细探讨...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是常见的关系数据库模型。本篇文章将深入探讨两种实现一对一关联的方式:主键关联(Primary Key Join)和唯一外键关联(ForeignKey Join),并结合源码...
- 主键双向关联 - 连接表双向关联 2. **一对多关联**(One-to-Many / Many-to-One) - 外键单向关联 - 连接表单向关联 - 外键双向关联 - 连接表双向关联 3. **多对多关联**(Many-to-Many) - 单向关联 - ...
在本教程中,我们将深入探讨Hibernate中的一个关键概念——关系映射,特别是“一对一双向主键关联”。这种关联类型是数据库设计中的常见模式,它允许两个实体类之间通过共享相同的主键来建立关联。在Java应用中,...
5. **双向关联(Bidirectional Association)**:在双向一对多关联中,两个实体类都需要包含对方的引用。父类中通常使用`@OneToMany`,子类中使用`@ManyToOne`。为了保持数据一致性,需要在代码中管理这两个引用。 ...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是常见的关系数据库模型在对象模型中的体现。这种关联通常用于表示两个实体之间非常特殊的联系,比如一个人只有一个身份证,或者一个公司只有一个总部...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是常见的关系映射方式之一,尤其在处理两个实体之间存在唯一对应关系时非常有用。本篇将重点讲解如何实现一对一主键关联映射的单向关联,并通过一个...