Java学习之hibernate(二)

第三章

1.单一主键

assigned由Java应用程序负责生成(手工赋值)。

native由底层数据库自动生成标示符,如果是MySQL就是increment,如果是Oracle就是sequence,等等。

2.基本类型

Hibernate映射类型

Java类型

标准SQL类型

大小

integer/int

java.lang.Integer/int

INTEGER

4字节

long

java.lang.Long/long

BIGINT

8字节

short

java.lang.Short/short

SMALLINT

2字节

byte

java.lang.Byte/byte

TINYINT

1字节

float

java.lang.Float/float

FLOAT

4字节

double

java.lang.Double/double

DOUBLE

8字节

big_decimal

java.math.BigDecimal

NUMERIC

 

character

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

CHAR(1)

定长字符

string

java.lang.String

VARCHAR

变长字符

boolean/yes_no/true_false

java.lang.Boolean/Boolean

BIT

布尔类型

date

java.util.Date/java.sql.Date

DATE

日期

timestamp

java.util.Date/java.util.Timestamp

TIMESTAMP

日期

calendar

java.util.Calendar

TIMESTAMP

日期

calendar_date

java.util.Calendar

DATE

日期

 

 

映射类型

Java类型

标准SQL类型

描述

date

java.util.Date或java.sql.Date

DATE

代表日期:yyyy-MM-dd

time

java.util.Date或java.sql.Time

TIME

代表时间:hh:mi:ss

timestamp

java.util.Date或java.sql.Timestamp

TIMESTAMP

代表时间和日期:yyyymmddhhmiss

calendar

java.util.Calendar

TIMESTAMP

同上

calendar_date

java.util.Calendar

DATE

代表日期:yyyy-MM-dd

 

3.对象类型

 

映射类型

Java类型

标准SQL类型

MYSQL类型

Oracle类型

binary

byte[]

VARCHAR(或BLOB)

BLOB

BLOB

text

java.lang.String

CLOB

TEXT

CLOB

clob

java.sql.Clob

CLOB

TEXT

CLOB

blob

java.sql.Blob

BLOB

BLOB

BLOB

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

 

4.组件属性

实体类中的某个属性属于用户自定义的类的对象

如:

< component name="address" class="Address">

< property name="postcode" column="POSTCODE"> </property>

< property name="phone" column="PHONE"> </property>

< property name="address" column="ADDRESS" > </property>

</component>

5.单表操作CRUD实例

save

update

delete

get/load(查询单个记录)

get与load的区别:

  1. 在不考虑缓存的情况下, get方法会在调用之后立即向数据库发出sq|语句,返回持久化对象。

load方法会在调用后返回一个代理对象。

该代理对象只保存了实体对象的id ,直到使用对象的非主键属性时才会发出sql语句。

  1. 查询数据库中不存在的数据时, get方法返回null,load方法抛出异常org.hibernate.ObjectNotFoundException

Hibernate一对多的映射

一对多

多对一

一对多关联

在数据库中,可以通过添加主外键表现一对多的关系

通过在一方持有多方的集合实现,即在“一”的一端使用<set>元素表示持有“多”的一端对象。

set元素的常用属性

属性

含义和作用

必须

默认值

name

映射类属性的名称

Y

 

table

关联类的目标数据库表

N

 

lazy

指定关联对象是否使用延迟加载

N

proxy

inverse

标识双向关联中被动的一方

N

false

单向多对一关联

多对一的关系和关系数据库中的外键参照关系最匹配,即在己方的表中的一个外键参照另一个表的主键

通过在多方持有一方的引用实现,需要在“多”的一端使用<many-to-one>配置

inverse属性

<set>节点的inverse属性指定关联关系的控制方向,默认由one方来维护。

关联关系中,inverse=”false”则为主动方,由主动方负责维护关联关系

在一对多关联中,只能设置one方的inverse为true,这将有助于性能的改善

cascade属性

当设置cascade属性不为none时,hibernate会自动持久化所关联的对象

cascade属性的设置会带来性能上的改动,需谨慎设置

属性值

含义和作用

all

对所有操作进行级联操作

save-update

执行保存和更新操作时进行级联操作

delete

执行删除操作时进行级联操作

none

对所有操作不进行级联操作

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值