Hibernate学习笔记--第二篇 关联关系映射 many –to –one
many –to –one
假设2个对象,分别是Person and Address .
1个Address中含有多个Person
分别建立类
package cn.itcase.hibernate.domain; public class Address { private int id; private String street; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } } package cn.itcase.hibernate.domain; public class Person { private int id; private String name; private Address address; public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
相对应的配置文件为
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.itcase.hibernate.domain"> <class name="Address" table="address"> <id name="id" > <generator class="native" /> </id> <property name="street"></property> </class> </hibernate-mapping> <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.itcase.hibernate.domain"> <class name="Person" table="person"> <id name="id" > <generator class="native" /> </id> <property name="name" /> <!--留意这里 name的名称必须和address类中的private Address addr;对象名称一致 列名可任意命名,最好是具有相对意义 --> <many-to-one name="address" column="addressId"/> </class> </hibernate-mapping>
//测试多对一例子
package cn.itcast.hibernate;
import java.util.HashSet;
import java.util.Set;
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.Transaction;
import cn.itcase.hibernate.domain.Address;
import cn.itcase.hibernate.domain.Person;
public class many2one2 {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Person depart=add();
		Person emp=query(1);
		//System.out.println(emp.getDepart().getName());
		//queryDepart(3);
		//System.out.println(addrquery(1).getPer().getName());
	}
	
	
	static Address addrquery(int id){
		Session s=null;
		Transaction tx=null;
		try{
			s=HibernateUtil.getSession();
			tx=s.beginTransaction();
			Address addr=(Address)s.get(Address.class, id);
			//System.out.print(emp.getDepart().getName());
			Hibernate.initialize(addr.getStreet());
			tx.commit();
			return addr;
		}finally{
			if(s!=null)
				s.close();
		}	
	}
	static Person query(int pid){
		Session s=null;
		Transaction tx=null;
		try{
			s=HibernateUtil.getSession();
			tx=s.beginTransaction();
			Person p=(Person)s.get(Person.class, pid);
			tx.commit();
			return p;
		}finally{
			if(s!=null)
				s.close();
		}		
	}
	static Person add(){
		Session s=null;
		Transaction tx=null;
		try{
			Address addr1=new Address();
			addr1.setStreet("add1");	
			Person p1=new Person();
			p1.setName("p1");
			Person p2=new Person();
			p2.setName("p2");
			p1.setAddress(addr1);
			p2.setAddress(addr1);
			s=HibernateUtil.getSession();
			tx=s.beginTransaction();
			s.save(addr1);
			s.save(p1);
			s.save(p2);
			tx.commit();
			return p1;
		}finally{
			if(s!=null)
				s.close();
		}	
	}
}
 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号