Hibernate一对一关系代码实例

开发 后端
本文通过Users表、Card表和示例代码对Hibernate一对一例子进行的讲解,希望读者可以掌握Hibernate中的一对一关系。

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


Users表

    CREATE TABLE `users` (
`user_id` int(11) NOT NULL auto_increment,
`user_name` varchar(20) default NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

Card 表
    CREATE TABLE `card` (
`card_id` int(11) NOT NULL auto_increment,
`card_no` varchar(20) default NULL,
`user_id` int(11) default NULL,
PRIMARY KEY (`card_id`),
KEY `user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.


JAVA 代码

Users 类

    package org.yy.hbn.pojo;
  • 1.
public class Users implements java.io.Serializable {
private Integer userId;
private String userName;
private Card card; //Users对象中存一个Card 对象
public Users() {
}
public Users(String userName) {
this.userName = userName;
}
public Integer getUserId() {
return this.userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return this.userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Card getCard() {
return card;
}
public void setCard(Card card) {
this.card = card;
}
public Users(Integer userId, String userName, Card card) {
super();
this.userId = userId;
this.userName = userName;
this.card = card;
}
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.

Card 类
   package org.yy.hbn.pojo;
public class Card implements java.io.Serializable {
private Integer cardId;
private String cardNo;
private Users users; //Card对象中存一个Users 对象
public Card(Integer cardId, String cardNo, Users users) {
super();
this.cardId = cardId;
this.cardNo = cardNo;
this.users = users;
}
public Card() {
}
public Integer getCardId() {
return this.cardId;
}
public void setCardId(Integer cardId) {
this.cardId = cardId;
}
public String getCardNo() {
return this.cardNo;
}
public void setCardNo(String cardNo) {
this.cardNo = cardNo;
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
public Users getUsers() {
return users;
}
public void setUsers(Users users) {
this.users = users;
}
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.


XML 代码

Card.hbn.xml

    
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

 
  


  
  

  
  

  
 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

Users.hbn.xml
   
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

 
  


  
  

  
  
    
  
 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

hibernate.cfg.xml 代码
   
 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">


root

jdbc:mysql://localhost:3306/test


org.hibernate.dialect.MySQLDialect

mysql

com.mysql.jdbc.Driver

true



  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.

JAVA 测试代码
    package org.yy.hbn.test;
import org.hibernate.Transaction;
import org.hibernate.Session;
import org.yy.hbn.HibernateSessionFactory;
import org.yy.hbn.pojo.Card;
import org.yy.hbn.pojo.Users;
public class test {
public static void main(String[] args) {
select();
}
private static void add()
{
Session session=HibernateSessionFactory.getSession();
Transaction tran=session.beginTransaction();
try {
Users user=new Users();
user.setUserName("UU");
Card card=new Card();
card.setCardNo("89012345");
//卡跟用户建立关系
card.setUsers(user);
//用户也跟卡建立关系
user.setCard(card);
session.save(user);
tran.commit();
} catch (Exception e) {
 e.printStackTrace();
 tran.rollback();
}finally{
 HibernateSessionFactory.closeSession();
}  
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
private static void select()
{
Session session=HibernateSessionFactory.getSession();
//查找用户信息,可以通过用户来找到对应的卡的信息
Users user=(Users)session.get(Users.class,new Integer(1));
System.out.println(user.getUserName());
System.out.println(user.getCard().getCardNo());
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

【编辑推荐】

  1. 层层解析Hibernate中的事务的滥用
  2. 解析Hibernate中的事务管理
  3. 解析Hibernate的批量删除功能
  4. Hibernate、Spring和Struts工作原理及使用理由
责任编辑:张攀 来源: 百度空间
相关推荐

2009-06-03 16:27:27

Hibernate一对一关系

2009-06-04 16:14:22

Hibernate一对Hibernate一对Hibernate多对

2012-03-21 11:43:41

JavaHibernate

2009-09-22 09:55:58

Hibernate实例

2009-06-04 10:34:19

Hibernate一对一对多关系配置

2012-02-08 13:34:08

HibernateJava

2010-04-15 09:09:02

Hibernate

2009-08-17 10:34:51

NHibernate一

2009-06-26 10:15:54

面试HR

2009-12-23 09:31:11

宽带路由上网故障

2012-03-13 16:29:54

Between情侣移动应用

2009-09-23 10:37:50

Hibernate一对

2013-10-12 16:41:01

微软微软CEO鲍尔默

2009-06-24 15:49:54

Entity Bean一对一映射

2009-09-23 10:57:02

Hibernate一对

2009-10-22 18:24:35

数字化教学教育

2012-12-14 09:54:31

英特尔数字化学习年会

2015-07-30 13:08:56

英特尔一对一数字化学习

2021-09-17 18:00:47

腾讯微信移动应用

2012-07-11 22:30:51

教育信息化英特尔
点赞
收藏

51CTO技术栈公众号