Eclipse快速上手Hibernate--5. 组件映射
这篇文章主要说的是在Hibernate中的组件(Component)映射,可以参考Hibernate官方文档的第7章。至于环境设置,可以参考这个系列的前面几篇文章。 1. 创建项目 · 新建一个Java项目:ComponentMapping,注意选中“创建单独的源文件夹和输出文件夹”,同时添加“用户库”:hibernate。 2. 编写类文件 · 新建一个类,包名:javamxj.hibernate.component,类名:Person。
Person.java
/* * Hibernate - 组件(Component)映射 * 创建日期 2005-4-10 * @author javamxj(分享java快乐) * @link Blog: htpp://javamxj.mblogger.cn * htpp://blog.csdn.net/javamxj/ */package javamxj.hibernate.component;/** * @hibernate.class */public class Person { private Long id; private String username; private Address address; /** * @hibernate.id * generator-class="hilo" * unsaved-value="null" */ public Long getId() {return id;} public void setId(Long id) {this.id = id;} /** * @hibernate.property * length="15" * unique="true" * not-null="true" */ public String getUsername() {return username;} public void setUsername(String username) {this.username = username;} /** * @hibernate.component */ public Address getAddress() {return address;} public void setAddress(Address address) {this.address = address;}}
· Person类调用了Address类,注意在“getAddress()”方法上的“ @hibernate.component”标记。 · Address类只含有一些“ @hibernate.property”标记,没有将其独立映射为一个表。
Address.java
package javamxj.hibernate.component;public class Address { private String country; private String city; private String street; private String zipCode; public Address() {} public Address(String country, String city, String street, String zipcode) { super(); this.country = country; this.city = city; this.street = street; this.zipCode = zipcode; } /** * @hibernate.property * length = "12" */ public String getCity() {return city;} public void setCity(String city) {this.city = city;} /** * @hibernate.property * length = "12" */ public String getCountry() {return country;} public void setCountry(String country) {this.country = country;} /** * @hibernate.property * length = "6" */ public String getZipCode() {return zipCode;} public void setZipCode(String number) {this.zipCode = number;} /** * @hibernate.property * length = "12" */ public String getStreet() {return street;} public void setStreet(String street) {this.street = street;} public String toString(){ return ("居住在"+ country + city+"市"+ street+"区" + "\n\t邮政编码: "+ zipCode); }}
3. 运行任务 · 复制《Eclipse快速上手Hibernate--4. 继承映射(1)》文中的build.xml到项目目录下。· 双击“generate-hbm”任务,会发现在包中多了一个Animal.hbm.xml文件,在src目录下会多了一个hibernate.cfg.xml文件,如果没有,按F5键刷新一下。
Person.hbm.xml
<?xml version="1.0" encoding="GBK"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"><hibernate-mapping> <class name="javamxj.hibernate.component.Person" dynamic-update="false" dynamic-insert="false" select-before-update="false" optimistic-lock="version" > <id name="id" column="id" type="java.lang.Long" unsaved-value="null" > <generator class="hilo"> <!-- To add non XDoclet generator parameters, create a file named hibernate-generator-params-Person.xml containing the additional parameters and place it in your merge dir. --> </generator> </id> <property name="username" type="java.lang.String" update="true" insert="true" access="property" column="username" length="15" not-null="true" unique="true" /> <component name="address" class="javamxj.hibernate.component.Address" > <property name="city" type="java.lang.String" update="true" insert="true" access="property" column="city" length="12" /> <property name="country" type="java.lang.String" update="true" insert="true" access="property" column="country" length="12" /> <property name="zipCode" type="java.lang.String" update="true" insert="true" access="property" column="zipCode" length="6" /> <property name="street" type="java.lang.String" update="true" insert="true" access="property" column="street" length="12" /> </component> <!-- To add non XDoclet property mappings, create a file named hibernate-properties-Person.xml containing the additional properties and place it in your merge dir. --> </class></hibernate-mapping>
· 运行MySql服务器,然后双击“schemaexport”任务,在项目根目录下,会产生一个“schema-export.sql”文件。
推荐文章 |
