快速业务通道

Hibernate入门之二 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
有利于管理和维护映射文件。

元素指定类和表的映射,它的name属性设定类名,table属性设定表名。以下代码表明和Customer类对应的表为CUSTOMERS表:

<class name="mypack.Customer" table="CUSTOMERS">

如果没有设置元素的table属性,Hibernate将直接以类名作为表名,也就是说,在默认情况下,与mypack.Customer类对应的表为Customer表。

元素包含一个子元素及多个子元素。子元素设定持久化类的OID和表的主键的映射。以下代码表明Customer类的id属性和CUSTOMERS表中的ID字段对应。

<id name="id" column="ID" type="long">   <generator class="increment"/>   </id>

元素的子元素指定对象标识符生成器,它负责为OID生成惟一标识符。本书第5章(映射对象标识符)详细介绍了Hibernate提供的各种对象标识符生成器的用法。

子元素设定类的属性和表的字段的映射。子元素主要包括name、type、column和not-null属性。

1.元素的name属性

元素的name属性指定持久化类的属性的名字。

2.元素的type属性

元素的type属性指定Hibernate映射类型。Hibernate映射类型是Java类型与SQL类型的桥梁。表2-4列出了Customer类的属性的Java类型、Hibernate映射类型,以及CUSTOMERS表的字段的SQL类型这三者之间的对应关系。

表2-4 Java类型、Hibernate映射类型以及SQL类型之间的对应关系

Customer类的属性Java类型 Hibernate映射类型CUSTOMERS表的字段SQL类型namejava.lang.StringstringNAMEVARCHAR(15)emailjava.lang.StringstringEMAILVARCHAR(128)passwordjava.lang.StringstringPASSWORDVARCHAR(8)phoneintintPHONEINTaddressjava.lang.StringstringADDRESSVARCHAR(255)sexcharcharacterSEXCHAR(1)marriedbooleanbooleanIS_MARRIEDBITdescriptionjava.lang.StringtextDESCRIPTIONTEXTimagebyte[]binaryIMAGEBLOBbirthdayjava.sql.DatedateBIRTHDAYDATEregisteredTimejava.sql.TimestamptimestampREGISTERED_TIMETIMESTAMP

从表2-4看出,如果Customer类的属性为java.lang.String类型,并且与此对应的CUSTOMERS表的字段为VARCHAR类型,那么应该把Hibernate映射类型设为string,例如:

<property name="name" column="NAME" type="string" not-null="true" />

如果Customer类的属性为java.lang.String类型,并且与此对应的CUSTOMERS表的字段为TEXT类型,那么应该把Hibernate映射类型设为text,例如:

<property name="description" column="DESCRIPTION" type="text"/>

如果Customer类的属性为byte[]类型,并且与此对应的CUSTOMERS表的字段为BLOB类型,那么应该把Hibernate映射类型设为binary,例如:

<property name="image" column="IMAGE" type="binary"/>

如果没有显式设定映射类型,Hibernate会运用Java反射机制先识别出持久化类的属性的Java类型,然后自动使用与之对应的默认的Hibernate映射类型。例如,Customer类的address属性为java.lang.String类型,与java.lang.String对应的默认的映射类型为string,因此以下两种设置方式是等价的:

<property name="address" column="ADDRESS"/>

或者:

<property name="address" type="string" />

对于Customer类的description属性,尽管它是java.lang.String类型,由于CUSTOMERS表的DESCRIPTION字段为text类型,因此必须显式地把映射类型设为text。

Hibernate入门之二(5)

时间:2011-02-28

3.元素的not-

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号