Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 36133|Yanıt: 7

[Kaynak] Spring Boot Hibernate Druid MySQL Proje Oluşturma Eğitimi [kaynak kodu ile]

[Bağlantıyı kopyala]
Yayınlandı 20.02.2019 14:44:57 | | | |
Ayrıca Java'da yarım kaldım ve spring family bucket'a pek aşina değilim, ayrıca çevrimiçi eğitimler ve kendi deneyimlerime dayanarak bir proje çerçevesi oluşturdum.
Proje Ortamı:jdk sürüm: 1.8.0_171, mysql sürümü: 5.7.17, bahar boot: 2.1.1.RELEASE, geliştirme araçları: idea.

Kış uykusu ve JPA

Bu makaledeki web projesi, Hibernate'i süreklilik katmanı çerçevesi olarak kullanır. Spring Boot'ta başka bir kavramı anlamamız gerekiyor: JPA

Önceki cümle belirsiz olabilir, ancak bu JPA'nın Spring Boot'ta bir kavram olduğu anlamına gelmez. Bunun yerine, Çince'ye çevrilen Java Persistence Layer API'si olan Java Persistence Layer API'dir.

JPA, ORM (veya O/R eşleme) temelli standart bir spesifikasyondur; burada JPA yalnızca standart kuralları tanımlar ve uygulama sağlamaz.

Şu anda JPA'nın ana uygulamaları Hibernate, EclipseLink, OpenJPA vb.

Hibernate'in veri erişim çözüm teknolojisi alanındaki hakimiyeti nedeniyle, JPA standardı temelde Hibernate tarafından domine edilmiştir.

SpringBoot otomatik bir tüfektir

Spring Data JPA, geliştiricilerin Hibernate framework'ü uygulamaları için bir arayüz aracı olarak sunulmaktadır. Spring Boot'umuz tamamen otomatik bir "otomatik bağımlılık modülü" sunar: spring-boot-starter-data-jpa


POM Bağımlılık Yapısı:

Hibernate için atıf olmayan pom dosyası hakkında sorusu olan var mı?



Nedeni, yukarıdaki şekilde gösterildiği gibi, spring-boot-starter-data-jpa'nın hibernate-core'a bağlı olmasıdır ve spring-boot-starter-data-jpa'ya atıfta bulunurken, maven projesi bağımlı olduğu paketi otomatik olarak tanıtır.


application.yml Profil:

Yay konfigürasyonu veri kaynağı bilgisi resmi bağlantı:Bağlantı girişi görünür.

##########################################
###datasource - mysql veritabanı bağlantı bilgilerini belirt
###spring.datasource.url: MySQL adresi
###spring.datasource.user: Veritabanı kullanıcı adı
###spring.datasource.password: Veritabanı şifresi
###spring.datasource.driverClassName: Veritabanı sürücüsüne karşılık gelir
###spring.datasource.max-aktif: Bağlantı havuzundaki maksimum aktif bağlantı sayısını belirtir
###spring.datasource.max-idle: Bağlantı havuzundaki maksimum boş bağlantı sayısını belirtir.
###spring.datasource.min-idle: Korunması gereken minimum değeri belirtir (DBCP ve Tomcat bağlantı havuzları için)
###spring.datasource.initial-size: Bağlantı havuzu başlatıldığında ilk kurulan bağlantı sayısını belirtir
###
###其他信息总结:
###spring.dao.exceptiontranslation.enabled PersistenceExceptionTranslationPostProcessor etkin olsa da, varsayılan doğrudur
###spring.datasource.abandon-%fullage-set, zaman aşımının terk edildiği zaman kapanan veya rapor edilen terk edilmiş bağlantıların yüzdesi.
###spring.datasource.allow-pool-suspension Hikari havuzu kullanılırken, bağlantı havuzunun duraklatmasına izin verilip verilmemesi false olarak ayarlanır
###spring.datasource.alternate-username-allowedalternatif kullanıcı adları izin verilip verilmediği.
###spring.datasource.auto-commitGüncellemelerin otomatik olarak taahhüt edilip edilmediğini belirtir.
###spring.datasource.catalog varsayılan kataloğu belirtir.
###spring.datasource.commit-on-return, bağlantı dönerken tüm bağımsız işlemlerin taahhüt edilip edilmeyeceğini belirler
###spring.datasource.connection-init-sql, bağlantının bağlantı havuzundan önce oluşturulup SQL'e eklendiğini belirtir.
###spring.datasource.connection-init-sqls DBCP bağlantı havuzu kullanılırken, başlatma sırasında çalıştırılacak sql belirtin
###spring.datasource.connection-properties. [key]DBCP bağlantı havuzu kullanılırken yapılandırılacak öznitelikleri belirtir
###spring.datasource.connection-test-query, bağlantı yürütülmesinin meşruiyetini doğrulayan SQL ifadesini belirtir
###spring.datasource.connection-timeoutBağlantı için zaman aşımına uğramış süreyi milisaniye cinsinden belirtir.
###spring.datasource.continue-on-error-Veritabanı başlatıldığında, devam edip etmemek konusunda bir hata karşılaştığında, varsayılan olarak false
###spring.datasource.data, Data (DML) bebesini belirtir
###spring.datasource.data-source-class-name Veri kaynağının tam nitelikli adını belirtir.
###spring.datasource.data-source-jndi jndi'nin adresini belirtir
###spring.datasource.data-source-properties. Hikari bağlantı havuzu kullanılırken, ayarlanacak öznitelikleri belirtin
###spring.datasource.db-properties, ayarlanacak özellikleri belirten Tomcat bağlantı havuzunu kullanır
###spring.datasource.default-auto-commit otomatik olarak commit edilir.
###spring.datasource.default-catalog, varsayılan kataloğa bağlanan kataloğu belirtir.
###spring.datasource.default-read-only-varsayılan bağlantıyı sadece okunur olarak ayarlayıp ayarlamamalı?
###spring.datasource.default-transaction-isolationBağlı işlemler için varsayılan izolasyon seviyesini belirler.
###spring.datasource.driver-class-name, sürücünün sınıf adını belirtir ve bu sınıf varsayılan olarak jdbc URL'sinden otomatik olarak algılanır.
###spring.datasource.fair-queue FIFO dönüş bağlantılarının kullanılıp kullanılmaması.
###spring.datasource.health-check-properties. [anahtar] Kalp atışı kontrolü sırasında Hikari bağlantı havuzu kullanılırken geçilen özellik
###spring.datasource.idle-timeoutBağlantının ne kadar süre kullanılmadığını belirtir ve varsayılan olarak bu boşta olarak ayarlanmıştır
###spring.datasource.ignore-exception-on-pre-loadBağlantı havuzu başlatıldığında istisna göz ardı edilip edilmezmi.
###spring.datasource.init-sqlsql ve bağlantı oluşturulduğunda çalıştırılır
###spring.datasource.initial-size, bağlantı havuzu başlatıldığında ilk kurulan bağlantı sayısını belirtir
###spring.datasource.initialization-fail-fastBağlantı havuzu oluşturulduğunda, belirli bir minimum bağlantı sayısı oluşturulup istisna oluşturmak mümkün değildir
###spring.datasource.initializeVeri kaynağını başlatıp başlatmamayı data.sql ile belirleyin, varsayılan: true
###spring.datasource.isolate-internal-queries, iç sorguların karantinaya alınıp alınmayacağını ve varsayılan olarak false olarak belirleneceğini belirtir
###spring.datasource.jdbc-interceptors Tomcat bağlantı havuzu kullanılırken, jdbc interceptor ve nokta virgül ayrımı belirtin
###spring.datasource.jdbc-url, JDBC URL'sini belirtir.
###spring.datasource.jmx etkinliği varsayılan olarak etkin: yanlış: yanlış
###spring.datasource.jndi-namejndi adını belirtir.
###spring.datasource.leak-detection-threshold Hikari bağlantı havuzunu kullanırken kaç milisaniye içinde bağlantı sızıntısı tespit ediyorsunuz?
###spring.datasource.log-abaned, terk edilmiş ifadeleri veya bağlantıları izlemek için DBCP bağlantı havuzunu kullanır, varsayılan durum yanlıştır
###spring.datasource.log-doğrulama hatalarıTomcat bağlantı havuzu kullanılırken, doğrulama hatası yazdırıp yazmamanız.
###spring.datasource.login-timeoutVeritabanına bağlanma zamanını belirler.
###spring.datasource.max-yaş, bağlantı havuzundaki bağlantıların maksimum yaşını belirtir
###spring.datasource.max-ömür, bağlantı havuzundaki bağlantıların maksimum ömrünü milisaniye cinsinden belirtir.
###spring.datasource.max-open-prepared-statements, açılan maksimum hazırlanmış ifade sayısını belirtir.
###spring.datasource.max-wait, bağlantı havuzunun bağlantının geri dönmesini beklemesi için maksimum bekleme süresini milisaniye cinsinden belirtir.
###spring.datasource.maximum-pool-sizeAktif ve boşta bağlantılar dahil olmak üzere bağlantı havuzundaki maksimum bağlantı sayısını belirtir.
###spring.datasource.min-evictable-idle-time-millisEn az boşta kalabileceği süre için boş bağlantı belirtir.
###spring.datasource.min-idle, DBCP ve Tomcat bağlantı havuzları için, korunması gereken minimum değeri belirtir
###spring.datasource.minimum-idle, bir bağlantı tarafından korunan ve HikariCP kullanıldığında en az serbest bağlantı sayısını belirtir.
###spring.datasource.name Veri kaynağının adını belirtin.
###spring.datasource.num-tests-per-eviction-run, her boşta nesne evitor iş parçacığını çalıştırırken nesne sayısını belirtir
###spring.datasource.passwordVeritabanı şifresini belirtin.
###spring.datasource.platform, şema için kullanılacak Platformu (şema-${platform}.sql belirtir ve bu durum varsayılan olarak şu şekildedir:
###spring.datasource.pool-nameBağlantı havuzunun adını belirtir.
###spring.datasource.pool-prepared-statementsIfadelerin havuzlanıp kullanılmayacağını belirtir.
###spring.datasource.propagate-interrupt-stateBağlantı beklerken iş parçacığı kesilirse kesme durumunu yayıp yaymamalı.
###spring.datasource.read-onlyHikari bağlantı havuzu kullanılırken, veri kaynağını sadece okunur olarak işaretleyip işaretlememesi
###spring.datasource.register-mbeans, Hikari bağlantı havuzunun JMX MBeans kaydedip etmediğini belirtir.
###spring.datasource.reabandoned, terk edilen zaman aşımından hemen sonra bağlantının silinip silinmediğini belirtir.
###spring.datasource.remove-abandoned-timeoutBağlantının terk edilmesi gereken zamanı belirtir.
###spring.datasource.rollback-onreturn-bir bağlantı dönerken bekleyen bir işlemi geri alıp almamalı.
###spring.datasource.schema Şema (DDL) bebesini belirtir.
###spring.datasource.separator, betikleri başlatmak için varsayılan olarak ifade ayırıcısını belirtir: ;
###spring.datasource.sql-script-encoding SQL script kodlamasını belirtir.
###spring.datasource.suspect-timeoutTerk edilen bağlantıyı yazdırmadan önceki zaman aşımını belirtir.
###spring.datasource.test-on-borrowBir bağlantı havuzundan bir bağlantı ödünç alırken, bağlantıyı test edip etmeyeceğiniz.
###spring.datasource.test-on-connect oluşturulur, bağlantının test edilip edilmemesi gerekir
###spring.datasource.test-on-returnBağlantı bağlantı havuzuna geri dönülüp geri gönderilmediği.
###spring.datasource.test-while-idle, bağlantı boşta iken bağlantı testi yapılıp yapılmaması.
###spring.datasource.time-between-eviction-runs-millis Boşta bağlantı kontrolleri, terk edilen bağlantı temizleme ve boşta bağlantı havuzu boyutlandırması arasındaki işlem zaman aralığını belirtir
###spring.datasource.transaction-isolation, Hikari bağlantı havuzu kullanıldığında belirtilen işlem izolasyon seviyesini belirtir
###spring.datasource.url JDBC URL'sini belirtir.
###spring.datasource.use-disposable-connection-façade, bağlandıktan sonra kullanılmasını önlemek için bağlantıyı sarar.
###spring.datasource.use-eşittir: == yerine String.equals() kullanılıp kullanılmaması gerekir.
###spring.datasource.use-lock bağlantı işleminde kilitlenmiştir
###spring.datasource.usernameVeritabanı adını belirtin.
###spring.datasource.validation-interval, bağlantı kontrolü için kaç ms yapılacağını belirtir.
###spring.datasource.validation-query, bağlantı elde edilirken bağlantı doğrulaması için SQL sorgu ifadesini belirtir.
###spring.datasource.validation-query-timeoutBağlantı doğrulama sorgusu için zaman aşımını belirtir.
###spring.datasource.validation-timeoutHikari bağlantı havuzu kullanıldığında belirtilen bağlantı doğrulaması için zaman aşımını ayarlar
###spring.datasource.validator-class-name Sorguyu test etmek için kullanılan validator tam niteleyici.
###spring.datasource.xa.data-source-class-name Veri kaynağının tam niteleyicisini belirtir.
###spring.datasource.xa.properties XA veri kaynağına iletilen özellikleri belirtir
###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
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.max-active=20
spring.datasource.max-boş=8
spring.datasource.min-idle=8
spring.datasource.initial-size=10
##########################################
##SPring JPA yapılandırma bilgileri
###spring.jpa.database hedef veritabanını belirtir.
###spring.jps.show-sq: SQL ifadelerini gösterip gösterilmeyeceği
###spring.jpa.hibernate.ddl-auto DDL modunu (none, valide, update, create-drop) belirtir. Gömülü veritabanı kullanıldığında, varsayılan olarak create-drop'tur, aksi takdirde hiç yoktur.
###spring.jpa.hibernate.naming-strategyAdlandırma politikasını belirtin.
###其他:
###spring.jpa.database-platformHedef veritabanı türünü belirtir.
###spring.jpa.generate-ddl şemayı başlatırken başlatıp başlatmamalı, varsayılan olarak false
###spring.jpa.hibernate.ddl-auto DDL modunu (none, valide, update, create-drop) belirtir. Gömülü veritabanı kullanıldığında, varsayılan olarak create-drop'tur, aksi takdirde hiç yoktur.
###spring.jpa.hibernate.naming-strategyAdlandırma politikasını belirtin.
###spring.jpa.open-in-view, OpenEntityManagerInViewInterceptor'u kaydeder ve JPA EntityManager'ı istek iş parçacığına bağlar, varsayılan doğrudur
###spring.jpa.properties JPA sağlayıcısına ek öznitelikler ekler.
###spring.jpa.show-sql SQL log'u etkinleştirip etkinleştirilmemesi varsayılan olarak false olarak ayarlanır
##########################################
spring.jpa.database = MYSQL
spring.jpa.show-sql = doğru
spring.jpa.hibernate.ddl-auto = güncelleme
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
spring.freemarker.charset=UTF-8

Tüm paket yapısı



Veri Kaynağı Yapılandırması:




Varlık sınıfı:



Veritabanı işletim arayüzü:

Veritabanı işletim arayüzü, JpaRepository genel sınıfından miras alır ve devraldığında, geliştiricilere verdiği ilahi gücü kazanır:



Bu yöntemleri doğrudan veritabanı işlemlerini gerçekleştirmek için çağırabiliriz ve ayrıca HQL'yi kişiliğimize uygun diğer işlemleri tamamlayacak şekilde özelleştirebiliriz, örneğin:

Bu kodda, @Query yorum aracılığıyla,HQL'nin yazımını tamamladıburada ":name" aşağıdaki @Param açıklamasındaki parametreyle tutarlıdır.

Not: HQL'deki tablo adı, ORM haritasının sınıf adı olmalı ve HQL'nin geleneksel SQL ifadelerinden bazı farklılıkları vardır, örneğin "*" anlamının farklı olması gibi.

HQL kullanmaya alışık değilseniz, SQL ifadeleri de kullanabilirsiniz:



Yukarıdaki yöntem uygulandığında hâlâ etkilidir.nativeQuery'den true'ya SQL dilini kullanmak anlamına gelir

Kontrolör sınıfı:

Projeye başlayın

Hibernate, varlık sınıflarını otomatik olarak veritabanına eşleyerek ilgili veritabanı tabloları oluşturacak ve @Table, @Column, @Id, @GeneratedValue (strateji = GenerationType.AUTO) gibi açıklamalara dayalı olarak veritabanı tablolarını otomatik olarak eşleştirecek. Tablo çalışmalarından çok tasarruf edin.


(Projeye başlamadan önce veritabanını oluşturmanız gerekir ve tablo otomatik olarak oluşturulur)



hibernate_sequence tablo, annotasyonlu bir id üretim stratejisidir @GeneratedValue, GenerationType.AUTO otomatik üretimi temsil eder; ancak id özniteliği int veya uzun tür özniteliği olmalıysa, eğer id String tipli bir atribitlikse, bu annotasyonun id'nin üstüne eklenmesi hemen hata rapor eder. Bu nedenle, eğer String türünün id içinse, id'yi @GeneratedValue ile açıklama yapmanıza gerek yoktur (strateji = GenerationType.AUTO).

Test talep et

Veri talebini tamamla ve veri kaydı ile sırasıyla get ve post ile aktar.


çağırmakBağlantı girişi görünür.Arayüz, aşağıdaki şekilde gösterildiği gibi veri eklemek için POST isteği:



Veritabanı sorgusu şu şekildedir:



Verileri aşağıdaki arayüzden alın:

Bağlantı girişi görünür.
Bağlantı girişi görünür.
Bağlantı girişi görünür.



Not: Yukarıdaki arayüzün talep ettiği gibi, Java çok hassas bir durumdur; ister URL adresi ister parametreler olsun, büyük harf duyarlı olması gerekir! Bir harf büyük veya küçük harfse, bu isteğin arayüze ulaşmamasına veya parametrenin boş olmasına neden olur!

Druid aşağıdaki durumları izler:






Son olarak, kaynak kodunu ekleyin:

Turistler, bu gönderinin gizli içeriğini görmek isterseniz lütfenYanıt


(Son)





Önceki:Bir Veri Kaynağı yapılandırması başarısız oldu
Önümüzdeki:Jieyou Öğleden Sonra Çayı | Çarşamba, 20 Şubat 2019
Yayınlandı 21.02.2019 02:19:13 |
Öğrenmeyi öğrenmeye bir göz at.
Yayınlandı 5.07.2019 17:27:02 |
Öğrenmeyi öğren...
Yayınlandı 22.07.2019 14:15:41 |
Öğrenmeyi öğrenmeye bir göz at.
Yayınlandı 21.11.2019 21:08:12 |
【Practical Combat】Spring Boot Hibernate Druid MySQL Project Construction Tutorial
Yayınlandı 30.03.2020 13:52:54 |
Çok teşekkür ederim
Yayınlandı 28.06.2020 15:13:11 |
Büyük oyuncuların kod öğrenme sürecine bir göz atın
Yayınlandı 18.11.2020 23:57:19 |
Öğrenmeyi öğren
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com