文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Hibernate 映射基础

Hibernate 映射基础

时间:2010-10-13  来源:菊次郎

建议: 一个class类对应一个映射文件

映射文件分为多个层级元素:

第一层: <hibernate-mapping> 元素中的参数, 参考手册

第二层: <class name="alex.Person" table="T_PERSON" >元素中的参数, 参考手册, 其中一个比较有用的字段是optimistic-lock: Version 检查version /timestamp字段

 

接下来:

<id name="almClearTypeId" type="java.lang.Long">

<column name="CLEAR_TYPE_ID" precision="2" scale="0" />

<generator class="native" />

</id>

特别讲一下生成策略:

比较有用的是hilo和seqhilo, 以及uuid(强烈推荐, 32位字符串)

 

<version>元素: 表明表中包含附带的版本信息的数据, 这在长事务特别有用.

<timestamp>元素: 表明表中包含时间戳数据, 用来代替<version>

 

最后就是:

<property name="name" type="java.lang.String">

<column name="NAME" length="64" not-null="true" />

</property>

 

多对一:

<many-to-one name="product" class="Product" column="PRODUCT_ID" />

比较重要的属性:

Cascade属性: 把特定的操作传递到关联对象

Fetch: 在外连接抓取 和 序列选择抓取 中选择一个

Lazy false 表示此关联总是被预先抓取.

 

一对一:

<one-to-one name="person" class="Person"/>

两种: 主键关联, 唯一外键关联

如果两个对象通过主键1对1关联, 必须确认它们被赋予同样的标识id

我们必须保证PERSON和EMPLOYEE表中的相关字段必须是相等的.

<class name="person" table="PERSON">

<id name="id" column="PERSON_ID">

<generator class="foreign">

<param name="property">employee</param>

</generator>

</id>

<one-to-one name="employee" class="Employee" />

</class>

 

<subclass> 多态持久化需要为父类的每一个子类都进行定义. 对于"每一棵类继承树对应一个表"的策略来说, 就需要使用<subclass>

对于每个子类一个表的策略, 被继承的状态通过和超类的表关联得到, 我们使用<joined-subclass>元素

每个具体类一张表的策略(映射继承树中具体类部分到表中), 使用<union-subclass>映射

 

<key> 在父映射元素定义了对新表的连接.

 

将java类型系统映射到sql/数据库系统,

对于实体类型: 使用<class> <subclass>

对于值类型: 使用<Property> <component>以及其他.

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载