组件映射

组件映射:在数据库中为一张表,表示一个对象包含另一个对象
annotation
一。写被包含对象类
package org.hibernate.tutorial.domain;

public class Wife {
	private String wifeName;
	private String age;
	
	public String getWifeName() {
		return wifeName;
	}
	public void setWifeName(String wifeName) {
		this.wifeName = wifeName;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	
}



二。写包含对象,在引用处加入@Embedded注释
package org.hibernate.tutorial.domain;

import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Husband {
	private int id;
	private String name;
	private Wife wife;
	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}
	public String getName() {
		return name;
	}
	
	@Embedded
	public Wife getWife() {
		return wife;
	}
	public void setId(int id) {
		this.id = id;
	}
	public void setName(String name) {
		this.name = name;
	}
	public void setWife(Wife wife) {
		this.wife = wife;
	}
	
}


三。hebernate.hb.xml配置
<mapping class="org.hibernate.tutorial.domain.Husband"/>


四。测试
public class OneToOneORMappingTest {
	public static void main(String[] args) {
		new SchemaExport(new AnnotationConfiguration().configure("/hibernate.cfg.xml")).create(true, false);
	}
}


测试结果
    create table Husband (
        id integer not null auto_increment,
        name varchar(255),
        age varchar(255),
        wifeName varchar(255),
        primary key (id)
    )


xml方式
一。写同上两个对象
二。编写Husband.hbm.xml
<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 

<hibernate-mapping package="org.hibernate.tutorial.domain"> 

    <class name="Husband" table="Husband"> 
        <id name="id" column="Husband_ID"> 
            <generator class="native"/> 
        </id> 
        <property name="name"></property>
        <component name="wife">
        	<property name="wifeName"></property>
        	<property name="age"></property>
        </component>

    </class> 

</hibernate-mapping> 


三。hibernate.cfg.xml配置
<mapping resource="org/hibernate/tutorial/domain/Husband.hbm.xml"/>

四。测试如上

你可能感兴趣的:(组件)