hibernate--组件映射

来源:互联网 发布:玉石和宝石的区别 知乎 编辑:程序博客网 时间:2024/06/11 15:12

组件映射:将一个对象属性组合到另外一个对象中(如两张表在数据库中组合成一张表),一个类中的属性包含另一个类的对象的引用

1、通过Annotation注解

Person.java:

package com.bean;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.IdClass;import javax.persistence.OneToOne;public class Person {private String wifeName;private int age;public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getWifeName() {return wifeName;}public void setWifeName(String wifeName) {this.wifeName = wifeName;}}

PersonID.java:

package com.bean;import javax.persistence.Embedded;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.JoinColumns;import javax.persistence.OneToOne;@Entitypublic class PersonID {private int id;private String name;Person person;@Id@GeneratedValuepublic int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Embeddedpublic Person getPerson() {return person;}public void setPerson(Person person) {this.person = person;}}
cfg.xml文件中只需映射PersonId即可:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration>   <session-factory>     <property name="connection.driver_class">com.mysql.jdbc.Driver</property>         <property name="connection.url">jdbc:mysql://localhost:3306/user</property>          <property name="connection.username">root</property>        <property name="connection.password">root</property>          <property name="dialect">org.hibernate.dialect.MySQLDialect</property>     <property name="show_sql">true</property>          <property name="hbm2ddl.auto">update</property>     <property name="show_sql">true</property>     <property name="format_sql">true</property>            <property name="current_session_context_class">thread</property>     <mapping class="com.bean.PersonID"/>   </session-factory></hibernate-configuration>        

2、通过XML配置:

Husband.java:

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

package com.bean;import javax.persistence.Entity;import javax.persistence.Id;public class Wife {private String wifeName;private int age;public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getWifeName() {return wifeName;}public void setWifeName(String wifeName) {this.wifeName = wifeName;}}
hbm.xml配置:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping>  <class name = "com.bean.Husband" table = "Husband" >     <id name = "id" column="id">       <generator class="native"/>     </id>     <property name="name" />          <component name="wife" >       <property name="wifeName"/>       <property name="age"/>     </component>  </class></hibernate-mapping>         
cfg.xml修改映射:

 <mapping resource="com/bean/Husband.hbm.xml"/>






原创粉丝点击