Hibnate-数据类型映射与对象状态

数据类型

Java数据类型

Hibernate数据类型

标准SQL数据类型
(PS:对于不同的DB可能有所差异)

byte、java.lang.Byte

byte

TINYINT

short、java.lang.Short

short

SMALLINT

int、java.lang.Integer

integer

INGEGER

long、java.lang.Long

long

BIGINT

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)

boolean、java.lang.Boolean

boolean

BIT

java.lang.String

string

VARCHAR

boolean、java.lang.Boolean

yes_no

CHAR(1)('Y'或'N')

boolean、java.lang.Boolean

true_false

CHAR(1)('Y'或'N')

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

byte[]

binary

VARBINARY、BLOB

java.lang.String

text

CLOB

java.io.Serializable

serializable

VARBINARY、BLOB

java.sql.Clob

clob

CLOB

java.sql.Blob

blob

BLOB

java.lang.Class

class

VARCHAR

java.util.Locale

locale

VARCHAR

java.util.TimeZone

timezone

VARCHAR

java.util.Currency

currency

VARCHAR

对象状态 

四种状态

OID

Session缓存中

对应记录

临时状态

不在

持久化状态

游离状态

不在

删除状态

有,但无效

不在

 实体类

  1. 持久化类需要提供无参数的构造方法。因为在Hibernate的底层需要使用反射生成类的实例。
  2. 持久化类的属性需要私有,对私有的属性提供公有的get和set方法。因为在Hibernate底层会将查询到的数据进行封装。
  3. 持久化类的属性要尽量使用包装类的类型。因为包装类和基本数据类型的默认值不同,包装类的类型语义描述更清晰而基本数据类型不容易描述。

假设表中有一列员工工资,如果使用double类型,如果这个员工工资忘记录入到系统中,系统会将默认值0存入到数据库,如果这个员工工资被扣完了,也会向系统中存入0.那么这个0就有了多重含义,而如果使用包装类类型就会避免以上情况,如果使用Double类型,忘记录入工资就会存入null,而这个员工工资被扣完了,就会存入0,不会产生歧义。

  1. 持久化类要有一个唯一标识OD与表的主键对应。因为Hibernate中需要通过这个唯一标识OD区分在内存中是否是同一个持久化类。在Java中通过地址区分是否是同一个对象的,在关系型数据库的表中是通过主键区分是否同一条记录。那么Hibernate就是通过这个OD来进行区分的。Hibernate是不允许在内存中出现两个OD相同的持久化对象的。
  2. 持久化类尽量不要使用final进行修饰。因为libernate中有延迟加载的机制,这个机制中会产生代理对象,hibernate产生代理对象使用的是字节码的增强技术完成的,其实就是产生了当前类的一个子类对象实现的。如果使用了fnal修饰持久化类。那么就不能产生子类,从而就不会产生代理对象,那么Hibernate的延迟加载策略(是一种优化手段)就会失效。

四种状态之间的转换

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hibernate是一个Java持久化框架,它提供了一种对象关系映射(ORM)的解决方案,用于将Java对象与关系型数据库进行映射和交互。 Hibernate的主要目标是简化数据库相关操作,提供一种面向对象的方式来处理数据持久化。它允许开发人员使用面向对象的方式来操作数据库,而无需编写复杂的SQL查询和数据库操作代码。 Hibernate的核心功能包括: 1. 对象关系映射(ORM):Hibernate通过映射Java类和数据库表之间的关系,实现对象数据库之间的转换。它将Java对象持久化到数据库中,并从数据库中检索数据,使开发人员可以使用面向对象的方式来操作数据。 2. 数据库操作:Hibernate提供了一套丰富的API和查询语言(HQL、Criteria查询),用于执行各种数据库操作,例如插入、更新、删除和查询数据。 3. 缓存管理:Hibernate提供了一个缓存机制,用于缓存从数据库中检索的数据,以提高应用程序的性能。通过缓存,Hibernate可以避免频繁地访问数据库,从而提高响应速度和减少数据库负载。 4. 事务管理:Hibernate支持事务管理,可以确保在数据库操作中的一系列操作要么全部成功提交,要么全部回滚,以保持数据的一致性和完整性。 Hibernate具有广泛的应用领域,在企业级Java应用程序开发中得到了广泛的应用。它简化了数据库操作的复杂性,提高了开发效率,并提供了灵活和可扩展的数据访问解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值