Boot Musim Semi dengan Hibernate

1. Ikhtisar

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

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

2. Bootstrap Aplikasi

Kami akan menggunakan Spring Initializr untuk mem-bootstrap aplikasi Spring Boot kami. Untuk contoh ini, kami hanya akan menggunakan konfigurasi dan dependensi yang diperlukan untuk mengintegrasikan Hibernate, menambahkan dependensi Web , JPA, dan H2 . Kami akan menjelaskan dependensi ini di bagian selanjutnya.

Mari buat proyek dan buka di IDE kita. Kami dapat memeriksa struktur proyek yang dihasilkan dan mengidentifikasi file konfigurasi yang kami perlukan.

Seperti inilah tampilan struktur proyek:

3. Ketergantungan Maven

Jika kita membuka pom.xml , kita akan melihat bahwa kita memiliki spring-boot-starter-web dan spring-boot-starter-test sebagai dependensi maven. Seperti namanya, ini memulai dependensi di Spring Boot.

Mari kita lihat sekilas dependensi yang menarik JPA:

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

Ketergantungan ini mencakup JPA API, JPA Implementation, JDBC dan pustaka lain yang diperlukan. Karena implementasi JPA default adalah Hibernate, ketergantungan ini sebenarnya cukup untuk mengaktifkannya juga.

Terakhir, kami akan menggunakan H2 sebagai database yang sangat ringan untuk contoh ini:

 com.h2database h2 runtime 

Kita dapat menggunakan konsol H2 untuk memeriksa apakah DB sudah aktif dan berjalan, juga untuk GUI yang ramah pengguna untuk entri data kita. Mari lanjutkan dan aktifkan di application.properites :

spring.h2.console.enabled=true

Ini semua yang perlu kami konfigurasikan untuk menyertakan Hibernate dan H2 sebagai contoh kami. Kami dapat memeriksa konfigurasi berhasil di log saat kami memulai aplikasi Spring Boot:

HHH000412: Hibernate Core {#Version}

HHH000206: hibernate.properties tidak ditemukan

HCANN000001: Hibernate Commons Annotations {#Version}

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

Sekarang kita dapat mengakses konsol H2 di localhost: // localhost: 8080 / h2-console / .

4. Membuat Entitas

Untuk memeriksa apakah H2 kita berfungsi dengan baik, pertama-tama kita akan membuat entitas JPA di folder model baru :

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

Kami sekarang memiliki entitas dasar, di mana H2 dapat membuat tabel. Memulai ulang aplikasi dan memeriksa konsol H2, tabel baru bernama Book akan dibuat.

Untuk menambahkan beberapa data awal ke aplikasi kita, kita perlu membuat file SQL baru, dengan beberapa pernyataan insert dan meletakkannya di folder resource kita . Kita dapat menggunakan file import.sql (Hibernate support) atau data.sql (Spring JDBC support) untuk memuat data.

Berikut adalah contoh data 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 dapat memulai ulang aplikasi Spring Boot dan memeriksa konsol H2 - datanya sekarang ada di tabel Book .

5. Membuat Repositori dan Layanan

Kami akan terus membuat komponen dasar untuk menguji aplikasi kami. Pertama, mari tambahkan JPA Repository di folder repositories baru :

@Repository public interface BookRepository extends JpaRepository { }

Kita dapat menggunakan antarmuka JpaRepository dari kerangka Spring, yang menyediakan implementasi default untuk operasi CRUD dasar .

Selanjutnya, mari tambahkan BookService di folder layanan baru :

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

Untuk menguji aplikasi kita, kita perlu memeriksa bahwa data yang dibuat dapat diambil dari metode list () layanan.

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 tes ini, kami dapat memeriksa apakah Hibernate membuat data Buku yang kemudian berhasil diambil oleh layanan kami. Itu saja, Hibernate berjalan dengan Spring Boot.

6. Nama Tabel Huruf Besar

Terkadang kita mungkin perlu memiliki nama tabel di database kita yang ditulis dengan huruf besar. Seperti yang telah kita ketahui, secara default Hibernate akan menghasilkan nama tabel dalam huruf kecil .

Kami juga dapat mencoba mengatur nama tabel secara eksplisit, seperti ini:

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

Namun, itu tidak akan berhasil. Yang berhasil adalah menyetel properti ini di application.properties :

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

Hasilnya, kami dapat memeriksa di database kami bahwa tabel berhasil dibuat dengan huruf besar.

7. Kesimpulan

Pada artikel ini, kami melihat betapa mudahnya mengintegrasikan Hibernate dengan Spring Boot. Kami menggunakan database H2, sebagai solusi dalam memori yang sangat ringan.

Kami memberikan contoh lengkap dari sebuah aplikasi, yang menggunakan semua teknologi ini dan akhirnya, kami juga memberikan sedikit petunjuk tentang cara mengatur nama tabel dalam huruf besar di database kami.

Seperti biasa, semua cuplikan kode yang disebutkan dalam artikel ini dapat ditemukan di repositori GitHub kami.