Hibernate 구성 요소 관련 관계

실체 와 관련 된 속성 은 복잡 한 유형의 지구 화 류 이지 만 실체 가 아 닙 니 다. 데이터베이스 에 표 와 이 속성 이 대응 하지 않 습 니 다.이 속성의 하위 속성 을 현재 실체 에 대응 하 는 표 에 저장 해 야 합 니 다.
Citizen 클래스:

public class Citizen {
	private Integer id;
	private String name;
	private Address address;
	public Citizen() {
	}
	public Citizen(String name, Address address) {
		this.name = name;
		this.address = address;
	}
	// Getters and setters are omitted
}

주소 클래스:

public class Address {
	private String province;
	private String city;
	private String district;
	public Address() {
	}
	public Address(String province, String city, String district) {
		this.province = province;
		this.city = city;
		this.district = district;
	}
	// Getters and setters are omitted
}

Citizen.hbm.xml:

<hibernate-mapping package="com.john.myhibernate.domain">
	<class name="Citizen" table="citizen">
		<id name="id">
			<generator class="native"/>
		</id>
		<property name="name" length="28" not-null="true" />
		<component name="address">
			<property name="province"/>
			<property name="city"/>
			<property name="district"/>
		</component>
	</class>
</hibernate-mapping>

테스트 저장:

public void testSave() {
	Session s = null;
	Transaction tx = null;
	
	Address address = new Address("Zhejiang", "Hangzhou", "Binjiang");
	Citizen citizen = new Citizen("Tremendously", address);
	
	try {
		s = HibernateUtil.getSession();
		tx = s.beginTransaction();
		s.save(citizen);
		tx.commit();
	} catch (HibernateException e) {
		if (tx != null)
			tx.rollback();
		e.printStackTrace();
	} finally {
		if (s != null)
			s.close();
	}
}

데이터베이스 기록:
id
name        
province
city    
district
  1
Tremendously
Zhejiang
Hangzhou
Binjiang

좋은 웹페이지 즐겨찾기