Hibernate(2)——单表操作

一、 单一主键策略

  • assigned:表示由java程序来指定id或者手工赋值
  • native:由底层数据库自动生成标识符。如果是MySQL就是auto_increment,如果是Oracle就是sequence。

二、 数据基本类型

Hibernate映射类型Java类型标准SQL类型大小
integer/intjava.lang.Integer/intINTEGER4字节
longjava.lang.LongBIGINT8字节
shortjava.lang.ShortSAMLLINT2字节
bytejava.lang.Byte/byteTINYINT1字节
floatjava.lang.Float/floatFLOAT4字节
doublejava.lang.Double/doubleDOUBLE8字节
big_decimaljava.math.BigDecimalNUMERIC
characterjava.lang.Character/java.lang.String/charCHAR(1)定长字符
stringjava.lang.Stringvarchar变长字符
boolean/yes_no/true_falsejava.lang.Boolean/booleanBIT布尔类型
datejava.util.Date/java.sql.DateDATE日期
timestampjava.util.Date/java.sql.TimestampTIMESTAMP日期
calendarjava.util.CalendarTIMESTAMP日期
calendar_datejava.util.CalendarDATE日期

上述表格中,日期、时间的类型较容易混淆,需要注意,Hibernate类型的date表示日期(对应java类型中的Date),time则表示时分秒,timestamp是时间戳(包含日期以及时分秒),calendar与timestamp相同,calendar_date代表日期年月日。

三、 对象类型

Hibernate映射类型Java类型标准SQL类型MySQL类型Oracle类型
binarybyte[]VARCHAR(BLOB)BLOBBLOB
textjava.lang.StirngCLOBTEXTCLOB
clobjava.sql.ClobCLOBTEXTCLOB
blobjava.sql.BlobBLOBBLOBBLOB

在MySQL中不支持标准SQL的CLOB类型,在MySQL中,用TEXT/MEDIUMTEXT/LONGTEXT来表示长度超过255的长文本数据。

四、 组件属性

实体类的某个属性属于用户自定义类的对象,这就叫做组件属性。

<component name="address" class="Address">
    <property name="postcode" column="POSTCODE"/>
    <property name="phone" column="PHONE"/>
    <property name="address" column="ADDRESS"/>
</component>

例如,如果某个实体类对象有一个address属性,那么它就是一个组件属性。在对象关系映射文件(*.hbm.xml)中,上述component标签和property是同一级的。

五、 单表CRUD方法

使用session的save()、update()、delete()、查询单个结果:get()/load()。
get()/load()方法:第一个参数代表要查询的实体类或者表,第二个参数表示要查询的对象的主键.
get()和load()的区别
1. 在不考虑缓存的情况下,get()方法会在调用之后立刻向数据库发出SQL语句,返回持久化对象。load()在调用之后返回的是一个代理对象,该对象只保存一个id属性,只有在其他非主键属性被使用到时才发出SQL语句。
2. 当查询的数据不存在时,get()返回的是null。而load()则抛出org.hibernate.ObjectNotFoundException.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值