• hibernate数据类型


    Hibernate映射类型分为两种:内置的映射类型和客户化映射类型。内置映射类型负责把一些常见的Java类型映射到相应的SQL类型;此外,Hibernate还允许用户实现UserTypeCompositeUserType接口,来灵活地定制客户化映射类型

    1.内置映射类型
       1).Java基本类型的Hibernate映射类型

    Java类型

    Hibernate映射类型

    标准SQL类型

    大小和取值范围

    int/Integer

    int/integer

    INTEGER

    4Byte

    long/Long   

    long

    BIGINT

    8Byte

    short/Short

    short

    SAMLLINT

    2Byte

    byte/Byte

    byte

    TINYINT

    1Byte

    float/Float

    float

    FLOAT

    4Byte

    double/Double

    double

    DOUBLE

    8Byte

    BigDecimal

    big_decimal

    NUMBERIC

    Numeric(8,2)

    char/Character/String

    character

    CHAR(1)

    定长字符

    String

    string

    VARCHAR

    变长字符

    boolean/Boolean

    boolean

    BIT

    布尔类型

    boolean/Boolean

    yes/no

    CHAR(1)('Y'/'N')

    布尔类型

    boolean/Boolean

    true/false

    CHAR(1)('T'/'F')

    布尔类型



        2). Java时间和日期类型的Hibernate映射类型

    Java类型

    Hibernate映射类型

    标准SQL类型

    描述

    java.util.Date/java.sql.Date

    date

    DATE

    日期,yyyy-mm-dd

    java.util.Date/java.sql.TIme

    time

    TIME

    时间,hhmmss

    java.util.Date/java.sql.Timestamp

    timestamp

    TIMESTAMP

    时间戳,yyyymmddhhmmss

    java.util.Calendar

    calendar

    TIMESTAMP

    同上

    java.util.Calendar

    calendar_date

    DATE

    日期,yyyy-mm-dd


    当程序类型为java.sql.Timestamp, 数据库中表属性类型为timestamp的情况下,即使用户以空值插入数据,数据库系统仍然会自动填充timestamp的值

        3). Java 大对象类型的Hibernate映射类型

    Java类型

    Hibernate映射类型

    标准SQL类型

    MySql类型

    Oracle类型

    byte[]

    binary

    VARBINARY/BLOB

    BLOB

    BLOB

    String

    text

    CLOB

    TEXT

    CLOB

    serializable

    实现serializable接口的一个java

    VARBINARY/BLOB

    BLOB

    BLOB

    java.sql.Clob

    clob

    CLOB

    TEXT

    CLOB

    java.sql.Blob

    blob

    BLOB

    BLOB

    BLOB

    *  在应用程序中通过Hibernate来保存java.sql.Clob或者java.sql.Blob实例时,必须包含两个步骤:
            a. 在一个数据库事务中先保存一个空的BlobClob实例;b. 接着锁定这条记录,更新在步骤(1)中保存的BlobClob实例,把二进制数据或长文本数据写到BlobClob实例中。

     1
     2Session session = sessionFactory.openSession();
     3Transaction tx = session.beginTransaction();
     4Customer customer = new Customer();
     5customer.setDescription(Hibernate.createClob("")); //先保存一个空的clob
     6session.save(customer);
     7session.flush();
     8//锁定这条记录
     9session.refresh(customer,LockMode.UPGRADE);
    10oracle.sql.CLOB clob = (oracle.sql.CLOB) customer.getDescription();
    11java.io.Writer pw = clob.getCharacterOutStream();
    12pw.write(longText);//longText是一个长度超过255的字符串
    13pw.close();
    14tx.commit();
    15session.close();


    *  一个java类型对应多个Hibernate映射类型的场合。例如,如果持久化类的属性为java.util.Date类型,对应的Hibernate映射类型可以是date,time
    timestamp。此时必须根据对应的数据库表的字段的SQL类型,来确定Hibernate映射类型。如果字段为Date类型,则hibernate映射为datge,如果为TIME则为time,如果为TIMESTAMP则为timestamp

  • 相关阅读:
    .net jquery ajax应用(后台)
    .net jquery ajax应用(前端)
    echarts 添加Loading 等待。
    js将数字转换为带有单位的中文表示
    关于Pre-bound JDBC Connection found! HibernateTransactionManager does not 异常小结
    java 并发容器一之ConcurrentHashMap(基于JDK1.8)
    java 并发容器一之BoundedConcurrentHashMap(基于JDK1.8)
    23中java设计模式(1)-- 策略模式
    解决Eclipse自动补全变量名的问题
    Tomcat+Jenkins+SonarQube+SVN+Maven 集成自动化环境搭建(Windows10环境下)
  • 原文地址:https://www.cnblogs.com/kuyuyingzi/p/4266389.html
Copyright © 2020-2023  润新知