扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
Hibernate映射主要是通过对象关系映射文件实现,对象关系映射文件把数据库中的实体(一般为二维表)映射到面向对象中的实体对象,把数据库中多个表之间的相互关系也反映到映射好的类中。以后,在Hibernate中对数据库的操作就直接转换为对这些实体对象的操作了。 1. 映射文件说明:
正确理解各个配置选项的含义是掌握映射文件的关键。映射文件可以对面向对象中的关联关系、继承关系和组合关系等各种关系进行配置。如: |
|
xml version="1.0" encoding="utf-8"?>
DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="org.qiujy.bean.User" table="user">
<id name="id" column="id" type="int">
<generator class="native"/>
< SPAN>id>
<property name="name" column="name" type="string"/>
<property name="age" column="age" type="int"/>
< SPAN>class>
< SPAN>hibernate-mapping> |
Java类型 |
Hibernate映射类型 |
标准SQL类型 |
int或java.lang.Integer |
integer或int |
INTEGER |
long或java.lang.Long |
long |
BIGINT |
short或java.lang.Short |
short |
SMALLINT |
byte或java.lang.Byte |
byte |
TINYINT |
float或java.lang.Float |
float |
FLOAT |
double或java.lang.Double |
double |
DOUBLE |
java.math.BigDecimal |
big_decimal |
NUMERIC |
char或java.lang.Character |
character |
CHAR(1) |
java.lang.String |
string |
VARCHAR |
boolean或java.lang.Boolean |
boolean |
BIT |
boolean或java.lang.Boolean |
yes_no |
CHAR(1)('Y'或' N') |
boolean或java.lang.Boolean |
true_false |
CHAR(1)('T'或' F') |
Java类型 |
Hibernate映射类型 |
标准SQL类型 |
说明 |
java.util.Date或java.sql.Date |
date |
DATE |
日期 |
java.util.Date或java.sql.Time |
time |
TIME |
时间 |
java.util.Date或java.sql.Timestamp |
timestamp |
TIMESTAMP |
时间戳 |
java.util.Calendar |
calendar |
TIMESTAMP |
|
java.util.Calendar |
calendar_date |
DATE |
|
Java类型 |
Hibernate映射类型 |
标准SQL类型 |
MySQL类型 |
Oracle类型 |
byte[] |
binary |
VARBINARY(或者BLOB) |
BLOB |
BLOB |
java.lang.String |
text |
CLOB |
TEXT |
CLOB |
实现java.io.Serializable接口的任意一个java类 |
serializable |
VARBINARY(或者BLOB) |
BLOB |
BLOB |
java.sql.Clob |
clob |
CLOB |
TEXT |
CLOB |
java.sql.Blob |
blob |
BLOB |
BLOB |
BLOB |
<id name="id" column="id" type="int">
<generator class="native"/>
< SPAN>id> |
标识符生成器 |
描述 |
increment: |
由hibernate自动以递增的方式生成标识符,每次增量为1.适用于代理主键. |
identity: |
由底层数据库生成标识符.数据库必须支持自动增长字段类型,不便于不同数据库之间的移植.适用于代理主键. |
sequence: |
Hibernate根据底层数据库序列来生成标识符.前提是条件是底层数据库支持序列(如Oracle).适用于代理主键. |
hilo: |
Hibernate根据high/how算法来生成标识符.适用于代理主键. |
seqhilo: |
使用一个高/低位算法来高效的生成 long , short 或者 int 类型的标识符,给定一个数据库序列(sequence)的名字.适用于代理主键. |
native: |
根据底层数据库对自动生成标识符的支持能力,来选择identity,sequence或hilo.适用于代理主键. |
uuid.hex: |
Hibernate采用128位的UUID(Universal Unique Identification)算法来生成标识符.UUID算法能够在网络环境中生成唯一的字符串标识符.但字符串型的主键比整型的主键占用更多的数据库空间.适用于代理主键. |
uuid.string: |
使用UUID算法来生成标识符.UUID被编码为一个16个字符长的任意ASCII组成的字符串。适用于代理主键. |
assigned: |
由Java应用程序负责生成标识符,需在保存数据前完成.适用于自然主键. |
……
<id name="no" column="no" type="int">
<generator class="assigned"/>
< SPAN>id>
…… |
……
<key-property name="lastName" column="lastname" type="string">
id>
…… |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者