Hibernate 관련 맵 - many to one 외 키 단 방향 연결

6140 단어 Hibernate
여러 사람 이 하나의 주소, 즉 다 대 일 관계, many to one 에 대응 할 수 있 습 니 다. 이번 에는 Person 과 Address 를 예 로 들 어 간단 한 다 대 1 단 외 키 로 연결 합 니 다.
 
Pojo 실 체 를 보 세 요.
 
Person_FK_Many_to_One:
 
/**
 *    ,    
 * @author Administrator
 *
 */
public class Person_FK_Many_to_One implements Serializable{
	
	private static final long serialVersionUID = -6313867775683964530L;
	private Integer id;
	private String name;
	private Integer age;
	private Address_FK_Many_to_One addressFKManyToOne;

//getter   settter    .
}	

 
Address_FK_Many_to_One:
/**
 * 
 *    ;
 * @author Administrator
 *
 */
public class Address_FK_Many_to_One implements Serializable{
	
	private static final long serialVersionUID = 3635140598485086087L;
	private Integer addressID;
	private String addressDetail;
	

//getter  setter    
}

 
 
다음 설정, Hibernate. hbm. xml 파일.
 
새로 만 들 기, PersonFK_Many_to_One.hbm.xml
내용 은 다음 과 같다.
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
	<class name="pack.java.model.Person_FK_Many_to_One" table="ZHT_PERSON_FK_MANY_TO_ONE">
		<id column="ID" name="id" type="java.lang.Integer">
			<generator class="identity"></generator>
		</id>
		<property name="name" column="NAME"></property>
		<property name="age" column="AGE"></property>
		<!-- 
			   ,name person    address  ,column  person       ,
			   cascade,  save-update,persist ,       ,    save update    。
		 -->
		<many-to-one name="addressFKManyToOne" column="addressID" cascade="save-update,persist"></many-to-one>
	</class>
</hibernate-mapping>

 
그리고 address 를 새로 만 듭 니 다.FK_Many_to_One.hbm.xml
내용 은 다음 과 같다.
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
	<class name="pack.java.model.Address_FK_Many_to_One" table="ZHT_ADDRESS_MANY_TO_ONE">
		<id column="ADDRESSID" name="addressID">
			<generator class="identity"></generator>
		</id>
		<property name="addressDetail" column="ADDRESSDETAIL"></property>
	</class>
</hibernate-mapping>

 
설정 파일, 설정 이 끝 난 후 hibenate. cfg. xml 에서
리 소스 매 핑 추가.

 
마지막 으로 테스트 클래스 를 새로 만 들 고 테스트 를 진행 합 니 다.
package pack.java.test;

import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import pack.java.hibernate.HibernateSessionFactory;
import pack.java.model.Address_FK_Many_to_One;
import pack.java.model.Person_FK_Many_to_One;
/**
 *            ;
 * @author Administrator
 *
 */
public class HibernateDemoManyToOne {
	public static void main(String[] args) {
		HibernateDemoManyToOne demoManyToOne = new HibernateDemoManyToOne();
		Session session = demoManyToOne.getSession();
		//  ;
		demoManyToOne.savePerson(session);
		
		//  ;
		demoManyToOne.queryPersonByPersonID(session);
	}
	
	/**
	 *       person  ;
	 * @param session
	 */
	@SuppressWarnings("unchecked")
	private void queryPersonByPersonID(Session session){
		String hql = "select p from Person_FK_Many_to_One p";
		Query query = session.createQuery(hql);
		
		List<Person_FK_Many_to_One> list = query.list();
		for (Person_FK_Many_to_One personFKManyToOne : list) {
			System.out.println(personFKManyToOne.getId()+","+personFKManyToOne.getName()+","+personFKManyToOne.getAge()+","+personFKManyToOne.getAddressFKManyToOne().getAddressDetail());
		}
	}
	
	/**
	 *    session;
	 * @return
	 */
	private Session getSession(){
		Session session = HibernateSessionFactory.getSession();
		return session;
	}
	
	/**
	 *   Person;
	 */
	private void savePerson(Session session){
		Person_FK_Many_to_One personFKManyToOne1 = new Person_FK_Many_to_One();
		personFKManyToOne1.setAge(23);
		personFKManyToOne1.setName("  ");
		
		Person_FK_Many_to_One personFKManyToOne2 = new Person_FK_Many_to_One();
		personFKManyToOne2.setAge(43);
		personFKManyToOne2.setName("  ");
		
		Address_FK_Many_to_One addressFKManyToOne = new Address_FK_Many_to_One();
		addressFKManyToOne.setAddressDetail("      ");
		
		// person    ;
		personFKManyToOne1.setAddressFKManyToOne(addressFKManyToOne);
		personFKManyToOne2.setAddressFKManyToOne(addressFKManyToOne);
		
		session.beginTransaction().begin();
		//  Person;
		session.save(personFKManyToOne1);
		session.save(personFKManyToOne2);
		session.beginTransaction().commit();
		
	}
}

 
 테스트 결과:
log4j: WARN No appenders could be found for logger (org. hibernate. cfg. Environment). log4j: WARN log4j 시스템 을 올 바 르 게 초기 화하 십시오. 1, 장삼, 23, 광동성 심 천시 2, 이사, 43, 광동성 심 천시

좋은 웹페이지 즐겨찾기