`
lyx_2709
  • 浏览: 314671 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

hibernate一对一关系详解

阅读更多

一对一的关系在数据库中表示为主外关系.例如.人和身份证的关系.每个人都对应一个身份证号.我们应该两个表.一个是关于人信息的表(user).别外一个是身份证相关信息的表(card).card表的主键对应该user表的主键userid,也是user表的外键.有人才能有身份证.

User类代码如下:

java 代码
 
  1. package test;   
  2.   
  3.   
  4.   
  5. /**  
  6.  * User generated by MyEclipse - Hibernate Tools  
  7.  */  
  8.   
  9. public class User  implements java.io.Serializable {   
  10.   
  11.   
  12.     // Fields       
  13.   
  14.      private Integer userid;   
  15.      private String username;   
  16.      private Card card;   
  17.   
  18.   
  19.     // Constructors   
  20.   
  21.     public Card getCard() {   
  22.         return card;   
  23.     }   
  24.   
  25.   
  26.     public void setCard(Card card) {   
  27.         this.card = card;   
  28.     }   
  29.   
  30.   
  31.     /** default constructor */  
  32.     public User() {   
  33.     }   
  34.   
  35.        
  36.     /** full constructor */  
  37.     public User(String username) {   
  38.         this.username = username;   
  39.     }   
  40.   
  41.       
  42.     // Property accessors   
  43.   
  44.     public Integer getUserid() {   
  45.         return this.userid;   
  46.     }   
  47.        
  48.     public void setUserid(Integer userid) {   
  49.         this.userid = userid;   
  50.     }   
  51.   
  52.     public String getUsername() {   
  53.         return this.username;   
  54.     }   
  55.        
  56.     public void setUsername(String username) {   
  57.         this.username = username;   
  58.     }   
  59.       
  60.   
  61.   
  62.   
  63.   
  64.   
  65.   
  66.   
  67.   
  68. }  

Card类的代码如下:

java 代码
 
  1. package test;   
  2.   
  3.   
  4.   
  5. /**  
  6.  * Card generated by MyEclipse - Hibernate Tools  
  7.  */  
  8.   
  9. public class Card  implements java.io.Serializable {   
  10.   
  11.   
  12.     // Fields       
  13.   
  14.      private Integer cardid;   
  15.      private String cardnum;   
  16.      private User user;   
  17.   
  18.     // Constructors   
  19.   
  20.     public User getUser() {   
  21.         return user;   
  22.     }   
  23.   
  24.   
  25.     public void setUser(User user) {   
  26.         this.user = user;   
  27.     }   
  28.   
  29.   
  30.     /** default constructor */  
  31.     public Card() {   
  32.     }   
  33.   
  34.        
  35.     /** full constructor */  
  36.     public Card(String cardnum) {   
  37.         this.cardnum = cardnum;   
  38.     }   
  39.   
  40.       
  41.     // Property accessors   
  42.   
  43.     public Integer getCardid() {   
  44.         return this.cardid;   
  45.     }   
  46.        
  47.     public void setCardid(Integer cardid) {   
  48.         this.cardid = cardid;   
  49.     }   
  50.   
  51.     public String getCardnum() {   
  52.         return this.cardnum;   
  53.     }   
  54.        
  55.     public void setCardnum(String cardnum) {   
  56.         this.cardnum = cardnum;   
  57.     }   
  58.   
  59. }  

这两个类的绿色部分要注意:

一对一的关系,在java中也就是关联(association)关系.关联关系要设对方类为自己的属性.这里也就是双向关系.说白点就是你中有我,我中有你.

两个映文件如下:

xml 代码
 
  1. xml version="1.0"?>  
  2. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  3. <!---->  
  4. <hibernate-mapping>  
  5.     <class name="test.User" table="user">  
  6.         <id name="userid" type="integer">  
  7.             <column name="userid" />  
  8.             <generator class="native" />  
  9.         <!---->id>  
  10.         <property name="username" type="string">  
  11.             <column name="username" length="45" not-null="true" />  
  12.         <!---->property>  
  13.         <one-to-one name="card" class="test.Card"  cascade="all"><!---->one-to-one>  
  14.     <!---->class>  
  15. <!---->hibernate-mapping>  
xml 代码
 
  1. <?xml version="1.0"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  4. <!--  
  5.     Mapping file autogenerated by MyEclipse - Hibernate Tools 
  6. -->  
  7. <hibernate-mapping>  
  8.     <class name="test.Card" table="card">  
  9.         <id name="cardid" type="integer">  
  10.             <column name="cardid" />  
  11.             <generator class="foreign" >  
  12.             <param name="property">user</param>  
  13.             </generator>  
  14.         </id>  
  15.         <property name="cardnum" type="string">  
  16.             <column name="cardnum" length="45" not-null="true" />  
  17.         </property>  
  18.         <one-to-one name="user" class="test.User"></one-to-one>  
  19.     </class>  
  20. </hibernate-mapping>  

比较简单就不再解释了.详细见源码吧.
分享到:
评论
8 楼 shaonanxu 2009-02-16  
为什么我的user能存到库里  card却没有进库
7 楼 yanghao111 2008-05-04  
  
6 楼 finalqitianyu 2008-03-26  
发错了,我想回你生病那个帖子的,呵呵,抱歉哈
5 楼 finalqitianyu 2008-03-26  
错程序的压力大,我们也是,不过你也要注意身体,如果不合适就找一个合适的位置,不要太死心眼了。毕竟做工作是双方意愿的事情,对不对?
4 楼 p48376382 2007-06-24  
呵呵 这是通过外键进行一对一关联的
有没通过主键进行一对一的关联的代码啊?
3 楼 yemen 2007-05-04  
foreign放在user的xml中,然后把card的foreign拿掉是不是也可以啊?
2 楼 hongyuzhe 2007-04-02  
极缺Hibernate 教程,尤其是实际开发的 Hibernate 的应用!
1 楼 zhouwei 2007-03-01  
天天学习,好好向上 
根老师学好了我也写博克~~

相关推荐

    详解Hibernate一对一映射配置

    在Java持久化框架Hibernate中,一对一(One-to-One)映射是对象关系映射的一种常见方式,用于表示两个实体之间一对一的关系。这种关系通常出现在一个实体的实例只能与另一个实体的单个实例相关联的情况。下面我们将...

    hibernate框架一对一测试案例

    **hibernate框架一对一关联测试案例详解** 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者能够用Java对象来处理数据。本篇我们将深入探讨Hibernate中的一对一...

    Hibernate对象关系详解

    本篇将深入探讨Hibernate中的对象关系映射,包括一对一(One-to-One)、一对多(One-to-Many)、多对一(Many-to-One)以及多对多(Many-to-Many)的关系映射。 ### 1. 一对一关系 一对一关系在现实生活中很常见,...

    hibernate对应关系详解

    1. **一对一(One-to-One)**:在数据库中,两个实体之间可能存在一对一的关系,比如一个人只有一个身份证。在Hibernate中,通过`@OneToOne`注解来实现这种关系,并可以设置`@PrimaryKeyJoinColumn`来指定主键的关联...

    hibernate包详解+hibernatePPT

    Hibernate 是一款开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库和面向对象编程之间架起桥梁的解决方案。通过使用Hibernate,开发人员可以避免直接编写SQL语句,而是用Java对象来操作数据库...

    hibernate包的详解以及关系配置实例

    本文档主要介绍hibernate主要包的作用,还有如何使用HQL查询,事务管理的详解,以及一对一、多对多、一对多、多对一关系的配置实例。还有配置文件中的各个属性的作用说明。

    Hibernate的详解

    **Hibernate详解** Hibernate是一款强大的Java持久化框架,它简化了数据库与Java对象之间的交互,使得开发者无需关注SQL的编写,可以更加专注于业务逻辑。本文将深入探讨Hibernate的核心概念、主要功能以及如何在...

    Hibernate ORM - 一对一连接表关联关系

    标题"Hibernate ORM - 一对一连接表关联关系" 提示我们,这里主要讨论的是Hibernate ORM框架在处理数据库中一对一(One-to-One)关联映射的方法。Hibernate是一个流行的Java对象关系映射(ORM)工具,它允许开发者用...

    hibernate使用主键关联的一对一关系

    在Java的持久化框架Hibernate中,一对一(OneToOne)关系是一种常见的对象关系映射(ORM)配置,用于表示两个实体类之间的一种唯一关联。在这个场景中,“hibernate使用主键关联的一对一关系”指的是通过共享主键来...

    Hibernate一对一

    **标题:“Hibernate一对一”** **描述:** 这篇文章主要探讨了Hibernate框架中的一对一关系映射,这是一种在数据库设计中常见的关联方式。作者通过在博客中分享,详细讲解了如何在Java应用程序中使用Hibernate实现...

    hibernate关联映射详解

    包含《多对多双向关联映射》《多对一单向关联映射》《多对一双向关联映射》《一对多单向关联映射》等文档,并有图解及例子,非常适合新手学习,尤其是刚刚接触hibernate,对映射关系不清楚的。。。。

    Hibernate教程04_关系映射之一对一单向外键关联

    **标题详解:**“Hibernate教程04_关系映射之一对一单向外键关联” 在Hibernate框架中,关系映射是数据库表之间的关联在对象模型中的体现。本教程重点讲解了一对一(One-to-One)单向外键关联的实现方法。在数据库...

    hibernate配置文件详解

    * `set`:定义一对多关联关系 这些配置项是 Hibernate 建立对象关系映射所需的基本信息。 Hibernate 配置文件是其核心组件之一,用于定义 Hibernate 的运行期参数。通过 hibernate.cfg.xml 和 .hbm.xml 文件,我们...

    hibernate一对一

    **hibernate一对一关联详解** 在Java开发中,Hibernate是一个非常流行的对象关系映射(ORM)框架,它简化了数据库操作,将Java对象与数据库表之间的映射关系自动化处理。在实际项目中,我们常常会遇到实体类之间的...

    Hibernate一对多映射配置详解

    Hibernate一对多映射配置详解,很值得借鉴

    Hibernate一对一映射

    **Hibernate一对一映射详解** 在Java的持久化框架中,Hibernate是备受青睐的一员,它提供了一种方便的方式来处理对象与数据库之间的映射关系。本文将深入探讨Hibernate中的一对一映射,帮助开发者理解并掌握这种...

Global site tag (gtag.js) - Google Analytics