Hibernate类型映射之内置类型映射
Hibernate的类型映射类型从总体上可以分为两种:内置类型映射和客户类型映射。内置类型映射负责把一些常见的java类型映射到sql类型:此外,Hibernate还允许用户实现UserType或CompositeUserType接口,来灵活的制定客户化映射类型。客户类型映射可以将用户定义的java类映射到数据库表的相应字段。
内置类型映射:
(1) Java基本类型的Hibernate映射:
表2.1列出了Hibernate中的映射类型和与其对应的Java类型以及对应的标准SQL类型和相应的说明。
表2.1
Hibernate映射类型 | Java类型 | 标准SQL类型 | 说明 |
integer或者int | int或者java.lang.Integer | INTEGER | 4字节 |
long | long或者java.lang.Long | BIGINT | 8字节 |
short | short或者java.lang.Short | SMALLINT | 2字节 |
byte | byte或者java.lang.Byte | TINYINT | 1字节 |
float | float或者java.lang.Float | FLOAT | 4字节,单精度浮点数 |
double | double或者java.lang.Double | DOUBLE | 8字节,双精度浮点数 |
big_decimal | java.math.BigDecimal | NUMERIC | NUMERIC(8,2)表示共8位数字,其中两位是小数 |
character | char或者java.lang.Character,java.lang.String | CHAR(1) | 定长字符 |
string | java.lang.String | VARCHAR | 变长字符 |
boolean | boolean或者java.lang.Boolean | BIT | 布尔类型 |
yes_no | boolean或者java.lang.Boolean | CHAR(1)(‘Y’ 或者’N’) | 布尔类型 |
true_false | boolean或者java.lang.Boolean | CHAR(1)(‘T’ 或者’F’) | 布尔类型 |
2、Java时间和日期类型的Hibernate的类型映射:
在Java中,代表时间和日期的类型包括:java.util.Date 和 java.util.Calendar。此外在JDBC API中还提供了三个扩展了java.util.Date类的子类:java.sql.Date 和 java.sql.Time 以及 java.sql.Timestamp,这三个类分别和标准sql类型中的DATE,TIME,TIMESTAMP相对应。
表2.2列出了Hibernate中的映射类型和与其对应的Java日期类型以及对应的标准SQL类型和相应的说明。
表2.2
映射类型 | Java类型 | 标准SQL类型 | 说明 |
date | java.util.Date或者java.sql.Date | DATE | 代表日期:形势为YYYY-MM-DD |
time | java.util.Date或者java.sql.Time | TIME | 代表时间:形式为HH:MM:SS |
timestamp | java.util.Calendar | TIMESTAMP | 代表时间和日期,形式为YYYYMMDDHHMMSS |
calendar | 同上 | 同上 | 同上 |
calendar_date | java.util.Calendar | DATE | 代表日期:形势为YYYY-MM-DD |
字段类型映射配置事例:
<property name=”name” column=”Name” type=”string”/>
<property name=”birthday” column=”Brithday” type=”date”/>
<property name=”registereddate” column=”Registereddate” type=”timestamp”/>
下图为以上配置对应的数据库表:
Name varchar2(20) Birthday DATE Registereddate Timestamp |
3、JDK自带的个别Java类的Hibernate映射类型:
表2.3列出了个别Java类的Hibernate映射类型,与此对应的标准SQL类型均为VARCHAR类型。
表2.3
映射类型 | Java类型 | 标准SQL类型 |
class | java.lang.Class | VARCHAR |
locale | java.util.Locale | VARCHAR |
timezone | java.util.TimeZone | VARCHAR |
currency | java.util.Currency | VARCHAR |
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1667224