Father对应一的一方,Son对应对的一方
father类:
package zhang.hibernate.one2n.enties;
import java.util.HashSet;
import java.util.Set;
public class Father {
private int fatherId;
private String fatherName;
private Set sons=new HashSet<>();
public int getFatherId() {
return fatherId;
}
public void setFatherId(int fatherId) {
this.fatherId = fatherId;
}
public String getFatherName() {
return fatherName;
}
public void setFatherName(String fatherName) {
this.fatherName = fatherName;
}
public Set getSons() {
return sons;
}
public void setSons(Set sons) {
this.sons = sons;
}
}
Son类:
package zhang.hibernate.one2n.enties;
public class Son {
private Integer sonId;
private String sonName;
private Father father;
public Integer getSonId() {
return sonId;
}
public void setSonId(Integer sonId) {
this.sonId = sonId;
}
public String getSonName() {
return sonName;
}
public void setSonName(String sonName) {
this.sonName = sonName;
}
public Father getFather() {
return father;
}
public void setFather(Father father) {
this.father = father;
}
}
Father.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 2019-5-5 20:05:19 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="zhang.hibernate.one2n.enties.Father" table="FATHER" lazy="false">
<id name="fatherId" type="int">
<column name="FATHERID" />
<generator class="native" />
</id>
<property name="fatherName" type="java.lang.String">
<column name="FATHERNAME" />
</property>
<!---
name:本类中对应多那方的属性的名字
table:多那方的数据存在的表名
inservse:决定本类是否维护关联关系,默认是不翻转即默认是维护关联关系的
lazy:是否进行懒加载的策略
-->
<set name="sons" table="SON" inverse="true" lazy="true">
<key>
<column name="FATHERID" />
</key>
<one-to-many class="zhang.hibernate.one2n.enties.Son"/>
</set>
</class>
</hibernate-mapping>
Son.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 2019-5-5 20:05:19 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="zhang.hibernate.one2n.enties.Son" table="SON">
<id name="sonId" type="java.lang.Integer">
<column name="SONID" />
<generator class="native" />
</id>
<property name="sonName" type="java.lang.String">
<column name="SONNAME" />
</property>
<many-to-one name="father" class="zhang.hibernate.one2n.enties.Father" column="FATHERID"></many-to-one>
</class>
</hibernate-mapping>
测试类
private SessionFactory sessionFactory=null;
private Session session=null;
private Transaction transaction=null;
@Before
public void init(){
Configuration configuration=new Configuration().configure();
ServiceRegistry serviceRegistry=
new ServiceRegistryBuilder().applySettings(configuration.getProperties())
.buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
session=sessionFactory.openSession();
transaction=session.beginTransaction();
}
@After
public void destory(){
transaction.commit();
session.close();
sessionFactory.close();
}
@Test
public void test1(){
Father father=new Father();
Son son1=new Son();
son1.setSonName("son1");
son1.setFather(father);
Son son2=new Son();
son2.setSonName("son1");
son2.setFather(father);
father.getSons().add(son1);
father.getSons().add(son2);
session.save(father);
session.save(son1);
session.save(son2);
}