Hibernate ORM เป็นโซลูชันการแมปวัตถุ/เชิงสัมพันธ์ที่ทรงพลังสำหรับ Java และทำให้การพัฒนาตรรกะการคงอยู่สำหรับแอปพลิเคชัน ไลบรารี และเฟรมเวิร์กเป็นเรื่องง่าย
Hibernate ใช้ JPA ซึ่งเป็น API มาตรฐานสำหรับการคงอยู่ของอ็อบเจ็กต์/ความสัมพันธ์ใน Java แต่ยังนำเสนอชุดคุณลักษณะและ API ที่ครอบคลุมซึ่งเกินกว่าข้อกำหนดเฉพาะอีกด้วย
ดู Hibernate.org สำหรับข้อมูลเพิ่มเติม
Hibernate ใช้ทั้ง Jenkins และ GitHub Actions สำหรับความต้องการ CI ดู
งานเจนกินส์
งานการดำเนินการ GitHub
บิลด์ต้องการ Java 11 เป็นอย่างน้อยและ Java 17 เป็นส่วนใหญ่
Hibernate ใช้ Gradle เป็นเครื่องมือสร้าง ดูส่วน Gradle Primer ด้านล่างหากคุณยังใหม่กับ Gradle
ผู้ร่วมให้ข้อมูลควรอ่านคู่มือการมีส่วนร่วม
ดูคำแนะนำสำหรับการตั้งค่า IntelliJ หรือ Eclipse เป็นสภาพแวดล้อมการพัฒนาของคุณ
เครื่องมือสร้าง Gradle มีเอกสารที่น่าทึ่ง 2โดยเฉพาะที่ขาดไม่ได้:
คู่มือผู้ใช้ Gradle เป็นคู่มือผู้ใช้ทั่วไปที่เป็นไปตามแนวทางเฉพาะในการอธิบายความสามารถทั้งหมดของ Gradle
Gradle DSL Guide มีเอกลักษณ์และยอดเยี่ยมในการเร่งความเร็วในบางแง่มุมของ Gradle
เราจะพูดถึงพื้นฐานสำหรับนักพัฒนาและผู้มีส่วนร่วมที่เพิ่งเริ่มใช้ Gradle จำเป็นต้องรู้เพื่อให้ได้ประสิทธิผลอย่างรวดเร็ว
บันทึก | โครงการกำหนด Gradle Wrapper ส่วนที่เหลือของส่วนจะดำเนินการผ่าน wrapper |
Gradle ใช้แนวคิดของงานสร้าง (เทียบเท่ากับเป้าหมาย Ant หรือเฟส/เป้าหมาย Maven) คุณสามารถรับรายการงานที่มีอยู่ได้ทาง
งานไล่ระดับ
หากต้องการดำเนินการงานข้ามโมดูลทั้งหมด เพียงดำเนินการงานนั้นจากไดเร็กทอรีราก Gradle จะเยี่ยมชมแต่ละโครงการย่อยและดำเนินการงานนั้นหากโครงการย่อยกำหนดไว้ หากต้องการดำเนินงานในโมดูลเฉพาะ คุณสามารถ:
cd
ลงในไดเร็กทอรีโมดูลนั้นและดำเนินการงาน
ตั้งชื่อ "เส้นทางงาน" For example, to run the tests for the hibernate-core module from the root directory you could say gradle hibernate-core:test
งานทั่วไปที่คุณอาจใช้ในการสร้าง Hibernate ได้แก่:
build - ประกอบ (ขวด) และทดสอบโปรเจ็กต์นี้
คอมไพล์ - ดำเนินงานการคอมไพล์ทั้งหมด รวมถึงทรัพยากรการแสดงละครจากทั้งหลักและการทดสอบ
jar - สร้างไฟล์เก็บถาวร jar พร้อมคลาสที่คอมไพล์แล้วทั้งหมด
ทดสอบ - รันการทดสอบ
publishToMavenLocal - ติดตั้ง jar โปรเจ็กต์ลงในแคช Maven ในเครื่องของคุณ (aka ~/.m2/repository) โปรดทราบว่า Gradle ไม่เคยใช้สิ่งนี้ แต่จะมีประโยชน์สำหรับการทดสอบบิลด์ของคุณกับบิลด์ที่ใช้ Maven ในพื้นที่อื่น ๆ
clean - ทำความสะอาดไดเร็กทอรี build
การทดสอบกับฐานข้อมูลเฉพาะสามารถทำได้ 2 วิธี:
มาทีหลัง…
โครงสร้าง Hibernate กำหนด "โปรไฟล์" การทดสอบฐานข้อมูลหลายรายการใน databases.gradle
โปรไฟล์เหล่านี้สามารถเปิดใช้งานตามชื่อโดยใช้คุณสมบัติ db
build ซึ่งสามารถส่งผ่านเป็นเสาระบบ JVM ( -D
) หรือเป็นคุณสมบัติโครงการ Gradle ( -P
) ตัวอย่างด้านล่างใช้วิธีการทรัพย์สินโครงการ Gradle
ไล่ระดับ clean build -Pdb=pgsql
หากต้องการรันการทดสอบจาก IDE ของคุณ คุณต้องแน่ใจว่ามีการขยายคุณสมบัติเกิดขึ้น ใช้คำสั่งต่อไปนี้:
ไล่ระดับความสะอาดคอมไพล์ -Pdb=pgsql
หมายเหตุ: หากคุณกำลังรันการทดสอบกับไดรเวอร์ JDBC ที่ไม่พร้อมใช้งานผ่าน Maven central อย่าลืมเพิ่มไดรเวอร์เหล่านี้ลงในแคช repo Maven ในเครื่องของคุณ (~/.m2/repository) หรือ (ดีกว่า) เพิ่มลงในเซิร์ฟเวอร์ repo Maven ส่วนตัว
คุณสามารถรันการทดสอบใดๆ บนฐานข้อมูลใดๆ ที่กำหนดค่าไว้ในโปรไฟล์ databases.gradle
สิ่งที่คุณต้องทำคือรันคำสั่งต่อไปนี้:
./gradlew setDataBase -Pdb=pgsql
หรือคุณสามารถใช้เวอร์ชันทางลัด:
./gradlew sDB -Pdb=pgsql
คุณสามารถทำได้จากโมดูลที่คุณสนใจที่จะทดสอบหรือจากโฟลเดอร์รูท hibernate-orm
หลังจากนั้น เพียงเลือกการทดสอบใดๆ จาก IDE และรันตามปกติ Hibernate จะเลือกการกำหนดค่าฐานข้อมูลจากไฟล์ hibernate.properties
ที่ตั้งค่าโดยงาน setDataBase
Gradle
คุณไม่จำเป็นต้องติดตั้งฐานข้อมูลทั้งหมดภายในเครื่องเพื่อให้สามารถทดสอบได้ในกรณีที่คุณมีนักเทียบท่า สคริปต์ docker_db.sh
ช่วยให้คุณเริ่มฐานข้อมูลที่กำหนดค่าไว้ล่วงหน้าซึ่งสามารถใช้สำหรับการทดสอบได้
สิ่งที่คุณต้องทำคือรันคำสั่งต่อไปนี้:
./docker_db.sh postgresql
การละเว้นอาร์กิวเมนต์จะพิมพ์รายการตัวเลือกที่เป็นไปได้
เมื่อฐานข้อมูลเริ่มต้นอย่างถูกต้อง คุณสามารถรันการทดสอบด้วยโปรไฟล์พิเศษที่ต่อท้ายด้วย _ci
เช่น pgsql_ci
สำหรับ PostgreSQL ด้วยการใช้คุณสมบัติระบบ dbHost
คุณสามารถกำหนดค่าที่อยู่ IP ของโฮสต์นักเทียบท่าของคุณได้
คำสั่งสำหรับการรันการทดสอบอาจมีลักษณะดังนี้:
./gradlew ทดสอบ -Pdb=pgsql_ci "-DdbHost=192.168.99.100"
ตารางต่อไปนี้แสดงรายการคำสั่งสำหรับฐานข้อมูลต่างๆ ที่สามารถทดสอบได้ในเครื่อง
ฐานข้อมูล | docker_db.sh | คำสั่งเกรเดิล |
---|---|---|
H2 | - | |
HSQLDB | - | |
อาปาเช่ดาร์บี้ | - | |
MySQL | | |
มาเรียดีบี | | |
PostgreSQL | | |
enterprisedB | | |
ออราเคิล | | |
ดีบี2 | | |
เซิร์ฟเวอร์ SQL | | |
Sybase ASE (jTDS) | | |
Sybase ASE (jConnect) | | |
เอสเอพี ฮานะ | | |
แมลงสาบDB | | |
TiDB | | |
อินฟอร์มิกซ์ | | |
หากต้องการหยุดคอนเทนเนอร์ที่เริ่มโดย docker
ให้ใช้คำสั่ง
docker stop $container_name
แทนที่คำสั่ง podman
สำหรับ docker
เทียบท่าหากใช้ podman
เช่น เพื่อหยุดคอนเทนเนอร์ mariadb
docker stop mariadb