hibernate 使用和查询

主键的生成策略:

Oracle: assigned identity native assigned sequence

SQL: assigned sequence

类型说明:

assigned: 主键由外部程序负责生成,无需Hibernate参与。

hilo: 通过hi/lo 算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态。高低算法

increment: 主键按数值顺序递增

identity:采用数据库提供的主键生成机制。如DB2、SQL Server、MySQL中的主键生成机制

sequence:  采用数据库提供的sequence 机制生成主键。如Oralce 中的Sequence

native:由Hibernate根据底层数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式

uuid.hex: 由Hibernate基于128 位唯一值产生算法生成16 进制数值(编码后以长度32 的字符串表示)作为主键

uuid.string:与uuid.hex 类似,只是生成的主键未进行编码(长度16)。在某些数据库中可能出现问题(如PostgreSQL)

foreign: 使用外部表的字段作为主键。一般而言,利用uuid.hex方式生成主键将提供最好的性能和数据库平台适应性

举例说明“::

不存在的字段表自动创建:




hbm2ddl:

update:只会影响数据的字段

create:如果不存在,会删除相关表结构,再新建,效率低!!!




hibernate查询:

1.Session接口中的方法介绍:

beginTransaction() :  事务

void delete(Object object): 删除与该对象关联的数据里内的一条记录

Serializable save(Object object): 将一个实体实例持久化,返回该持久化实例的id。在持久化之前必须手动或自动的指派id。

void update(Object object): 通过给定的分离状态的实例的id更新数据库记录

saveOrUpdate():兼具了save()和update()方法的功能,该方法根据传入参数的状态执行不同的操作,
当为临时状态时,调用save()方法;
当为持久化状态时,则直接返回;
当为游离状态时,调用update()方法

merge():

主要用于更新和保存实体,
当实体不存在是,则执行保存操作,
当实体已经存在时,执行更新操作,
其实同saveOrUpdate()的功能是类似的。 

clear():清除缓存

evict(Object object) :清除某个缓存,有点类似:session.removeAttribute(o);

close():关闭会话

 flush():可以强制进行从内存到数据库的同步


2.VO,PO 介绍

Hibernate的对象有3种状态:

瞬时态(Transient) :

瞬时对象和脱管对象也称为VO(Value Object)。

持久态(Persistent)

处于持久态的对象也称为PO(Persistence Object)  持久对象具有如下特点

和session实例关联

在数据库中有与之关联的记录

脱管态(Detached)



如图:


3.get和load方法的区别:

作用根据主键查询数据

get  查询数据不存在返回null,没有采用延迟加载

load  查询数据不存在报错误,采用延迟加载【懒加载】

查询返回的是代理对象,如果查询的代理对象没有使用,不会进行真正的查询

4.HQL查询

HQL(Hibernate Query Language)针对hibernate的查询语言

HQL和SQL的比较

HQL:完全面向对象,对象名 属性,类名,属性名 是区分大小的

SQL:面向关系型数据库,表名 字段名

具体查询操作:

1.多行一列,输出用Object接收

2.多行多列:输出用object[]

3.多行所有列:用对象接受,不能用*


4.查询统计数据:uniqueResult()  =》返回结果是long,count(1) 不被支持


5.带条件查询

1.占位符

2.命名参数

3.Map

4.对象

6.分页查询

7.批量修改

8.批量删除

5.容器查询:

6.原生本地SQL查询

1.多行一列

2.多行多列

3.多行所有列

4.查询统计数据。列别名,及指定返回类型

5.其他的




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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值