hibernate one to many(many to one)

   多对一维护的关系是:多指向一的关系,有了此关系,加载多的时候可以将一加载上来

  一对多维护的关系是:一指向多的关系,有了此关系,在加载一的时候可以将多加载上来

  而单向一对多关联映射是在一的一端维护关系的

1.实体类:

                  one to many:定义多段Set集合,需要实例化HasSet

                   many to one:定义一端对象

  2.映射文件:

             

(1)由 Nation来维护关联:

Nation实体类:需要添加一个集合存储拥有的地址。

 package com.zking.entity;

import java.util.HashSet;
import java.util.Set;

public class Nation {
	private String nid;
	private String nname;
	private Set<Province> Pi = new HashSet<Province>(); 
	public Nation() {
		super();
	} 
	public Nation(String nid, String nname, Set<Province> Pi) {
		super();
		this.nid = nid;
		this.nname = nname;
		this.Pi = Pi;
	}
	public String getNid() {
		return nid;
	}
	public void setNid(String nid) {
		this.nid = nid;
	}

	public String getNname() {
		return nname;
	}

	public void setNname(String nname) {
		this.nname = nname;
	}

	public Set<Province> getSp() {
		return Pi;
	}

	public void setSp(Set<Province> Pi) {
		this.Pi = Pi;
	}

	@Override
	public String toString() {
		return "Nation [nid=" + nid + ", nname=" + nname + ", Pi=" + Pi + "]";
	} 

}

实体类:Province 

package com.zking.entity;

import java.util.HashSet;
import java.util.Set;

public class Province {
	private String pid;
	private String pname; 
	private  transient Nation nation;
	private Set<City> Ci = new HashSet<City>();

	public Province() {
		super(); 
	} 

	public Province(String pid, String pname, Nation nation) {
		super();
		this.pid = pid;
		this.pname = pname;
		this.nation = nation;
	}
 
	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;
	}
 
	public Nation getNation() {
		return nation;
	}
 
	public void setNation(Nation nation) {
		this.nation = nation;
	}
 

	public Set<City> getCi() {
		return Ci;
	}
 
	public void setCi(Set<City> ci) {
		Ci = ci;
	} 
	@Override
	public String toString() {
		return "Province [pid=" + pid + ", pname=" + pname + "]";
	}
 
}

实体类:City

package com.zking.entity;

public class City {
	private String cid;
	private String cname; 
	private  transient Province province;

	public City() {
		super(); 
	}

	public City(String cid, String cname) {
		super();
		this.cid = cid;
		this.cname = cname;

	}

	public String getCid() {
		return cid;
	}

	public void setCid(String cid) {
		this.cid = cid;
	}

	public String getCname() {
		return cname;
	}

	public void setCname(String cname) {
		this.cname = cname;
	}

	public Province getProvince() {
		return province;
	}

	public void setProvince(Province province) {
		this.province = province;
	}

	@Override
	public String toString() {
		return "City [cid=" + cid + ", cname=" + cname + "]";
	}
	
	

}

映射文件:Nation  ,Province, City

<!--Province-->
<?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-10 10:03:12 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
	<class name="com.zking.entity.Province" table="PROVINCE">
		<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>
		<many-to-one name="nation" class="com.zking.entity.Nation"
			column="nid" lazy="false"></many-to-one>

		<set name="sc" table="CITY" lazy="false" inverse="true"
			cascade="all-delete-orphan">
			<key column="pid"></key>
			<one-to-many class="com.zking.entity.City" />
		</set>

	</class>
</hibernate-mapping>


<!--Nation-->
<?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-10 10:03:12 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
	<class name="com.zking.entity.Nation" table="NATION">
		<id name="nid" type="java.lang.String">
			<column name="NID" />
			<generator class="guid" />
		</id>
		<property name="nname" type="java.lang.String">
			<column name="NNAME" />
		</property>
		<set name="sp" table="PROVINCE" cascade="all-delete-orphan"
			inverse="true" lazy="false">
			<key column="nid"></key>
			<one-to-many class="com.zking.entity.Province" />
		</set>
	</class>
</hibernate-mapping>


<!--city-->
<?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-10 10:03:12 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
	<class name="com.zking.entity.City" table="CITY">
		<id name="cid" type="java.lang.String">
			<column name="CID" />
			<generator class="guid" />
		</id>
		<property name="cname" type="java.lang.String">
			<column name="CNAME" />
		</property>

		<many-to-one name="province" class="com.zking.entity.Province"
			column="pid"></many-to-one>
	</class>
</hibernate-mapping>

hibernate.cfg.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/Nation.hbm.xml" />
		<mapping resource="com/zking/entity/Province.hbm.xml" />
		<mapping resource="com/zking/entity/City.hbm.xml" />
		
	</session-factory>
</hibernate-configuration>

TempTest

package hibernate05;

import java.util.Set;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

import com.alibaba.fastjson.JSON;
import com.zking.entity.City;
import com.zking.entity.Nation;
import com.zking.entity.Province;

public class TempTest {

	/**
	 * 增加 国家 ->省份
	 */
	// @Test
	// public void add() {
	// Configuration configuration = new Configuration().configure();
	// SessionFactory sessionFactory = configuration.buildSessionFactory();
	// Session session = sessionFactory.openSession();
	// Transaction transaction = session.beginTransaction();
	//
	// // 创建实体对象
	// Nation n1 = new Nation();
	// n1.setNname("中国");
	//
	// Province p1 = new Province();
	// p1.setPname("湖南");
	// p1.setNation(n1);
	//
	// Province p2 = new Province();
	// p2.setPname("湖北");
	// 省份里面设置国家
	// p2.setNation(n1);
	// 国家里面加省份
	// n1.getSp().add(p1);
	// n1.getSp().add(p2);
	//
	// session.save(n1);
	//
	// transaction.commit();
	// session.close();
	// sessionFactory.close();

	// }

	/**
	 * querty查询 国家(单个查询) 省份(单个查询)
	 */
	// @Test
	// public void querty() {
	// Configuration configuration = new Configuration().configure();
	// SessionFactory sessionFactory = configuration.buildSessionFactory();
	// Session session = sessionFactory.openSession();
	// // Nation n1 = session.get(Nation.class,
	// // "b9b18f47-b4be-11e8-a8f0-54ee75bbb0cd");
	// // System.out.println(n1.getnName());
	//
	// Province p1 = session.get(Province.class,
	// "3b3acde3-b4b9-11e8-a8f0-54ee75bbb0cd");
	// System.out.println(p1.getPname());
	//
	// session.beginTransaction().commit();
	// session.close();
	// sessionFactory.close();
	// }

	/**
	 * 省份->城市
	 */
	// @Test
	// public void add1() {
	// Configuration configuration = new Configuration().configure();
	// SessionFactory sessionFactory = configuration.buildSessionFactory();
	// Session session = sessionFactory.openSession();
	// Transaction transaction = session.beginTransaction();
	//
	// Province p1 = session.get(Province.class,
	// "3b3acde3-b4b9-11e8-a8f0-54ee75bbb0cd");
	//
	// City c1 = new City();
	// c1.setCname("哈尔滨");
	// c1.setProvince(p1);
	//
	// City c2 = new City();
	// c2.setCname("黑龙江");
	// 城市里面设置省份
	// c2.setProvince(p1);
	//
	// p1.getSc().add(c1);
	// p1.getSc().add(c2);
	//
	// session.save(c1);
	// session.save(c2);
	//
	// transaction.commit();
	// session.close();
	// sessionFactory.close();
	//
	// }

	/**
	 * 查询 省份+城市
	 */

	// 省份+城市
	// @Test
	// public void querty1() {
	// Configuration configuration = new Configuration().configure();
	// SessionFactory sessionFactory = configuration.buildSessionFactory();
	// Session session = sessionFactory.openSession();
	// Province p1 = session.get(Province.class,
	// "3b3acde3-b4b9-11e8-a8f0-54ee75bbb0cd");
	// System.out.println(p1.getPname());
	// Set<City> lp = p1.getSc();
	// for (City c : lp) {
	// System.out.println(c);
	// }
	// session.close();
	// sessionFactory.close();
	//
	// }

	// 删除
	// @Test
	// public void delete() {
	// Configuration configuration = new Configuration().configure();
	// SessionFactory sessionFactory = configuration.buildSessionFactory();
	// Session session = sessionFactory.openSession();
	// Nation n1 = session.get(Nation.class,
	// "711baeac-b4b8-11e8-a8f0-54ee75bbb0cd");
	// session.delete(n1);
	// session.beginTransaction().commit();
	// session.close();
	// sessionFactory.close();
	// }

	// 国家-》省份-》城市
	// @Test
	// public void add2() {
	// Configuration configuration = new Configuration().configure();
	// SessionFactory sessionFactory = configuration.buildSessionFactory();
	// Session session = sessionFactory.openSession();
	//
	// Nation n1 = new Nation();
	// n1.setNname("中国");
	// Province p1 = new Province();
	// p1.setPname("哈尔滨");
	// // 省份里面设置国家
	// p1.setNation(n1);
	// City c1 = new City();
	// c1.setCname("黑龙江");
	// // 城市里面设置省份
	// c1.setProvince(p1);
	// // 国家里面加省份
	// n1.getSp().add(p1);
	// // 省份里面加城市
	// p1.getSc().add(c1);
	// session.save(n1);
	// session.beginTransaction().commit();
	// session.close();
	// sessionFactory.close();
	// }

	/**
	 * 国家-》省份-》城市
	 * 
	 * @Title: querty2
	 * @Description: 查询
	 * @return void
	 */
	// @Test
	// public void query2() {
	// Configuration config = new Configuration().configure();
	// SessionFactory sessionFactory = config.buildSessionFactory();
	// Session session = sessionFactory.openSession();
	// Nation n1 = session.get(Nation.class,
	// "711baeac-b4b8-11e8-a8f0-54ee75bbb0cd");
	// System.out.println(n1.getNname());
	// // 省份
	// Set<Province> sp = n1.getSp();
	// for (Province p : sp) {
	// System.out.println(p);
	// // 城市
	// Set<City> sc = p.getSc();
	// for (City c : sc) {
	// System.out.println(c);
	// }
	// }
	// String str = JSON.toJSONString(n1);
	// System.out.println(str);
	// session.close();
	// sessionFactory.close();
	// }

}

猜你喜欢

转载自blog.csdn.net/qq_42247220/article/details/82594782