一對一的關(guān)系在數(shù)據(jù)庫中表示為主外關(guān)系.在Hibernate中的一對一關(guān)系通過映射實現(xiàn)。例如.人和身份證的關(guān)系.每個人都對應(yīng)一個身份證號.我們應(yīng)該兩個表.一個是關(guān)于人信息的表(user).別外一個是身份證相關(guān)信息的表(card).card表的主鍵對應(yīng)該user表的主鍵userid,也是user表的外鍵.有人才能有身份證.

在新疆等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計、成都做網(wǎng)站 網(wǎng)站設(shè)計制作按需規(guī)劃網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站制作,新疆網(wǎng)站建設(shè)費用合理。
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");
//卡跟用戶建立關(guān)系
card.setUsers(user);
//用戶也跟卡建立關(guān)系
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();
//查找用戶信息,可以通過用戶來找到對應(yīng)的卡的信息
Users user=(Users)session.get(Users.class,new Integer(1));
System.out.println(user.getUserName());
System.out.println(user.getCard().getCardNo());
|
【編輯推薦】
- 層層解析Hibernate中的事務(wù)的濫用
- 解析Hibernate中的事務(wù)管理
- 解析Hibernate的批量刪除功能
- Hibernate、Spring和Struts工作原理及使用理由
名稱欄目:Hibernate一對一關(guān)系代碼實例
路徑分享:
http://www.dlmjj.cn/article/dghheoo.html