Hibernate:命名SQL查询

命名SQL查询顾名思义就是将SQL语句从程序中抽出来,放在注解中管理,然后给每个SQL查询起一个名称,在程序中仅需要调用此名称即可,从而可以更好的提高程序的解耦。

Hibernate允许使用@NamedNativeQuery注解来定义命名的原生SQL查询,如果有多个命名查询,则使用@NamedNativeQueries注解来管理。


下面@NamedNativeQuery注解支持的属性:

name:指定命名SQL查询的名称 必须具备属性

query 指定命名SQL查询的查询语句 必须具备属性

resultClass 在简单查询中将查询结果映射成指定实体类的实例,类似于addEntity()作用。 非必须具备属性

resultSetMapping 该属性指定一个SQL结果映射的名称(该结果映射需要使用@SqlResultSetMapping定义),

            用于使用该结果映射来转换查询结果集。

简单查询时我们使用resultClass将查询结果转化为相应实体就可以了,但是如果是查询数据列较多,而且程序希望同时进行标量查询、实体查询,那就必须借助于resultSetMapping。

如果需要使用@NamedNativeQuery注解指定resultSetMapping属性(也就是需要复杂查询时)则还需要使用@SqlResultSetMapping定义SQL结果映射,@SqlResultSetMapping的作用就是将查询到的结果集转换为标量查询或者实体查询,类似于SQLQuery对象的addScalar()或者addEntity()方法的功能。

可能对于resultSetMapping和@SqlResultSetMapping两者容易混淆,搞不清楚到底是干什么的,通俗点讲就是 @SqlResultSetMapping是制定结果映射规则的,结果集是转化为标量查询还是实体查询我制定。 resultSetMapping是通过上面制定的映射名称引用这个结果映射的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值