Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 36133|Jawab: 7

[Sumber] Tutorial Konstruksi Proyek MySQL Druid Hibernate Spring Boot [dengan kode sumber]

[Salin tautan]
Diposting pada 20/02/2019 14.44.57 | | | |
Saya juga setengah matang di Jawa, dan saya tidak terlalu akrab dengan ember keluarga musim semi, dan saya telah membangun kerangka kerja proyek berdasarkan tutorial online dan beberapa pengalaman saya sendiri.
Lingkungan Proyek:Versi JDK: 1.8.0_171, versi MySQL: 5.7.17, spring boot: 2.1.1.RELEASE, alat pengembangan: idea.

Hibernasi dan JPA

Proyek web dalam artikel ini menggunakan Hibernate sebagai kerangka kerja lapisan persistensi. Di Spring Boot, kita perlu memahami konsep lain: JPA

Kalimat sebelumnya mungkin ambigu, tetapi itu tidak berarti bahwa JPA adalah konsep di Spring Boot. Sebagai gantinya, itu adalah Java Persistence API, yang diterjemahkan ke dalam bahasa Cina sebagai: Java Persistence Layer API.

JPA adalah spesifikasi standar berdasarkan ORM (atau pemetaan O/R), di mana JPA hanya mendefinisikan aturan standar dan tidak menyediakan implementasi.

Saat ini, implementasi utama JPA adalah Hibernate, EclipseLink, OpenJPA, dll.

Karena dominasi Hibernate di bidang teknologi resolusi akses data, standar JPA pada dasarnya didominasi oleh Hibernate.

SpringBoot adalah senapan otomatis

Spring Data JPA disediakan sebagai alat antarmuka bagi pengembang untuk menerapkan kerangka kerja Hibernate. Spring Boot kami menyediakan "modul dependensi otomatis" yang sepenuhnya otomatis: spring-boot-starter-data-jpa


Struktur Dependensi POM:

Apakah ada yang memiliki pertanyaan tentang file pom tanpa kutipan untuk hibernasi?



Alasannya adalah seperti yang ditunjukkan pada gambar di atas, spring-boot-starter-data-jpa bergantung pada hibernate-core, dan saat mereferensikan spring-boot-starter-data-jpa, proyek maven akan secara otomatis memperkenalkan paket yang bergantung padanya.


application.yml Profil:

Tautan resmi informasi sumber data konfigurasi pegas:Login hyperlink terlihat.

##########################################
###datasource - Tentukan informasi koneksi database mysql
###spring.datasource.url: Alamat MySQL
###spring.datasource.user: Nama pengguna database
###spring.datasource.password: Kata sandi database
###spring.datasource.driverClassName: Sesuai dengan driver database
###spring.datasource.max-aktif: Menentukan jumlah maksimum koneksi aktif dalam kumpulan koneksi
###spring.datasource.max-idle: Menentukan jumlah maksimum koneksi bebas dalam kumpulan koneksi.
###spring.datasource.min-idle: Menentukan nilai minimum yang harus dipertahankan (Untuk kumpulan koneksi DBCP dan Tomcat)
###spring.datasource.initial-size: Menentukan jumlah koneksi yang awalnya dibuat saat kumpulan koneksi dimulai
###
###其他信息总结:
###spring.dao.exceptiontranslation.enabled apakah PersistenceExceptionTranslationPostProcessor diaktifkan, defaultnya adalah true
###spring.datasource.abandon-when-percentage-fullmenetapkan persentase koneksi terbengkalai yang ditutup atau dilaporkan saat batas waktu ditinggalkan
###spring.datasource.allow-pool-suspension Saat menggunakan kumpulan Hikari, apakah akan mengizinkan kumpulan koneksi untuk dijeda diatur ke false
###spring.datasource.alternate-username-allowedapakah nama pengguna alternatif diizinkan.
###spring.datasource.auto-commitMenentukan apakah pembaruan dilakukan secara otomatis.
###spring.datasource.catalog menentukan katalog default.
###spring.datasource.commit-on-return mengatur apakah akan melakukan semua transaksi yang belum dibayar saat koneksi dikembalikan
###spring.datasource.connection-init-sql menentukan bahwa koneksi dibuat dan ditambahkan ke SQL yang dijalankan sebelum kumpulan koneksi.
###spring.datasource.connection-init-sqls Saat menggunakan kumpulan koneksi DBCP, tentukan sql yang akan dijalankan saat inisialisasi
###spring.datasource.connection-properties. [kunci]Menentukan atribut yang akan dikonfigurasi saat menggunakan kumpulan koneksi DBCP
###spring.datasource.connection-test-query menentukan pernyataan SQL yang memverifikasi legitimasi eksekusi koneksi
###spring.datasource.connection-timeoutMenentukan waktu tunggu untuk koneksi, dalam milidetik.
###spring.datasource.continue-on-errorSaat menginisialisasi database, mengalami kesalahan apakah akan melanjutkan atau tidak, defaultnya adalah false
###spring.datasource.data menentukan skrip Data (DML)
###spring.datasource.data-source-class-name Menentukan nama sumber data yang sepenuhnya memenuhi syarat.
###spring.datasource.data-source-jndi menentukan alamat jndi
###spring.datasource.data-source-properties. Saat menggunakan kumpulan koneksi Hikari, tentukan atribut yang akan diatur
###spring.datasource.db-properties menggunakan kumpulan koneksi Tomcat, menentukan properti yang akan diatur
###spring.datasource.default-auto-commit secara otomatis dilakukan.
###spring.datasource.default-catalog menentukan katalog yang terhubung ke default.
###spring.datasource.default-read-onlyApakah akan mengatur koneksi default ke baca-saja.
###spring.datasource.default-transaction-isolationMenentukan tingkat isolasi default untuk transaksi yang terhubung.
###spring.datasource.driver-class-name menentukan nama kelas driver, yang secara otomatis terdeteksi dari URL jdbc secara default.
###spring.datasource.fair-queue Apakah akan menggunakan koneksi pengembalian FIFO.
###spring.datasource.health-check-properties. [kunci] Atribut diteruskan saat menggunakan kumpulan koneksi Hikari selama pemeriksaan detak jantung
###spring.datasource.idle-timeoutMenentukan berapa lama koneksi tidak digunakan, yang diatur ke idle secara default
###spring.datasource.ignore-exception-on-pre-loadApakah pengecualian diabaikan saat kumpulan koneksi diinisialisasi.
###spring.datasource.init-sqlsql yang dijalankan saat koneksi dibuat
###spring.datasource.initial-size menentukan jumlah koneksi yang awalnya dibuat saat kumpulan koneksi dimulai
###spring.datasource.initialization-fail-fastSaat membuat kumpulan koneksi, tidak mungkin membuat jumlah koneksi minimum yang ditentukan untuk melemparkan pengecualian
###spring.datasource.initializeTentukan apakah akan menginisialisasi sumber data dengan data.sql, default: true
###spring.datasource.isolate-internal-queries menentukan apakah kueri internal akan dikarantina, defaultnya adalah false
###spring.datasource.jdbc-interceptors Saat menggunakan kumpulan koneksi Tomcat, tentukan pemisahan pencegat jdbc dan titik koma
###spring.datasource.jdbc-url menentukan URL JDBC.
###spring.datasource.jmx-enabled diaktifkan secara default: false
###spring.datasource.jndi-nameMenentukan nama jndi.
###spring.datasource.leak-detection-threshold Berapa milidetik Anda mendeteksi kebocoran koneksi saat menggunakan kumpulan koneksi Hikari?
###spring.datasource.log-abandoned menggunakan kumpulan koneksi DBCP untuk melacak pernyataan atau koneksi yang ditinggalkan, defaultnya adalah false
###spring.datasource.log-validation-errorsSaat menggunakan kumpulan koneksi Tomcat, apakah akan mencetak kesalahan validasi.
###spring.datasource.login-timeoutMenentukan waktu tunggu untuk menyambungkan ke database.
###spring.datasource.max-age menentukan usia maksimum koneksi dalam kumpulan koneksi
###spring.datasource.max-lifetime menentukan masa pakai maksimum koneksi dalam kumpulan koneksi, dalam milidetik.
###spring.datasource.max-open-prepared-statementmenentukan jumlah maksimum pernyataan yang disiapkan yang dibuka.
###spring.datasource.max-wait menentukan waktu tunggu maksimum bagi kumpulan koneksi untuk menunggu koneksi kembali, dalam milidetik.
###spring.datasource.maximum-pool-sizeMenentukan jumlah maksimum koneksi dalam kumpulan koneksi, termasuk koneksi aktif dan idle.
###spring.datasource.min-evictable-idle-time-millisMenentukan koneksi bebas selama waktu minimum yang dapat menganggur sebelum dapat dihapus.
###spring.datasource.min-idle menentukan nilai minimum yang harus dipertahankan (Untuk kumpulan koneksi DBCP dan Tomcat)
###spring.datasource.minimum-idle menentukan jumlah minimum koneksi bebas yang dikelola oleh koneksi, dan saat menggunakan HikariCP.
###spring.datasource.name Tentukan nama sumber data.
###spring.datasource.num-tests-per-eviction-run menentukan jumlah objek saat menjalankan setiap utas penghindar objek menganggur
###spring.datasource.passwordTentukan kata sandi database.
###spring.datasource.platform menentukan Platform (schema-${platform}.sql yang akan digunakan untuk skema, yang secara default menjadi: semua
###spring.datasource.pool-nameMenentukan nama kumpulan koneksi.
###spring.datasource.pool-prepared-statementsMenentukan apakah akan mengumpulkan pernyataan.
###spring.datasource.propagate-interrupt-stateApakah akan menyebarkan status interupsi jika utas terputus saat menunggu koneksi.
###spring.datasource.read-onlySaat menggunakan kumpulan koneksi Hikari, apakah akan menandai sumber data sebagai baca-saja
###spring.datasource.register-mbeans menentukan apakah kumpulan koneksi Hikari mendaftarkan JMX MBeans.
###spring.datasource.remove-abandoned menentukan apakah akan menghapus koneksi segera setelah batas waktu yang ditinggalkan.
###spring.datasource.remove-abandoned-timeoutMenentukan waktu ketika koneksi harus ditinggalkan.
###spring.datasource.rollback-on-returnApakah akan mengembalikan transaksi yang tertunda saat mengembalikan koneksi.
###spring.datasource.schema menentukan skrip Skema (DDL).
###spring.datasource.separator menentukan pemisah pernyataan untuk menginisialisasi skrip, default: ;
###spring.datasource.sql-script-encoding menentukan pengodean skrip SQL.
###spring.datasource.suspect-timeoutMenentukan batas waktu sebelum mencetak koneksi yang ditinggalkan.
###spring.datasource.test-on-borrowSaat meminjam koneksi dari kumpulan koneksi, apakah akan menguji koneksi.
###spring.datasource.test-on-connect dibuat, apakah akan menguji koneksi
###spring.datasource.test-on-returnApakah koneksi dikembalikan ke kumpulan koneksi.
###spring.datasource.test-while-idleApakah akan melakukan pengujian koneksi saat koneksi tidak digunakan.
###spring.datasource.time-between-eviction-runs-millis Menentukan interval waktu operasi antara pemeriksaan koneksi siaga, pembersihan koneksi yang diabaikan, dan ukuran kumpulan koneksi siaga
###spring.datasource.transaction-isolation menentukan tingkat isolasi transaksi, yang ditentukan saat menggunakan kumpulan koneksi Hikari
###spring.datasource.url menentukan URL JDBC.
###spring.datasource.use-disposable-connection-façade membungkus koneksi untuk mencegahnya digunakan setelah ditutup.
###spring.datasource.use-sama dengan apakah akan menggunakan String.equals() untuk menggantikan ==.
###spring.datasource.use-lock terkunci pada operasi koneksi
###spring.datasource.usernameTentukan nama database.
###spring.datasource.validation-interval menentukan berapa banyak ms yang harus dilakukan pemeriksaan koneksi.
###spring.datasource.validation-query menentukan pernyataan kueri SQL untuk validasi koneksi saat mendapatkan koneksi.
###spring.datasource.validation-query-timeoutMenentukan waktu tunggu untuk kueri validasi koneksi.
###spring.datasource.validation-timeoutMengatur waktu habis untuk validasi koneksi, yang ditentukan saat menggunakan kumpulan koneksi Hikari
###spring.datasource.validator-class-name Qualifier lengkap validator yang digunakan untuk menguji kueri.
###spring.datasource.xa.data-source-class-name Menentukan penentu lengkap sumber data.
###spring.datasource.xa.properties menentukan properti yang diteruskan ke sumber data XA
###spring.datasource.url=jdbc:mysql://localhost:3306/test?user=root&password=root&useUnicode=true&characterEncoding=UTF8
##########################################
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
musim semi.sumberdata.nama pengguna=akar
musim semi.sumberdata.kata sandi=akar
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.max-aktif=20
spring.datasource.max-idle=8
pegas.sumberdata.min-idle=8
pegas.sumberdata.ukuran-awal=10
##########################################
##SPring Informasi konfigurasi JPA
###spring.jpa.database menentukan database target.
###spring.jps.show-sq: Apakah akan menampilkan pernyataan SQL
###spring.jpa.hibernate.ddl-auto menentukan mode DDL (tidak ada, validasi, perbarui, buat, buat-jatuhkan). Saat menggunakan database tertanam, defaultnya adalah create-drop, jika tidak, tidak ada.
###spring.jpa.hibernate.naming-strategyTentukan kebijakan penamaan.
###其他:
###spring.jpa.database-platformMenentukan jenis database target.
###spring.jpa.generate-ddl apakah akan menginisialisasi skema saat startup, default ke false
###spring.jpa.hibernate.ddl-auto menentukan mode DDL (tidak ada, validasi, perbarui, buat, buat-jatuhkan). Saat menggunakan database tertanam, defaultnya adalah create-drop, jika tidak, tidak ada.
###spring.jpa.hibernate.naming-strategyTentukan kebijakan penamaan.
###spring.jpa.open-in-view mendaftarkan OpenEntityManagerInViewInterceptor dan mengikat JPA EntityManager ke utas permintaan, defaultnya adalah true
###spring.jpa.properties menambahkan atribut tambahan ke penyedia JPA.
###spring.jpa.show-sql Apakah akan mengaktifkan log SQL diatur ke false secara default
##########################################
spring.jpa.database = MYSQL
spring.jpa.show-sql = benar
spring.jpa.hibernate.ddl-auto = update
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
pegas.penanda bebas.charset=UTF-8

Seluruh struktur paket



Konfigurasi Sumber Data:




Kelas entitas:



Antarmuka operasi basis data:

Antarmuka operasi database mewarisi dari kelas generik JpaRepository, dan ketika mewarisinya, ia mendapatkan kekuatan ilahi yang diberikannya kepada pengembang:



Kita dapat langsung memanggil metode ini untuk melakukan operasi database, dan kita juga dapat menyesuaikan HQL untuk menyelesaikan operasi lain yang sesuai dengan kepribadian kita, seperti:

Dalam kode ini, melalui komentar @Query,Menyelesaikan penulisan HQLdi mana ":name" konsisten dengan parameter dalam anotasi @Param di bawah ini.

Catatan: Nama tabel di HQL harus berupa nama kelas peta ORM, dan HQL memiliki beberapa perbedaan dari pernyataan SQL tradisional, seperti arti "*" berbeda, dll.

Jika Anda tidak terbiasa menggunakan HQL, Anda juga dapat menggunakan pernyataan SQL:



Metode di atas masih efektif saat dilakukan.nativeQuery ke true berarti menggunakan bahasa SQL

Kelas pengontrol:

Mulai proyek

Hibernate akan secara otomatis memetakan kelas entitas ke database untuk membuat tabel database yang relevan untuk kita, dan akan secara otomatis mencocokkan tabel database berdasarkan anotasi seperti @Table, @Column, @Id, @GeneratedValue (strategy = GenerationType.AUTO), dll. Hemat banyak pekerjaan tabulasi.


(Sebelum memulai proyek, Anda perlu membangun database terlebih dahulu, dan tabel akan dibuat secara otomatis)



hibernate_sequence tabel adalah strategi pembuatan id @GeneratedValue dianotasi, GenerationType.AUTO mewakili pembuatan otomatis, asalkan atribut id harus berupa atribut tipe int atau panjang, jika itu adalah id jenis String, maka menambahkan anotasi ini di atas id akan segera melaporkan kesalahan. Oleh karena itu, jika untuk id jenis String, Anda tidak perlu membuat anotasi id dengan @GeneratedValue (strategi = GenerationType.AUTO).

Minta pengujian

Selesaikan permintaan data dan penyimpanan data melalui get dan post masing-masing.


MemohonLogin hyperlink terlihat.Antarmuka POST meminta untuk menambahkan data, seperti yang ditunjukkan pada gambar berikut:



Kueri database adalah sebagai berikut:



Dapatkan data melalui antarmuka berikut:

Login hyperlink terlihat.
Login hyperlink terlihat.
Login hyperlink terlihat.



Catatan: Seperti yang diminta oleh antarmuka di atas, Java sangat sensitif terhadap sensitivitas huruf besar/kecil, apakah itu alamat URL atau parameternya, itu harus peka huruf besar/kecil! Jika huruf besar atau huruf kecil, itu akan menyebabkan permintaan gagal mencapai antarmuka atau parameternya akan kosong!

Druid memantau situasi berikut:






Terakhir, lampirkan kode sumber:

Wisatawan, jika Anda ingin melihat konten tersembunyi dari posting ini, silakanJawab


(Akhir)





Mantan:Gagal mengonfigurasi DataSource
Depan:Teh Sore Jieyou | Rabu, 20 Februari 2019
Diposting pada 21/02/2019 02.19.13 |
Lihatlah belajar belajar.
Diposting pada 05/07/2019 17.27.02 |
Belajar untuk belajar...
Diposting pada 22/07/2019 14.15.41 |
Lihatlah belajar belajar.
Diposting pada 21/11/2019 21.08.12 |
【Pertempuran Praktis】 Tutorial Konstruksi Proyek MySQL Druid Hibernate Spring Boot
Diposting pada 30/03/2020 13.52.54 |
Terima kasih banyak
Diposting pada 28/06/2020 15.13.11 |
Lihatlah pembelajaran kode orang-orang besar
Diposting pada 18/11/2020 23.57.19 |
Belajar belajar
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com