Spring Boot dengan Hibernate

1. Gambaran keseluruhan

Dalam artikel ini, kita akan melihat bagaimana menggunakan Spring Boot dengan Hibernate.

Kami akan membina aplikasi Spring Boot yang sederhana dan melihat betapa mudahnya mengintegrasikannya dengan Hibernate.

2. Bootstrap Aplikasi

Kami akan menggunakan Spring Initializr untuk boot aplikasi Spring Boot kami. Untuk contoh ini, kami hanya akan menggunakan konfigurasi dan pergantungan yang diperlukan untuk mengintegrasikan Hibernate, menambahkan kebergantungan Web , JPA, dan H2 . Kami akan menerangkan pergantungan ini di bahagian seterusnya.

Mari menjana projek dan membukanya di IDE kami. Kami dapat memeriksa struktur projek yang dihasilkan dan mengenal pasti fail konfigurasi yang kami perlukan.

Ini adalah bagaimana struktur projek akan kelihatan seperti:

3. Pergantungan Maven

Sekiranya kita membuka pom.xml , kita akan melihat bahawa kita mempunyai ujian spring-boot-starter-web dan spring-boot-starter-test sebagai pergantungan maven. Seperti namanya, ini adalah pergantungan awal di Spring Boot.

Mari kita lihat kebergantungan yang cepat dalam JPA:

 org.springframework.boot spring-boot-starter-data-jpa 

Ketergantungan ini merangkumi JPA API, JPA Implementation, JDBC dan perpustakaan lain yang diperlukan. Oleh kerana pelaksanaan JPA lalai adalah Hibernate, kebergantungan ini sebenarnya cukup untuk membawanya juga.

Akhirnya, kami akan menggunakan H2 sebagai pangkalan data yang sangat ringan untuk contoh ini:

 com.h2database h2 runtime 

Kita dapat menggunakan konsol H2 untuk memeriksa apakah DB aktif dan berjalan, juga untuk GUI yang mudah digunakan untuk memasukkan data kita. Mari teruskan dan aktifkan dalam aplikasi.properites :

spring.h2.console.enabled=true

Ini semua yang perlu kita konfigurasikan untuk memasukkan Hibernate dan H2 untuk contoh kita. Kami dapat memeriksa konfigurasi yang berjaya di log ketika kami memulakan aplikasi Spring Boot:

HHH000412: Hibernate Core {#Version}

HHH000206: hibernate.properties tidak dijumpai

HCANN000001: Anotasi Hibernate Commons {#Version}

HHH000400: Menggunakan dialek: org.hibernate.dialect.H2Dialect

Kita sekarang boleh mengakses konsol H2 di localhost: // localhost: 8080 / h2-console / .

4. Membentuk Entiti

Untuk memastikan bahawa H2 kami berfungsi dengan baik, pertama-tama kami akan membuat entiti JPA dalam folder model baru :

@Entity public class Book { @Id @GeneratedValue private Long id; private String name; // standard constructors // standard getters and setters }

Kami kini mempunyai entiti asas, di mana H2 dapat membuat jadual. Memulakan semula aplikasi dan memeriksa konsol H2, jadual baru bernama Book akan dibuat.

Untuk menambahkan beberapa data awal ke aplikasi kami, kami perlu membuat fail SQL baru, dengan beberapa penyataan sisipan dan memasukkannya ke dalam folder sumber kami . Kita boleh menggunakan fail import.sql (sokongan Hibernate) atau data.sql (sokongan JDBC Spring) untuk memuatkan data.

Berikut adalah data contoh kami:

insert into book values(1, 'The Tartar Steppe'); insert into book values(2, 'Poem Strip'); insert into book values(3, 'Restless Nights: Selected Stories of Dino Buzzati');

Sekali lagi, kita boleh memulakan semula aplikasi Spring Boot dan memeriksa konsol H2 - data sekarang ada di dalam jadual Buku .

5. Membuat Repositori dan Perkhidmatan

Kami akan terus membuat komponen asas untuk menguji aplikasi kami. Pertama, mari tambahkan JPA Repository dalam folder repositori baru :

@Repository public interface BookRepository extends JpaRepository { }

Kita dapat menggunakan antara muka JpaRepository dari rangka Spring, yang menyediakan pelaksanaan lalai untuk operasi CRUD asas .

Seterusnya, mari tambahkan BookService dalam folder perkhidmatan baru :

@Service public class BookService { @Autowired private BookRepository bookRepository; public List list() { return bookRepository.findAll(); } }

Untuk menguji aplikasi kami, kami perlu memastikan bahawa data yang dibuat dapat diambil dari kaedah senarai () perkhidmatan.

Kami akan menulis SpringBootTest berikut :

@RunWith(SpringRunner.class) @SpringBootTest public class BookServiceUnitTest { @Autowired private BookService bookService; @Test public void whenApplicationStarts_thenHibernateCreatesInitialRecords() { List books = bookService.list(); Assert.assertEquals(books.size(), 3); } }

Dengan menjalankan ujian ini, kita dapat memastikan bahawa Hibernate membuat data Buku yang kemudian berjaya diambil oleh perkhidmatan kami. Itu sahaja, Hibernate berjalan dengan Spring Boot.

6. Nama Jadual Besar

Kadang-kadang kita mungkin memerlukan nama jadual dalam pangkalan data kita ditulis dengan huruf besar. Seperti yang sudah kita ketahui, secara tidak langsung Hibernate akan menghasilkan nama-nama jadual dengan huruf kecil .

Kami juga boleh menetapkan nama jadual secara eksplisit, seperti ini:

@Entity(name="BOOK") public class Book { // members, standard getters and setters }

Namun, itu tidak akan berjaya. Apa yang berfungsi ialah menetapkan harta tanah ini di application.properties :

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

Hasilnya, kami dapat memeriksa di pangkalan data kami bahawa jadual berjaya dibuat dengan huruf besar.

7. Kesimpulannya

Dalam artikel ini, kami melihat betapa mudahnya menggabungkan Hibernate dengan Spring Boot. Kami menggunakan pangkalan data H2, sebagai penyelesaian dalam memori yang sangat ringan.

Kami memberikan contoh lengkap aplikasi, yang menggunakan semua teknologi ini dan akhirnya, kami juga memberikan petunjuk kecil tentang cara menetapkan nama meja dengan huruf besar dalam pangkalan data kami.

Seperti biasa, semua coretan kod yang disebutkan dalam artikel ini terdapat di repositori GitHub kami.