1、该实例的准备工作请看:http://write.blog.csdn.net/postedit/48010949
===========>单向
Many-to-one
2、在src建立com.hibernate.test3包,并建立Address.java,Address.hbm.xml和Person.java,Person.hbm.xml
Person表的sql:create table Person(personId int not null primary key,addressId int not null)
Address表sql:create table Address(addressId int not null primary key)
Person.java:
package com.hibernate.test3;
public class Person {
private int personId;
private Address address;
public Person() {
super();
}
//此处省略get、set方法
}
Address.java
package com.hibernate.test3;
public class Address {
private int addressId;
public Address() {
super();
}
//此处省略get、set方法
}
Address.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 2015-9-5 14:55:34 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.hibernate.test3.Address" table="ADDRESS">
<id name="addressId" type="int">
<column name="ADDRESSID" />
<generator class="assigned" />
</id>
</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 2015-9-5 14:55:34 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.hibernate.test3.Person" table="PERSON">
<id name="personId" type="int">
<column name="PERSONID" />
<generator class="assigned" />
</id>
<many-to-one name="address" class="com.hibernate.test3.Address" not-null="true">
<column name="addressId" />
</many-to-one>
</class>
</hibernate-mapping>
将Address.hbm.xm和Person.hbm.xm加入到hibernate.cfg.xml中
编写测试代码:
package com.hibernate.test3;
import static org.junit.Assert.*;
import org.hibernate.Session;
import org.junit.Test;
public class Test1 {
@Test
public void test() {
Session session=HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
Address address=new Address();
address.setAddressId(100);
Person person=new Person();
person.setAddress(address);
person.setPersonId(101);
session.save(address);
session.save(person);
session.getTransaction().commit();
HibernateUtil.getSessionFactory().close();
}
}
运行结果如图所示:
one-to-one
3、重新建立和Person.java,Person.hbm.xml与及PersonInfo.java,PersonInfo.hbmxml
Person表的sql:create table Person(personId int not null primary key,name varchar(12) not null);
PersonInfo表的sql:create table PersonInfo(personId int not null primary key,tel varchar(11) not null);
Person.java:
package com.hibernate.test3;
public class Person {
private int personid;
private String name;
public Person() {
super();
}
//此处省略get、set方法
}
PersonInfo.java
package com.hibernate.test3;
public class PersonInfo {
private int personId;
private String tel;
private Person person;
public PersonInfo() {
super();
}
//此处省略get、set方法
}
PersonInfo.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 2015-9-19 15:11:10 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.hibernate.test3.PersonInfo" table="PERSONINFO">
<id name="personId" type="int">
<column name="PERSONID" />
<generator class="foreign">
<param name="property">person</param>
</generator>
</id>
<property name="tel" type="java.lang.String">
<column name="TEL" />
</property>
<one-to-one name="person" class="com.hibernate.test3.Person" constrained="true"></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 2015-9-19 15:11:10 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.hibernate.test3.Person" table="PERSON">
<id name="personid" type="int">
<column name="PERSONID" />
<generator class="assigned" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
</class>
</hibernate-mapping>
将PersonInfo.hbm.xm和Person.hbm.xm加入到hibernate.cfg.xml中
编写测试代码:
package com.hibernate.test3;
import static org.junit.Assert.*;
import org.hibernate.Session;
import org.junit.Test;
public class Test1 {
@Test
public void test() {
Session session=HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
Person person=new Person();
person.setPersonid(100);
person.setName("mrw");
session.save(person);
PersonInfo personInfo=new PersonInfo();
personInfo.setPerson(person);
personInfo.setTel("15987498503");
session.save(personInfo);
session.getTransaction().commit();
session.close();
}
}
运行结果如图所示:
one-to-Many
4、重新建立Address.java,Address.hbm.xml和Person.java,Person.hbm.xml
Person.java:
package com.hibernate.test3;
public class Person {
private int personId;
private int addressId;
public Person() {
super();
}
}
Address.java
package com.hibernate.test3;
public class Address {
private int addressId;
private Person person;
public Address() {
super();
// TODO Auto-generated constructor stub
}
//此处省略get、set方法
}
Address.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 2015-9-5 15:29:07 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.hibernate.test3.Address" table="ADDRESS">
<id name="addressId" column="addressId">
<generator class="foreign">
<param name="property">person</param>
</generator>
</id>
<one-to-one name="person" class="com.hibernate.test3.Person" constrained="true"></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 2015-9-5 15:29:07 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.hibernate.test3.Person" table="PERSON">
<id name="personId" type="int">
<column name="PERSONID" />
<generator class="assigned" />
</id>
<property name="addressId" type="int">
<column name="ADDRESSID" />
</property>
</class>
</hibernate-mapping>
将Address.hbm.xm和Person.hbm.xm加入到hibernate.cfg.xml中
编写测试代码:
package com.hibernate.test3;
import static org.junit.Assert.*;
import org.hibernate.Session;
import org.junit.Test;
public class Test1 {
@Test
public void test() {
Session session=HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
Address address=new Address();
address.setAddressId(100);
Person person=new Person();
person.setAddress(address);
person.setPersonId(101);
session.save(address);
session.save(person);
session.getTransaction().commit();
HibernateUtil.getSessionFactory().close();
}
}
运行结果如图所示: