Spring Data JPA的使用和分析

1、背景

    关于Spring Data JPA的简介其实官网有很全面的解释,大家没事可以去官网看看,我这里要说的时候,jpa这东西的原理其实和jdbc说起来有点相似,这里说到jdbc我们都知道数据库厂商为了使自己的数据可以被其他语言使用,所以他们就自己开发了一套一套的jar包,所以他们自己开发的数据库会对应开发出对应java语言的jar包提供连接方式,这样就造成了一个问题啊,每种不同的数据,的jdbc的jar包都是不同厂商开发的,都是不太一样的,这样就给程序开发者造成了很多相应的麻烦。所以,就有了本文要说的关键技术了——JPA。 其实jpa并不是什么连接方式或者说是实现方法,而已一套标准,而且这套标准不是数据库厂商定义的,如果以后任何一个开发orm框架的程序员都遵守这套标准,那么大家使用的时候就可以只学这一套东西就很容易的实现自己想要的操作了,JPA定义的作者其实就是Hibernate的作者,所以JPA对hibernate的兼容性是非常高的。

2、优点

    使用这套ORM框架之后,可以让程序开发人员随自己的个性来进行对数据库的操作,比如你可以写sql语句,这也是最直接的方式,对这套新框架不太了解这就是最快使用的方法,但是如果这样写,它的优势你就完全没有用到;然后你可以使用它的专有语句jpaql的方式,这个语句其实说起来和Hql有一些类似,但有些不同;然后就是这套框架的最顶级的方式,直接怼接口按照标准取名字,只要你取名字正确,就不需要些sql或者jpaql语句。

    然后就是如果使用这套框架,它可以很好的和Spring合在一起,因为它本来就是Spring全家桶之一,还有就是使用它的时候可以对数据库的迁移做到无缝连接,比如oracle数据库,吧项目换到mysql数据 都是没有问题的。

3、使用方式

使用Spring boot搭建框架时勾选Spring Data JPA的配套jar包我们就可以直接使用这个框架了,具体搭建百度有很多方案,过段时间我写一篇专门的文章搭建框架 我这里就直接写用例了

下面开始建立一个实体类

@Entity //表示该类为实体类的注解 注意使用该注解的时候,如果新项目在热启动会自动和表同步,建立属性,会自己生成表字段
@Table(name = "t_user") //这是对应数据库的表名
public class User {
    @Id //该注解表示该字段给ID
    @GeneratedValue(strategy = GenerationType.IDENTITY) //设置不能空 
    @Column(name = "USERID") //对应表中的字段名
    private Integer id;
    @Column(name = "user_name")
    private String username;
    @Column(name = "user_password")
    private String password;

    public Integer getId() {
        return id;
    }

    public String getUsername() {
        return username;
    }

    public String getPassword() {
        return password;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

上面实体类建立完成之后,我们就可以建立查询了,在JPA中查询就非常的快捷

下面我建立了查询的抽象类并且写了三个方法,这三个方法的用法都一样,主要写出来是提现JPA的不同使用方式。

public interface UserRepository extends JpaRepository<User,Long> { //这里首先需要的是基础JPA的公共类
    public List<User> findAllById (Integer id); //这个方法是按照JPA的接口命名的方式规范命名就可以不用谢实现SQL

    @Query("select u from user u where u.id = ?1",nativeQuery = true)
    public List<User> selectAllSQL(Integer id); //这里使用的是SQL语句查询的方式,主要的是传入参数?要按照顺序取

    @Query("from user where id =: ?")
    public  List<User> selectAllJPAQL(@Param("id") Integer id); //这里是有的JPAQL语句,改语句查询方式类似于HQL但是有所不同
}

JPA就暂时介绍到这,主要JPA上面这个抽象类需要写一个实现类,但是里面不需要写任何方法就行了,后续我会继续更新。



发布了27 篇原创文章 · 获赞 13 · 访问量 5万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览