hibernate_day4(主键生成器+HQL)

  • 格式:doc
  • 大小:78.00 KB
  • 文档页数:4

Hibernate框架Day4
1.主键生成器Generator
前提:主键生成器的注解必须应用在ID属性之上。

自然主键(唯
一、不能有业务含义)
使用:@GenericGenerator(name=””,strategy=”increment”)
@GeneratedValue(generator=””)
1.increment
特点:查询当前表的最大值+1做为新纪录的主键
问题:产生多用户并发访问,主键冲突的问题。

2.sequence
特点:调用数据库底层的sequence完成主键生成。

注意:数据库必须支持sequence这种技术。

Oracle、DB2、Postgre
strategy=”sequence”默认调用hibernate_sequence
如果自定义注解名字:
3.identity
特点:支持那些应用主键自增关键字的数据库。

MySQL、SQLServer
4.uuid
特点:生成全球唯一的字符串主键
5.assigned
特点:手工分配主键生成器
2.JPA规范与Hibernate的关系
Java Persistence API 是从JavaEE5 诞生一组接口,Hibernate就是JPA实现技术。

@GenericGenerator 非JPA注解
JPA提供的标注的主键生成,sequence,Identity
@Cascade 非JPA注解
建议sequence,identiy 标注JPA ,其他用非标
3.HQL(Hibernate Query Language)
Object ret = Session.get(XXX.class,pk);
非id的查询:复杂查询
Query query = session.createQuery(“HQL”);
List<> ret = query.list();
查询所有Person的数据
Query query = session.createQuery(“from Person”)
动态参数:以?代表数据
在执行之前query.setXXX(idx,Object) idx=0
//返回结果是多行数据
query.list();
//返回单个结果
query.uniqueResult()
HQL的语法:
1.单表HQL的处理
a)在SQL中所学习的所有运算符,谓词HQL同样适用
算数运算+-*
比较运算> < >= <= != <> =
逻辑运算符and or not
谓词between and in 、is null、is not null、like
b)投影查询(Project)
在HQL中应用select子句。

每一行的查询结果就不
能封装成对象,分装成Object[]
注意:开发中与聚合函数使用,Hibernate只认select
c)聚合函数(分组函数)只能出现在select和having语句中
count() avg() max() min() sum()
d)分组group by
e)分组之后的条件查询having
having 只能应用分组函数
f)排序order by [asc,desc]。