03_Hibernate------单表映射

03 单表映射

 

  1. 单类→单表的映射

①映射主键

②映射日期类型

③数据类型映射对照表

  1. Hibernate中主键生成方式
    1. hilo

①由Hibernate根据high/low算法生成主键

②hilo标识符生成器在生成标识符时,需要读取并修改HI_TABLE表中的NEXT_VALUE值

③完全不依赖于任何数据库系统

④OID必须为long、int或short类型,如果为byte则会抛出异常

<generator class= "hilo">

   <param name= "table">HL_table </param>

   <param name= "column">NEXT_VALUE </param>

   <param name= "max_lo">]10</param >

</generator>

⑤高低算法

参见:《[Ymh_sirius]_参考资料:高低算法.doc》

    1. identity

①由具体数据库负责生成主键

②要求数据库将主键定义为自动增长类型

③支持自增主键的数据库:MySQL、DB2、微软SQLServer、Sybase等;

但是有局限性,因为Oracle不支持;

④OID必须为long、int或short类型,如果为byte则会抛出异常

    1. sequence

①利用底层的数据库提供的序列生成标识符

②要求底层数据库支持序列:DB2、Oracle

③OID必须为long、int或short类型,如果为byte则会抛出异常

④配置方式

<id name ="studentId" type="java.lang.Integer">

    <column name ="STUDENTID" />

    <generator class ="sequence">

        <param name ="sequence">stu_seq</ param>

    </generator >

</id >

 

    1. native

①依据底层数据库对自动生成标识符的支持能力,来选择使用identity、sequence或hilo

②由于native标识符生成器能够根据底层数据库系统的类型,自动选择合适的方式生成主键,所以非常适合跨数据库平台开发

③OID必须为long、int或short类型,如果为byte则会抛出异常

    1. assigned(指定的)

Hibernate和数据库都不负责生成主键的值,完全由程序员自己指定。

    1. 其他主键生成方式

select、seqhilo、foreign、guid等等

  1. 在Hibernate中映射日期和时间
    1. Java数据类型和JDBC API的对应关系

注:时间戳:从1970年1月1日0点0时0分0秒开始计时,到当前时间所经过的毫秒数

    1. Hibernate中的日期映射方式

大部分情况下Hibernate可以根据Java类型自动找到对应的Hibernate映射类型,从而确定数据库表中的字段类型,但如果一个Java类型对应的Hibernate映射类型不只一个,那么就必须为Java类型明确指定Hibernate映射类型,例如:

                                                

 

  1. Hibernate映射类型对照表

Java类型

Hibernate映射类型

标准SQL类型

大小

java.lang.Integer/int

integer/int

INTEGER

4字节

java.lang.Long/long

long

BIGINT

8字节

java.lang.Short/short

short

SMALLINT

2字节

java.lang.Byte/byte

byte

TINYINT

1字节

java.lang.Float/float

float

FLOAT

4字节

java.lang.Double/double

double

DOUBLE

8字节

java.math.BigDecimal

big_decimal

NUMERIC

 

java.lang.Character/java.lang.String/char 

character

CHAR(1)

定长字符

java.lang.String

string

VARCHAR

变长字符

java.lang.Boolean/boolean

boolean/yes_no/true_false

BIT

布尔类型

java.util.Date/java.sql.Date

date

DATE

日期

java.util.Date/java.sql.Timestamp

timestamp

TIMESTAMP

日期

java.util.Calendar

calendar

TIMESTAMP

日期

java.util.Calendar

calendar_date

DATE

日期

byte[]

binary

BLOB

BLOB

java.lang.String

text

TEXT

CLOB

实现java.io.Serializable接口的任意Java类

serializable

BLOB

BLOB

java.sql.Clob

clob

CLOB

CLOB

java.sql.Blob

blob

BLOB

BLOB

java.lang.Class

class

VARCHAR

定长字符

java.util.Locale

locale

VARCHAR

定长字符

java.util.TimeZone

timezone

VARCHAR

定长字符

java.util.Currency

currency

VARCHAR

定长字符

 

猜你喜欢

转载自blog.csdn.net/SSM_spring/article/details/90142318