- 双向关联:主表中有从表的属性,从表中有主表的属性。
- 单向关联:主表中只有从表的属性。
创建两个类文件:Person,card
package com.zking.entity;
import java.util.UUID;
public class Card {
private String pid;
private int cno;
private String cid = String.valueOf(UUID.randomUUID());
private Person person;
public Card() {
super();
// TODO Auto-generated constructor stub
}
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
public int getCno() {
return cno;
}
public void setCno(int cno) {
this.cno = cno;
}
public String getCid() {
return cid;
}
public void setCid(String cid) {
this.cid = cid;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
@Override
public String toString() {
return "Card [pid=" + pid + ", cno=" + cno + ", cid=" + cid + ", person=" + person + "]";
}
}
package com.zking.entity;
public class Person {
private String pid;
private String pname;
private Card card;
public Person() {
super();
// TODO Auto-generated constructor stub
}
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
@Override
public String toString() {
return "pname=" + pname + "]";
}
public Card getCard() {
return card;
}
public void setCard(Card card) {
this.card = card;
}
}
hibernate.hbm.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">sasa</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/t204?characterEncoding=utf-8</property>
<property name="hibernate.connection.username">root</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<mapping resource="com/zking/entity/Person.hbm.xml" />
<mapping resource="com/zking/entity/Card.hbm.xml" />
</session-factory>
</hibernate-configuration>
生成hibernate映射文件:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2018-9-7 16:50:12 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
<class name="com.zking.entity.Card" table="CARD">
<id name="pid" type="java.lang.String">
<column name="pid" />
<generator class="foreign">
<param name="property">person</param>
</generator>
</id>
<property name="cid" type="java.lang.String">
<column name="cid" />
</property>
<property name="cno" type="int">
<column name="cno" />
</property>
<one-to-one name="person" class="com.zking.entity.Person"></one-to-one>
</class>
</hibernate-mapping>
Person.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2018-9-7 16:50:12 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
<class name="com.zking.entity.Person" table="PERSON">
<id name="pid" type="java.lang.String">
<column name="pid" />
<generator class="guid" />
</id>
<property name="pname" type="java.lang.String">
<column name="PNAME" />
</property>
<!-- cascade="save-update" cascade="delete" -->
<one-to-one name="card" class="com.zking.entity.Card" cascade="delete"></one-to-one>
</class>
</hibernate-mapping>
hibernate04.java
package hibernate04;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import com.zking.entity.Card;
import com.zking.entity.Person;
public class OneToOne {
@Test
public void OneToOneTemp() {
Configuration configuration = new Configuration().configure();
SessionFactory sessionFactory = configuration.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
Person p1 = new Person();
p1.setPid("3019933a-b289-11e8-a29d-54ee75bbb0cd");
p1.setPname("zs");
Card c1 = new Card();
c1.setPid("3019933a-b289-11e8-a29d-54ee75bbb0cd");
c1.setCno(1234);
System.out.println(c1);
c1.setPerson(p1);
p1.setCard(c1);
// session.save(p1);
session.delete(p1);
transaction.commit();
session.close();
}
}