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

在新疆等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供網站設計、成都做網站 網站設計制作按需規(guī)劃網站,公司網站建設,企業(yè)網站建設,成都品牌網站建設,成都全網營銷推廣,成都外貿網站制作,新疆網站建設費用合理。
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());
|
【編輯推薦】
- 層層解析Hibernate中的事務的濫用
- 解析Hibernate中的事務管理
- 解析Hibernate的批量刪除功能
- Hibernate、Spring和Struts工作原理及使用理由
分享題目:Hibernate一對一關系代碼實例
網站網址:
http://uogjgqi.cn/article/dghheoo.html
掃二維碼與項目經理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流