JPA的基本运用

JPA的基本知识点

最近新接手了一个项目,这个项目就是用的JPA框架,通过网上查阅资料,才了解到JPA是一个可以快速开发的框架,封装的比较严重,基本不用自己写sql语句,全都给你封装好了,而且JPA还和hibernate有一定关系,hibernate是它的一种实现,JPA的注解已经是hibernate的核心,hibernate只提供了一些补充,而不是两套注解。下面就来具体看一下这些知识点。

  • 通过解析方法名来创建查询

    JPA主打的招牌就是快速开发,那么它究竟快在了哪儿呢,我个人认为,应该就是数据层部分,它不用写具体sql语句,而是直接通过方法名中带关键字就可以创建查询,例如

public List<MmsService> findByMmsMemberIdOrderByPriceAsc(Long id);

简单讲解一下,这句话的意思就是根据MmsMember中的id来查询MmsService这个实体类,然后按price字段来正序排列,怎么样,是不是很屌,当时我看到的第一反应就是,我去,屌炸天,没错,就是这么屌。
这些大小写不是乱写的,只有关键字可以进行大写,JPA就是通过大小写来进行解析的,所以这一点要注意。
下面来看实体类的写法

@Entity
@Table(name="MMS_SERVICE")
@NamedQuery(name="MmsService.findAll", query="SELECT m FROM MmsService m")
public class MmsService implements Serializable {

table注解:name就是指定数据库表名称,catalog指定数据库名称
schema指定数据库的用户名
NameQuery注解:name指定命名查询的名称,query指定命名查询语句

  • 如果你非得想自己写sql语句的话,也可以,下面来看一下
@Modifying
@Query("SELECT s from  MmsService s WHERE s.id=?1")
public List<MmsService> test(Long id);

modifying就是更新的意思,查询一般不用,此处可以去掉;query里面写查询语句,不过查的依旧是实体类,而非表名;此处需要注意的是既然写了sql语句,方法名中就不可以带有任何关键字,否则查询语句将不起作用。
如果有的小伙伴们就想和平常一样写sql语句呢,也不是不可以,只需加一个属性即可

@Query(value="select memberid,name from mms_service where memberid=? ",nativeQuery=true)
public List<Object[]> masterService(Long id);

nativeQuery就是本地查询,意思就是原生态的sql语句,等于true就是支持本地查询,false反之。

通过这几天的使用,感觉JPA的确能够快速开发,因为它给你封装的比较完善,但是有利有弊吧,这样长时间使用,会让你对本地sql有些生疏,建议还是有时间自己写写sql文,别把这些基础丢掉,如果有什么意见或建议,欢迎大家在留言区给我留言,谢谢。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值