Hibernate中双向一对多映射

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);
	}

猜你喜欢

转载自blog.csdn.net/qq_43257103/article/details/89919624
今日推荐