Hibernateコンポーネントマッピングコードの詳細


本論文で研究したのは主にHibernateコンポーネントマッピングに関する内容であり、具体的には以下の通りである。
コンポーネント関連マッピングの属性は複雑なタイプの恒久的なクラスですが、エンティティクラスではなく、データベースにはこの属性に対応するテーブルがありません。しかし、このクラスの属性は永続的に保存されます。
例えば、外国人の名前nameはfirst NameとlastNameに分けられます。
MyName.java:

public class MyName {
	private String firstName;
	private String lastName;
	public String getFirstName() {
		return firstName;
	}
	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}
	public String getLastName() {
		return lastName;
	}
	public void setLastName(String lastName) {
		this.lastName = lastName;
	}
}
注:これはコンポーネントクラスで、データベースとマッピングしないで、Peopleのnameフィールドに対応しています。
People.java:

public class People {
	private Integer pid;
	/*    MyName      ,     */
	private MyName name;
	public Integer getPid() {
		return pid;
	}
	public void setPid(Integer pid) {
		this.pid = pid;
	}
	public MyName getName() {
		return name;
	}
	public void setName(MyName name) {
		this.name = name;
	}
}
注:nameフィールドはコンポーネント(MyNameクラス)の関連によって実現されます。
People.hbm.xml:

<?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="com.lixue.bean"> 
  <class name="People" table="t_people"> 
    <id name="pid"> 
      <generator class="native"/> 
    </id> 
     
    <!--   Component         --> 
    <component name="name" class="MyName"> 
      <property name="firstName" /> 
      <property name="lastName" /> 
    </component> 
     
  </class> 
</hibernate-mapping> 
注:コンポーネント関連は「component」タブでマッピングされます。
テストクラス:

public void testSave1(){
	/*  Session   */
	Session session = null;
	Transaction transaction = null;
	try {
		/*  Session     */
		session = HibernateUtils.getSession();
		transaction = session.beginTransaction();
		/*    */
		MyName myName = new MyName();
		myName.setFirstName("  ");
		myName.setLastName("   ");
		/*        */
		People people = new People();
		people.setName(myName);
		session.save(people);
		/*    */
		transaction.commit();
	}
	catch (Exception e) {
		e.printStackTrace();
		transaction.rollback();
	}
	finally{
		HibernateUtils.closeSession(session);
	}
}
締め括りをつける
以上が、Hibernateコンポーネントマッピングコードの詳細な内容のすべてです。興味のある方は引き続き当駅の他のテーマを参照してください。友達のサポートに感謝します。