清单1:基类CustomizableEntity
Contact类继承上面的基类:
package com.enterra.customfieldsdemo.domain; import com.enterra.customfieldsdemo.domain.CustomizableEntity; public class Contact extends CustomizableEntity { private int id; private String name; 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; } } |
清单2:继承自CustomizableEntity的Contact类
别忘了这个类的映射文件:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping auto-import="true" default-access="property" default-cascade="none" default-lazy="true"> <class abstract="false" name="com.enterra.customfieldsdemo.domain.Contact" table="tbl_contact"> <id column="fld_id" name="id"> <generator class="native"/> </id> <property name="name" column="fld_name" type="string"/> <dynamic-component insert="true" name="customProperties" optimistic-lock="true" unique="false" update="true"> </dynamic-component> </class> </hibernate-mapping>
|
清单3:Contact类的映射
注意id和name属性都是当作普通的属性来处理,但对于customProperties,我们使用了(动态组件)标签。Hibernate 3.2.0GA文档里面关于dynamic-component的要点如下:
<dynamic-component>映射的语义与<component>是一样的。该映射的优点是仅仅通过编辑映射文件,就能在部署时确定bean的现行属性。使用DOM解析器,映射文件的运行时操作也是可行的。甚至,你可以通过Configuration对象,来访问(和修改)Hibernate的配置时元模型。
基于Hibernate文档中的这段规则,我们来建立前面要求的功能机制。
HibernateUtil和hibernate.cfg.xml
定义了应用中的域模型之后,我们需要创建Hibernate框架运转的必要条件。为此我们必须创建一个配置文件hibernate.cfg.xml和一个处理Hibernate核心功能的类。
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="show_sql">true</property> <property name="dialect"> org.hibernate.dialect.MySQLDialect</property> <property name="cglib.use_reflection_optimizer">true</property> <property name="hibernate.connection.driver_class"> com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url"> jdbc:mysql://localhost:3306/custom_fields_test</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password"></property> <property name="hibernate.c3p0.max_size">50</property> <property name="hibernate.c3p0.min_size">0</property> <property name="hibernate.c3p0.timeout">120</property> <property name="hibernate.c3p0.max_statements">100</property> <property name="hibernate.c3p0.idle_test_period">0</property> <property name="hibernate.c3p0.acquire_increment">2</property> <property name="hibernate.jdbc.batch_size">20</property> <property name="hibernate.hbm2ddl.auto">update</property> </session-factory> </hibernate-configuration> |
清单4:Hibernate配置文件
hibernate.cfg.xml文件没有什么需要特别关注的,除了下面这句:
<property name="hibernate.hbm2ddl.auto">update</property> |
收藏
http://www.qqread.com/java/2008/01/d390951.html 
更多内容请看
Hibernate原理与配置、
Hibernate相关文章专题,或
进入讨论组讨论。
【深 度 阅 读】 相 关 文 章