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;


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;

JAVA 代码

Users 类

    package org.yy.hbn.pojo;
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;
}
}


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;
}
public Users getUsers() {
return users;
}
public void setUsers(Users users) {
this.users = users;
}
}

XML 代码

Card.hbn.xml

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

 
 


 
 

 
 

 
 


Users.hbn.xml

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

 
 


 
 

 
 
   
 
 


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




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();

}
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. 层层解析Hibernate中的事务的滥用
  2. 解析Hibernate中的事务管理
  3. 解析Hibernate的批量删除功能
  4. Hibernate、Spring和Struts工作原理及使用理由

名称栏目:Hibernate一对一关系代码实例
文章网址:http://www.shufengxianlan.com/qtweb/news19/227219.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联