Hibernate hbm文件下property標籤屬性之type

1. java.lang.String 或 hibernate string

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

java

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

建表時: mysql

mysql-->description varchar(255) sql

oracle-->description varchar2(255) 數據庫

  1. 從上文中能夠發現,當property type值爲java.lang.String或string時,若是沒有爲property執行length屬性,則hibernate默認會將字段設置爲255個字符長度
  2. mysql下,若是設置length的值<=255,則hibernate建表時生成的字段類型是varchar(len),若是length的值>255,則hibernate建表時生成的字段類型是longtext
  3. oracle下,若是設置length的值<=4000,則hibernate建表時生成的字段類型是varchar2(len),若是length的值>4000,則hibernate建表時生成的字段類型是long,注意當前的long不是長整型,其最多能夠存儲2GB數據。

2. hibernate text

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

建表時: oracle

mysql-->description longtext spa

oracle-->description varchar(255),可是去數據庫查看ddl,發現是description varchar2(255) hibernate

  1. oracle下,若是length屬性的值最大爲4000,若是超過4000,拋異常:ERROR: ORA-00910: 指定的長度對於數據類型而言過長
  2. oracle下,hibernate輸出的建表語句都是description varchar(len),可是去數據庫查看ddl,發現是description varchar2(len),這裏須要注意的

3. java.sql.Clob

<property name="description" type="java.sql.Clob"></property>

建表時: code

mysql-->description longtext xml

oracle-->description clob ip

  1. mysql下,即便更改length的值,hibernate建表時,字段類型依然是longtext
  2. oracle下,即便更改length的值,hibernate建表時,字段類型依然是clob 

4. java.util.Date 或 java.sql.Timestamp 或 hibernate timestamp

<property name="expireTime" type="java.util.Date"/>

<property name="expireTime" type="java.sql.Timestamp"/>

<property name="expireTime" type="timestamp"/>

建表時:

mysql-->expireTime datetime

oracle-->expireTime date

    1. mysql下,datetime類型的字段能夠存儲日期和時間,以下圖所示:

    2. oracle下,date類型字段能夠存儲日期和時間,以下圖所示:

5. java.sql.Date 或 hibernate date

<property name="expireTime" type="java.sql.Date"/>

<property name="expireTime" type="date"/>

建表時:

mysql-->expireTime date

oracle-->expireTime date

    1. mysql下,date類型的字段僅僅能夠存儲日期,以下圖所示:

    2. oracle下,date類型字段能夠存儲日期和時間,以下圖所示:

6. java.sql.Time 或 hibernate time


<property name="expireTime" type="java.sql.Time"/>

<property name="expireTime" type="time"/>

建表時:

mysql-->expireTime time

oracle-->expireTime date

    1.mysql下,time類型字段僅僅能夠存儲時間,以下圖所示:

    2. oracle下,date類型字段能夠存儲日期和時間,以下圖所示:

相關文章
相關標籤/搜索