hibernate系列十一:一对一关联配置及案例
2017-11-30 20:41
260 查看
人和身份证是典型的一对一关系
============sql脚本====================
==============实体类CardEntity.java========================
package com.obtk.entitys;
import java.io.Serializable;
public class CardEntity implements Serializable {
private String cardId;
private String cardName;
private String signOffice;
private String startDate;
private String endDate;
private PersonEntity per;//关联属性
public CardEntity() {
}
public CardEntity(String cardId, String cardName, String signOffice,
String startDate, String endDate) {
super();
this.cardId = cardId;
this.cardName = cardName;
this.signOffice = signOffice;
this.startDate = startDate;
this.endDate = endDate;
}
public void setPer(PersonEntity per) {
this.per = per;
}
public PersonEntity getPer() {
return per;
}
public String getCardId() {
return cardId;
}
public void setCardId(String cardId) {
this.cardId = cardId;
}
public String getCardName() {
return cardName;
}
public void setCardName(String cardName) {
this.cardName = cardName;
}
public String getSignOffice() {
return signOffice;
}
public void setSignOffice(String signOffice) {
this.signOffice = signOffice;
}
public String getStartDate() {
return startDate;
}
public void setStartDate(String startDate) {
this.startDate = startDate;
}
public String getEndDate() {
return endDate;
}
public void setEndDate(String endDate) {
this.endDate = endDate;
}
}
==============实体类PersonEntity.java========================
=======================映射文件PersonEntity.hbm.xml==================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.obtk.entitys.PersonEntity" table="Person">
<id name="perId" type="integer">
<column name="perId"></column>
<generator class="native"></generator>
</id>
<property name="perName" type="string">
<column name="perName"></column>
</property>
<property name="gender" type="string">
<column name="gender"></column>
</property>
<property name="nation" type="string">
<column name="nation"></column>
</property>
<property name="address" type="string">
<column name="address"></column>
</property>
<property name="birthDay" type="string">
<column name="birthDay"></column>
</property>
<!—column是外键,unique是唯一,cascade是级联属性—->
<many-to-one name="card" class="com.obtk.entitys.CardEntity"
column="cardNo"
unique="true"
cascade="all">
</many-to-one>
</class>
</hibernate-mapping>
==================映射文件CardEntity.hbm.xml===============
案例一 数据添加
案例二 数据删除
案例三 关联查询
============sql脚本====================
--身份证表 CREATE TABLE Card ( cardId CHAR(18) PRIMARY KEY, cardName VARCHAR(50) NOT NULL DEFAULT '中华人民共和国居民身份证', signOffice VARCHAR(50) NOT NULL, startDate DATE, endDate DATE ); INSERT INTO Card VALUES('432569851458019850',DEFAULT,'长沙市公安局岳麓分局','2007-10-08','2018-10-08'); INSERT INTO Card VALUES('411525698574232985',DEFAULT,'长沙市公安局望城分局','2006-10-08','2020-10-26'); INSERT INTO Card VALUES('400698532578456233',DEFAULT,'长沙市公安局星沙分局','2005-10-08','2017-10-25'); INSERT INTO Card VALUES('254875154963225583',DEFAULT,'长沙市公安局开福区分局','2004-10-08','2016-10-16'); INSERT INTO Card VALUES('365847125652355489',DEFAULT,'长沙市公安局雨花区分局','2003-10-08','2015-10-09'); --公民信息表 CREATE TABLE Person ( perId INT PRIMARY KEY AUTO_INCREMENT, perName VARCHAR(20) NOT NULL, gender CHAR(2) NOT NULL, nation VARCHAR(20), birthDay DATE, address VARCHAR(50), cardNo CHAR(18), FOREIGN KEY(cardNo) REFERENCES Card(cardId) ); INSERT INTO Person(perName,gender,nation,birthDay,address,cardNo) VALUES('麻子','男','汉族','1982-04-03','obtk学生宿舍','432569851458019850'); INSERT INTO Person(perName,gender,nation,birthDay,address,cardNo) VALUES('刘德华','男','傣族','1981-08-08','obtk学生宿舍','411525698574232985'); INSERT INTO Person(perName,gender,nation,birthDay,address,cardNo) VALUES('周星驰','男','瑶族','1976-11-11','obtk学生宿舍','400698532578456233'); INSERT INTO Person(perName,gender,nation,birthDay,address,cardNo) VALUES('范冰冰','女','苗族','1985-09-11','obtk学生宿舍','254875154963225583'); INSERT INTO Person(perName,gender,nation,birthDay,address,cardNo) VALUES('刘亦菲','女','侗族','1986-05-04','obtk学生宿舍','365847125652355489');
==============实体类CardEntity.java========================
package com.obtk.entitys;
import java.io.Serializable;
public class CardEntity implements Serializable {
private String cardId;
private String cardName;
private String signOffice;
private String startDate;
private String endDate;
private PersonEntity per;//关联属性
public CardEntity() {
}
public CardEntity(String cardId, String cardName, String signOffice,
String startDate, String endDate) {
super();
this.cardId = cardId;
this.cardName = cardName;
this.signOffice = signOffice;
this.startDate = startDate;
this.endDate = endDate;
}
public void setPer(PersonEntity per) {
this.per = per;
}
public PersonEntity getPer() {
return per;
}
public String getCardId() {
return cardId;
}
public void setCardId(String cardId) {
this.cardId = cardId;
}
public String getCardName() {
return cardName;
}
public void setCardName(String cardName) {
this.cardName = cardName;
}
public String getSignOffice() {
return signOffice;
}
public void setSignOffice(String signOffice) {
this.signOffice = signOffice;
}
public String getStartDate() {
return startDate;
}
public void setStartDate(String startDate) {
this.startDate = startDate;
}
public String getEndDate() {
return endDate;
}
public void setEndDate(String endDate) {
this.endDate = endDate;
}
}
==============实体类PersonEntity.java========================
package com.obtk.entitys; import java.io.Serializable; public class PersonEntity implements Serializable{ private static final long serialVersionUID = -9133691278588045990L; private int perId; private String perName; private String gender; private String nation; private String birthDay; private String address; private CardEntity card; //关联属性 public PersonEntity() { } public PersonEntity(String perName, String gender, String nation, String birthDay, String address) { super(); this.perName = perName; this.gender = gender; this.nation = nation; this.birthDay = birthDay; this.address = address; } public void setCard(CardEntity card) { this.card = card; } public CardEntity getCard() { return card; } public int getPerId() { return perId; } public void setPerId(int perId) { this.perId = perId; } public String getPerName() { return perName; } public void setPerName(String perName) { this.perName = perName; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getNation() { return nation; } public void setNation(String nation) { this.nation = nation; } public String getBirthDay() { return birthDay; } public void setBirthDay(String birthDay) { this.birthDay = birthDay; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
=======================映射文件PersonEntity.hbm.xml==================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.obtk.entitys.PersonEntity" table="Person">
<id name="perId" type="integer">
<column name="perId"></column>
<generator class="native"></generator>
</id>
<property name="perName" type="string">
<column name="perName"></column>
</property>
<property name="gender" type="string">
<column name="gender"></column>
</property>
<property name="nation" type="string">
<column name="nation"></column>
</property>
<property name="address" type="string">
<column name="address"></column>
</property>
<property name="birthDay" type="string">
<column name="birthDay"></column>
</property>
<!—column是外键,unique是唯一,cascade是级联属性—->
<many-to-one name="card" class="com.obtk.entitys.CardEntity"
column="cardNo"
unique="true"
cascade="all">
</many-to-one>
</class>
</hibernate-mapping>
==================映射文件CardEntity.hbm.xml===============
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.obtk.entitys.CardEntity" table="Card"> <id name="cardId" type="string"> <column name="cardId"></column> <generator class="assigned"></generator> </id> <property name="cardName" type="string"> <column name="cardName"></column> </property> <property name="startDate" type="string"> <column name="startDate"></column> </property> <property name="endDate" type="string"> <column name="endDate"></column> </property> <property name="signOffice" type="string"> <column name="signOffice"></column> </property> <!-- property-ref="card"表示外键表的关联属性 --> <one-to-one name="per" class="com.obtk.entitys.PersonEntity" property-ref="card" cascade="all" ></one-to-one> </class> </hibernate-mapping>
案例一 数据添加
package com.obtk.test; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.Transaction; import com.obtk.entitys.CardEntity; import com.obtk.entitys.PersonEntity; import com.obtk.utils.HibernateUtil; public class TestAdd { public static void main(String[] args) { Session session=null; Transaction tx=null; try { //获得数据库链接 session=HibernateUtil.getSession(); tx=session.beginTransaction(); CardEntity card=new CardEntity("254586995425635415", "中华人民共和国居民身份证", "长沙市望城区哦不塔克分局", "2010-11-11", "2030-11-11"); PersonEntity per=new PersonEntity("小明", "男", "布依族", "2002-11-11", "学生宿舍"); card.setPer(per); per.setCard(card); session.save(per); tx.commit(); } catch (HibernateException e) { e.printStackTrace(); tx.rollback(); }finally{ HibernateUtil.closeSession(); } } }
案例二 数据删除
package com.obtk.test; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.Transaction; import com.obtk.entitys.CardEntity; import com.obtk.utils.HibernateUtil; public class TestDel { public static void main(String[] args) { Session session=null; Transaction tx=null; try { //获得数据库链接 session=HibernateUtil.getSession(); tx=session.beginTransaction(); CardEntity card=(CardEntity)session.get(CardEntity.class, "254586995425635415"); session.delete(card); tx.commit(); } catch (HibernateException e) { e.printStackTrace(); tx.rollback(); }finally{ HibernateUtil.closeSession(); } } }
案例三 关联查询
package com.obtk.test; import org.hibernate.HibernateException; import org.hibernate.Session; import com.obtk.entitys.PersonEntity; import com.obtk.utils.HibernateUtil; public class TestJoin01 { public static void main(String[] args) { Session session=null; try { //获得数据库链接 session=HibernateUtil.getSession(); PersonEntity per=(PersonEntity)session.get(PersonEntity.class, 7); System.out.println(per.getPerName()+","+per.getGender() +","+per.getCard().getCardId()+","+per.getCard().getSignOffice()); } catch (HibernateException e) { e.printStackTrace(); }finally{ HibernateUtil.closeSession(); } } }
相关文章推荐
- hibernate系列九:多对多关联配置及案例(一)
- hibernate系列八:一对多关联配置及案例
- hibernate系列七:多对一关联配置及案例
- hibernate系列十:多对多关联配置及案例(二)
- 【转】Hibernate系列学习之(二) 多对一、一对一、一对多、多对多的配置方法
- Hibernate一对一关联映射配置
- Hibernate一对一主键双向关联映射(xml配置)
- Hibernate学习09---基于XML配置的一对一单向外键关联
- Hibernate一对一关联映射配置
- Hibernate关联映射 ---一对一案例分析(基于外键)
- Hibernate系列学习之(二) 多对一、一对一、一对多、多对多的配置方法
- Hibernate系列学习之(二) 多对一、一对一、一对多、多对多的配置方法
- Hibernate一对一关联映射配置
- Hibernate之对象关系映射05一对一双向主键关联
- hibernate映射(一对一、一对多、多对一、多对多)配置 【转】
- Hibernate关系映射(1)_一对一单向外键关联