Hibernate 관련 맵 - many to one 외 키 단 방향 연결
6140 단어 Hibernate
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, 광동성 심 천시
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[JPA] 즉시로딩(EAGER)과 지연로딩(LAZY) (왜 LAZY 로딩을 써야할까?) (1)Proxy는 이 글의 주제인 즉시로딩과 지연로딩을 구현하는데 중요한 개념인데, 일단 원리는 미뤄두고 즉시로딩과 지연로딩이 무엇인지에 대해 먼저 알아보자. 눈 여겨 볼 곳은 'fetch = FetchType.EAGER...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.