Rumah  >  Artikel  >  Java  >  Bagaimana SpringBoot menyepadukan rangka kerja JPA

Bagaimana SpringBoot menyepadukan rangka kerja JPA

王林
王林ke hadapan
2023-05-19 09:52:501867semak imbas

    1 Gambaran keseluruhan akses data Spring Boot

    Spring Data ialah rangka kerja sumber terbuka yang direka untuk memudahkan akses pangkalan data dan menyokong Cloud. perkhidmatan, disediakan oleh Spring. Ia merupakan projek payung yang merangkumi sejumlah besar penyelesaian capaian data untuk pangkalan data perhubungan dan bukan perhubungan. Ia direka untuk membolehkan kami menggunakan pelbagai teknologi capaian data dengan cepat dan mudah. Secara lalai, Spring Boot menggunakan kaedah menyepadukan Spring Data untuk menyatukan lapisan capaian data Dengan menambahkan sejumlah besar konfigurasi automatik, memperkenalkan pelbagai templat capaian data xxxTemplate dan antara muka Repositori bersatu, ia memudahkan operasi lapisan capaian data.

    Data Spring menyediakan sokongan untuk pelbagai jenis pangkalan data menyepadukan dan mengurus pangkalan data yang disokong oleh Spring Data dan menyediakan pelbagai permulaan pergantungan. Jadual boleh digunakan untuk menyenaraikan pemula pergantungan pangkalan data yang biasa digunakan Spring Boot.

    名称 描述
    mybatis-spring-boot-starter MyBatis启动器
    mybatis-plus-boot-starter MyBatis-Plus启动器
    spring-boot-starter-data-jpa Spring Data JPA与Hibernate的启动器
    spring- boot starter-data-redis Redis键值数据存储与Spring Data Redis和Jedis客户端的启动器
    spring-boot-starter-data-neo4j Neo4j图数据库和Spring Data Neo4j的启动器
    spring-boot-starter-data-mongodb MongoDB和Spring Data MongoDB的启动器

    2. Pengenalan kepada Spring Data JPA

    JPA (Java Persistence API, Java persistence API) ialah spesifikasi kegigihan Java yang dicadangkan secara rasmi oleh Sun Ia menyediakan pemetaan objek/hubungan untuk pembangun Java Alat ini menguruskan hubungan data dalam Java. Tujuan utamanya adalah untuk memudahkan kerja pembangunan kegigihan sedia ada dan mengintegrasikan teknologi ORM (Pemetaan Perhubungan Objek, Pemetaan Objek/Perhubungan). Berdasarkan spesifikasi JPA, Spring Data menggunakan sepenuhnya kelebihannya dan mencadangkan modul Spring Data JPA untuk melaksanakan operasi kegigihan pada data hubungan ORM.

    Spring Data JPA ialah satu set rangka kerja aplikasi JPA yang dirangkumkan oleh Spring berdasarkan rangka kerja ORM dan spesifikasi JPA Ia menyediakan fungsi biasa seperti penambahan, pemadaman, pengubahsuaian dan pertanyaan, membolehkan pembangun melaksanakan operasi data dengan kurang. kod. Ia juga mudah dikembangkan. Sebelum memperkenalkan integrasi Spring Boot bagi JPA, mari kita perkenalkan secara ringkas penggunaan asas Spring Data JPA.

    2.1 Menulis kelas entiti ORM

    Rangka kerja JPA Spring Data beroperasi pada data dengan perhubungan ORM, jadi apabila menggunakan Spring Data JPA, anda perlu menulis kelas entiti terlebih dahulu untuk dipetakan dengan jadual data , dan konfigurasikan perhubungan pemetaan.

    @Entity(name = "t_comment")  // 设置ORM实体类,并指定映射的表名
    public class Discuss {
        @Id   // 表明映射对应的主键id
        @GeneratedValue(strategy = GenerationType.IDENTITY) // 设置主键自增策略
        @Column(name = "article_id")  // 指定映射的表字段名
        private Integer articleId;
        // Generate: Getter and Setter、toString()
    }

    Berkenaan kod di atas, Saudara Yi memberi penjelasan ringkas tentang anotasi yang digunakan.

    Gunakan anotasi @Entity untuk menunjukkan bahawa anda ingin memetakan kelas entiti ke pangkalan data Pada masa ini, nama jadual pangkalan data secara lalai kepada huruf pertama nama kelas dalam huruf kecil. Sudah tentu, anda juga boleh menggunakan atribut nama untuk menentukan nama jadual yang dipetakan.

    @ld: Diberi anotasi pada atribut kelas atau kaedah pengambil, menunjukkan bahawa atribut tertentu sepadan dengan kunci utama dalam jadual.

    Anotasi @GeneratedValue boleh diabaikan Ia ditandakan dalam kedudukan yang sama dengan anotasi @ld dan digunakan untuk menentukan strategi penjanaan kunci utama yang sepadan dengan atribut. Strategi penjanaan kunci utama yang disokong oleh Spring Data JPA termasuk JADUAL (gunakan jadual pangkalan data khusus untuk menyimpan kunci utama), SEQUENCE (strategi penjanaan kunci utama pangkalan data yang tidak menyokong penambahan auto kunci utama), IDENTITY (auto-kunci utama). kenaikan) dan AUTO (JPA secara bebas memilih 3 strategi hadapan yang sesuai, yang merupakan pilihan lalai).

    Apabila atribut kelas dan nama medan jadual berbeza, anotasi @Column boleh digunakan bersama dengan atribut nama untuk menunjukkan nama medan jadual yang sepadan dengan atribut kelas.

    2.2 Tulis antara muka Repositori

    Tulis antara muka Repositori yang sepadan untuk operasi data jadual yang berbeza, dan tulis kaedah operasi data yang sepadan seperti yang diperlukan.

    public interface DiscussRepository extends JpaRepository<Discuss, Integer> {
        // 1.查询author非空的Discuss评论集合(JPA支持的方法名关键字查询方式)
        List<Discuss> findByAuthorNotNull();
        // 2.根据文章id分页查询Discuss评论集合
        @Query("SELECT c FROM t_comment c WHERE c.articleId = ?1")
        List<Discuss> getDiscussPaged(Integer articleid, Pageable pageable);
        // 3.使用元素SQL语句,根据文章id分页查询Discuss评论集合,nativeQuery为true表示用来编写原生SQL语句 
        @Query(value = "SELECT * FROM t_comment WHERE article_Id = ?1", nativeQuery = true)
        List<Discuss> getDiscussPaged2(Integer articleid, Pageable pageable);
        //4.根据评论id修改评论作者author
        @Transactional // 表示支持事务管理
        @Modifying // 表示支持数据变更
        @Query("UPDATE t_comment c SET c.author = ?1 WHERE c.id = ?2")
        Integer updateDiscuss(String author, Integer id);
        // 5.根据评论id删除评论
        @Transactional
        @Modifying
        @Query("DELETE t_comment c WHERE c.id = ?1")
        Integer deleteDiscuss(Integer id);
    }

    Abang Yi akan menerangkan kepada anda keperluan khas semasa menulis antara muka Repositori.

    2.2.1 Mewarisi antara muka XXRepositoryffbe4eed12645b467bc428156552ef14

    Apabila kami menggunakan Spring Data JPA untuk menyesuaikan antara muka Repositori, kami mesti mewarisi antara muka XXRepositoryffbe4eed12645b467bc428156552ef14, dengan T mewakili entiti untuk dikendalikan Kelas, ID mewakili jenis data kunci utama kelas entiti. Dalam contoh di atas, kami memilih untuk mewarisi antara muka JpaRepository Struktur pewarisan JpaRepository ditunjukkan dalam rajah di bawah.

    Antara muka yang terlibat dalam struktur warisan antara muka JpaRepository diterangkan di bawah, seperti berikut.

    (1) Repositori ialah antara muka induk peringkat teratas yang disediakan oleh Spring Data JPA untuk menyesuaikan antara muka Repositori Tiada kaedah diisytiharkan dalam antara muka ini.

    (2) Antara muka CrudRepository ialah salah satu antara muka Repositori yang diwarisi dan mengandungi beberapa kaedah CRUD asas.

    (3) Antara muka PagingAndSortingRepository mewarisi antara muka CrudRepository dan menyediakan dua kaedah pengisihan dan pengisihan.

    (4) Antara muka QueryByExampleExecutor ialah antara muka induk peringkat atas untuk pertanyaan enkapsulasi bersyarat, membenarkan pertanyaan bersyarat yang kompleks dilaksanakan melalui contoh Contoh.

    Antara muka JpaRepository mewarisi kedua-dua antara muka PagingAndSortingRepository dan antara muka QueryByExampleExecutor, dan menyediakan beberapa kaedah operasi data tambahan. Biasanya apabila menulis fail antara muka Repositori tersuai, kami akan terus memilih untuk mewarisi antara muka JpaRepository.

    2.2.2 Pelbagai cara untuk mengendalikan data

    Apabila menggunakan Spring Data JPA untuk operasi data, terdapat banyak kaedah pelaksanaan, kaedah utama adalah seperti berikut.

    (1). Jika antara muka tersuai mewarisi antara muka JpaRepository, ia termasuk beberapa kaedah CRUD yang biasa digunakan secara lalai.

    (2). Dalam antara muka Repositori tersuai, anda boleh menggunakan anotasi @Query dengan pernyataan SQL untuk menyemak, mengubah suai dan memadam data.

    (3). Dalam antara muka Repositori tersuai, anda boleh terus menggunakan kata kunci nama kaedah untuk melaksanakan operasi pertanyaan.

    Antaranya, kata kunci nama kaedah dan perihalan serpihan SQL sepadan yang disokong dalam Spring Data JPA ditunjukkan dalam jadual berikut.

    2.2.3 Pengurusan transaksi @Transaksi

    Dalam antara muka Repositori tersuai, sebarang operasi perubahan data (pengubahsuaian, pemadaman), tidak kira sama ada anotasi @Query digunakan, mestilah dalam kaedah Tambahkan anotasi @Transactional di atas untuk pengurusan transaksi, jika tidak InvalidDataAccessApiUsageException akan berlaku semasa pelaksanaan program. Jika anotasi @Transactional telah ditambahkan pada kelas Perkhidmatan lapisan perniagaan yang memanggil kaedah antara muka Repositori untuk pengurusan transaksi, anotasi @Transactional boleh ditinggalkan dalam fail antara muka Repositori.

    2.2.4 @Pengubahsuaian anotasi

    Dalam antara muka Repositori tersuai, gunakan anotasi @Query untuk melaksanakan operasi perubahan data (pengubahsuaian, pemadaman, anda juga). mesti juga Tambah anotasi @Moditying untuk menunjukkan perubahan data.

    2.3.5 Pertanyaan keadaan kompleks

    JPA juga menyokong penggunaan contoh Contoh untuk pertanyaan keadaan kompleks. Sebagai contoh, pertanyaan untuk kaedah findAll(Example1eefd63bbe027a2807ccada294a3372c var1) sedia ada dalam antara muka JpaRepository.

    3. Gunakan Spring Boot untuk menyepadukan JPA

    Gunakan Spring Boot untuk menyepadukan JPA.

    3.1 Tambah pemula pergantungan JPA Data Spring

    Tambah pemula pergantungan JPA Spring Data dalam fail pom.xml projek.

    Nota:

    Kami belum menulis nombor versi yang sepadan dengan Spring Data JPA Ini kerana Spring Boot menguruskan nombor versi Spring Data JPA secara seragam.

    3.2 Menulis kelas entiti ORM

    Untuk kemudahan operasi, ambil jadual pangkalan data t_comment yang telah dibuat sebelum ini sebagai contoh untuk menulis kelas entiti yang sepadan Salin kelas Ulasan yang dibuat sebelum ini dan namakannya Bincangkan Pada masa yang sama, tambah anotasi JPA yang sepadan untuk konfigurasi pemetaan.

    3.3 Menulis antara muka Repositori

    Buat antara muka Repositori DiscussRepository di bawah pakej com.cy.repository untuk mengendalikan jadual pangkalan data t_comment.

    3.4 Tulis ujian unit untuk menguji kaedah antara muka

    Salin kelas ujian Chapter03ApplcationTests di lokasi semasa dan namakannya kepada JpaTests untuk menulis ujian unit berkaitan JPA dan ubah suai sedikit kandungannya kaedah yang sepadan dengan antara muka DiscussionRepository.

    Kaedah ujian menggunakan kaedah lalai JpaRepository, kata kunci nama kaedah, anotasi @Query dan parameter terkapsul Contoh untuk melaksanakan operasi data.

    Ujian Integrasi 3.5

    Pilih kaedah ujian unit dalam kelas ujian JpaTests untuk menunjukkan kesannya.

    Atas ialah kandungan terperinci Bagaimana SpringBoot menyepadukan rangka kerja JPA. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam