首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

Hibernate 照射文件 结构

2013-08-16 
Hibernate 映射文件 结构!DOCTYPE hibernate-mapping PUBLIC?? -//Hibernate/Hibernate Mapping DTD 3.0

Hibernate 映射文件 结构

<!DOCTYPE hibernate-mapping PUBLIC?

? "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

? "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" >

??

<hibernate-mapping package="com.test.hibernate">

? <class name="News" table="news_table">

? ? <id name="id">

? ? ? <generator not-null="true" type="string"/>

? ? <property name="content" type="string"/>

? ? <!--property ?name="fullContent"?

? ? ? ? ? ? ? formula="(select concat(nt.title,nt.content) from news_table nt where nt.id=id)"></property -->

? ? <property ? name="fullContent"?

? ? ? ? ? ? ? ? column="full_content" type="string"?

? ? ? ? ? ? ? ? generated="insert"></property>

? </class>

</hibernate-mapping>

?

1. 主要元素配置

? ? hibernate-mapping 有各种属性(P389),class也有各种属性(P390).

? ??

? ? class里面也可以配置hibernate-mapping表示覆盖配置.

? ??

? ? hibernate-mapping里面可以包含多个class,但是一般一个文件只配置一个class(表).

? ??

? ? class里面id配置标识属性,其他使用property配置.

? ??

? ? id和property都有各种 属性值可配置(P392)

?

2. id的生成器配置

? ? <id name="id">

? ? ? <generator unique="false">

? ? ? <parent name="owner" />

? ? ? <property name="first" />

? ? ? <property name="last" />

? ? ? <!-- 组件的字段为集合(Map) -->

? ? ? <map name="power" table="name_power">

? ? ? ? <key ?column="person_id" not-null="true" />

? ? ? ? <map-key column="name_aspect" type="string" />

? ? ? ? <element column="name_power" type="int" />?

? ? ? </map>

? ? </component>

? ??

7. 映射集合,该集合的 元素 为 组件,元素数据来自集合的表,组件字段是集合表中的.

? ?普通map中一个key对应一个字段,而使用组件作为元素,则一个key可以对应多个字段.

?

? <!-- 集合的元素 为 组件 -->

? ? <map name="nicks" table="nick_inf">

? ? ? <key column="person_id" not-null="true" />

? ? ? <map-key column="phase" type="string" />

? ? ? <!-- 集合的元素 为 组件 -->

? ? ? <!-- 为简化管理,Hibernate不再允许composite-element 里面再包含list,map,set等集合元素 -->

? ? ? <composite-element />

? ? ? ? <property name="first" />

? ? ? ? <property name="last" />?

? ? ? </composite-element>

? ? </map>

? ?

8. ?映射集合,该集合的 key 为 组件, ?使用 composite-map-key

? ? 组件字段是集合表中的.

?

? ?<!-- 集合的key为组件, -->

? ? <map name="nickPower" table="nick_power">

? ? ? <key column="person_id" not-null="true" />

? ? ? <!-- 因为使用组件作为key,这里必须用这个composite-map-key标签 -->

? ? ? <composite-map-key type="string" />

? ? ? ? <key-property name="last" type="string" />

? ? ? </composite-map-key>

? ? ? <element column="nick_power" type="int" /> ? ?

? ? </map>

? ??

9. 组件作为复合主键

??

? ?此时,组件必须满足:

? ?(1) 实现 java.io.serializable接口

? ?(2) 需要正确重写equals()和hashCode()方法

? ?

? ?一个映射配置中,id和composite-id只能出现一次(因为一个表只能有一个主键)

? ?

? ?<!-- 组件作为复合主键 -->

? ? <composite-id name="myCompostieKey" type="int" />?

? ? ? <key-property name="key2" type="string" />?

? ? </composite-id >

热点排行