Apa itu JPA
JPA (Java Persistence API) adalah spesifikasi kegigihan Java yang secara resmi diusulkan oleh Sun. Ini memberi Java kepada pengembang dengan alat pemetaan objek/asosiasi untuk mengelola data relasional dalam aplikasi Java. Penampilannya terutama untuk menyederhanakan upaya pengembangan persisten yang ada dan mengintegrasikan teknologi ORM
Spring Data JPA adalah kerangka kerja aplikasi JPA yang dienkapsulasi oleh Spring berdasarkan kerangka kerja ORM dan spesifikasi JPA, yang memungkinkan pengembang untuk mengakses dan mengoperasikan data menggunakan kode minimalis. Ini menyediakan fungsi umum termasuk penambahan, penghapusan, modifikasi dan pencarian, dan mudah diperluas! Belajar dan menggunakan data musim semi JPA dapat sangat meningkatkan efisiensi pengembangan!
Gunakan jdbctemplate untuk mengakses database di Spring Boot
Konfigurasi Sumber Data
Pertama, untuk terhubung ke database, Anda perlu memperkenalkan dukungan JDBC, dan konfigurasi berikut diperkenalkan dalam pom.xml
<dependency> <GroupId> org.springframework.boot </groupid> <ArTifactId> Spring-boot-starter-jdbc </artifactid> </dependency>
Dukungan Database Tertanam
Database tertanam umumnya digunakan dalam lingkungan pengembangan dan pengujian. Spring-boot menyediakan basis data tertanam konfigurasi otomatis termasuk H2, HSQL, dan Derby, yang Anda tidak perlu menyediakan konfigurasi koneksi untuk digunakan.
Seperti ketergantungan H2
<dependency> <GroupId> com.h2database </groupid> <ArtifactId> h2 </artifactid> <scope> runtime </seupop> </dependency>
Dukungan Basis Data MySQL
<dependency> <GroupId> mysql </groupid> <ArTifactId> mysql-connector-java </stifactid> <version> 5.1.38 </version> </dependency>
Edit informasi konfigurasi
Konfigurasikan Informasi Sumber Data di SRC/Main/Resources/Application.Properties
spring.datasource.url = jdbc: mysql: // localhost: 3306/testspring.datasource.username = rootspring.datasource.password = rootspring.dataSource.driver-class-name = com.mysql.jdbc.driver
Gunakan jdbctemplate untuk mengoperasikan database
JDBCtemplate Spring secara otomatis dikonfigurasi, Anda dapat menggunakan @Autowired untuk menyuntikkannya ke dalam kacang Anda sendiri.
Implementasi Operasi Akses Data yang Ditentukan dalam Demoservice melalui JDBCtemplate
@Servicepublic kelas demoserivce {@autowired private jdbctemplate jdbctemplate; public void create (nama string, usia integer) {jdbctemplate.update ("masukkan ke dalam demo (nama, usia) nilai (?,?)", nama, usia); } public void deleteByName (nama string) {jdbctemplate.update ("Hapus dari Demowhere Name =?", Name); } public integer getAllDemo () {return jdbctemplate.queryForObject ("pilih count (1) dari demo", integer.class); } public void deletealldemo () {jdbctemplate.update ("hapus dari demo"); }}Buat kasus uji unit untuk UserService untuk memverifikasi kebenaran operasi basis data dengan membuat, menghapus, dan meminta.
Kasus Uji Perlu Meningkatkan Ketergantungan
<dependency> <GroupId> org.springframework.boot </groupid> <ArTifactId> spring-boot-starter-test </t Artifactid> <scope> tes </seupop> </dependency>
Kode uji
@Runwith (springjunit4classrunner.class) @springapplicationConfiguration (Main.class) kelas publik ApplicationTests {@Autowired private demoserivce demoserivce; @Before public void setup () {// Persiapkan, hapus tabel demoserivce.deletealldemo (); } @Test public void test () melempar pengecualian {// masukkan 5 demoserivce.create ("a", 1); demoserivce.create ("b", 2); demoserivce.create ("c", 3); demoserivce.create ("d", 4); demoserivce.create ("e", 5); Assert.assertequals (5, demoserivce.getalldemo (). Intvalue ()); demoserivce.deletebyname ("a"); demoserivce.deletebyname ("e"); // Melihat database, harus ada 5 assert.assertequals (3, demoserivce.getalldemo (). Intvalue ()); }}Menggunakan Spring-Data-JPA di Spring Boot
Untuk menyelesaikan sejumlah besar pernyataan operasi data yang membosankan ini, hal pertama yang kami pikirkan adalah menggunakan kerangka kerja ORM, seperti: Hibernate. Setelah mengintegrasikan Hibernate, kami akhirnya memetakan perubahan data ke tabel database dengan cara memanipulasi entitas Java.
Untuk menyelesaikan operasi dasar "penambahan, penghapusan, modifikasi, dan pencarian" abstrak setiap entitas Java, kami biasanya merangkum templat dengan cara umum untuk abstrak dan menyederhanakannya, tetapi ini masih belum terlalu nyaman. Kita perlu menulis antarmuka yang diwarisi dari templat generik dalam entitas tertentu, dan kemudian menulis implementasi antarmuka. Meskipun beberapa akses data dasar dapat digunakan kembali dengan baik, akan ada banyak antarmuka dan implementasi untuk setiap entitas dalam struktur kode.
Karena implementasi templat, lapisan entitas spesifik ini menjadi sangat "tipis". Implementasi beberapa entitas tertentu mungkin sepenuhnya merupakan proksi sederhana untuk templat, dan seringkali kelas implementasi tersebut mungkin muncul di banyak entitas. Munculnya Spring-Data-JPA dapat membuat lapisan akses data yang sudah "tipis" menjadi cara untuk menulis lapisan antarmuka.
Cara menggunakan
Tambahkan dependensi
<Ketergantungan <GRUPID> org.springframework.boot </groupid> <ArtifactId> Spring-boot-starter-data-jpa </t Artifactid> </dependency>
Edit informasi konfigurasi
Konfigurasikan Informasi Sumber Data di SRC/Main/Resources/Application.Properties
spring.datasource.url = jdbc: mysql: // localhost: 3306/testspring.datasource.username = rootspring.datasource.password = rootspring.datasource.driver-class-name = com.mysql.jdbc.driverspring.jpa.properties.hibernate.hbm2ddl.auto = update
spring.jpa.properties.hibernate.hbm2ddl.auto adalah properti konfigurasi hibernate. Fungsi utamanya adalah untuk secara otomatis membuat, memperbarui, dan memverifikasi struktur tabel basis data. Beberapa konfigurasi parameter ini adalah sebagai berikut
Buat entitas
@EntityPublic Class DemoEntity {@ID @GeneratedValue Private Long ID; judul string pribadi; konten string pribadi; DemoEntity publik () {} DemoEntity publik (judul string, konten string) {this.title = title; this.content = konten; } // Dapatkan set dihilangkan}Buat DAO
Demorepository antarmuka publik memperluas jParepository <DemoEntity, Long> {DemoEntity findByTitle (judul string); DemoEntity findByTitleAndContent (judul string, konten string); // @Query ("Pilih u dari demoEntity u di mana u.content =: konten") @Query ("dari demoEntity u di mana u.content =: konten") demoEntity sqlfind (@param ("konten") konten string);}Jangan menulis nama tabel di SQL, tetapi nama entitas, itu akan secara otomatis mengubahnya menjadi nama tabel.
Buat kueri dengan mem -parsing nama metode
FindByTitle di atas (Judul String) dan FindByTitleAndContent (Judul String, Konten String) tidak ditulis, tetapi kerangka kerja akan secara otomatis membuat SQL sesuai dengan nama pasangan di atas.
Pengujian unit
@Runwith (springjunit4classrunner.class) @springapplicationConfiguration (main.class) kelas publik unittest {@autowired demorepository demorepository; @Test public void test () {for (int i = 0; i <10; i ++) {demorepository.save (demoEntity baru ("title"+i, "content"+i)); } Assert.asserTequals (10, demorepository.findall (). Size ()); } @Test public void testFindByTitle () {demoentity res = demorepository.findbyTitle ("title8"); Assert.assertequals ("title8", res.gettitle ()); } @Test public void testFindByTitleAndContent () {demoentity res = demorepository.findbytitleandcontent ("title9", "content9"); Assert.assertequals ("title9", res.gettitle ()); Assert.assertequals ("content9", res.getContent ()); } @Test public void testsqlfind () {demoentity res = demorepository.sqlfind ("content7"); Assert.assertequals ("content7", res.getContent ()); }}Meringkaskan
Di atas adalah pengantar editor untuk penggunaan Spring-Data-JPA di Spring Boot untuk memfasilitasi dan dengan cepat mengakses database. Saya harap ini akan membantu semua orang. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas semua orang tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!