ไฮเบอร์เนต - การกำหนดค่า
ไฮเบอร์เนตจำเป็นต้องทราบล่วงหน้า - จะค้นหาข้อมูลการแมปที่กำหนดว่าคลาส Java ของคุณเกี่ยวข้องกับตารางฐานข้อมูลอย่างไร ไฮเบอร์เนตยังต้องการชุดการตั้งค่าคอนฟิกที่เกี่ยวข้องกับฐานข้อมูลและพารามิเตอร์อื่น ๆ ที่เกี่ยวข้อง ข้อมูลดังกล่าวทั้งหมดมักจัดให้เป็นไฟล์คุณสมบัติ Java มาตรฐานที่เรียกว่าhibernate.propertiesหรือเป็นไฟล์ XML ชื่อ hibernate.cfg.xml.
ฉันจะพิจารณาไฟล์ที่จัดรูปแบบ XML hibernate.cfg.xmlเพื่อระบุคุณสมบัติไฮเบอร์เนตที่จำเป็นในตัวอย่างของฉัน คุณสมบัติส่วนใหญ่ใช้ค่าดีฟอลต์และไม่จำเป็นต้องระบุไว้ในไฟล์คุณสมบัติเว้นแต่ว่าจำเป็นจริงๆ ไฟล์นี้ถูกเก็บไว้ในไดเร็กทอรีรากของคลาสพา ธ ของแอปพลิเคชันของคุณ
คุณสมบัติไฮเบอร์เนต
ต่อไปนี้เป็นรายการคุณสมบัติที่สำคัญคุณจะต้องกำหนดค่าสำหรับฐานข้อมูลในสถานการณ์แบบสแตนด์อโลน -
ซีเนียร์ | คุณสมบัติและคำอธิบาย |
---|---|
1 | hibernate.dialect คุณสมบัตินี้ทำให้ Hibernate สร้าง SQL ที่เหมาะสมสำหรับฐานข้อมูลที่เลือก |
2 | hibernate.connection.driver_class คลาสไดรเวอร์ JDBC |
3 | hibernate.connection.url JDBC URL ไปยังอินสแตนซ์ฐานข้อมูล |
4 | hibernate.connection.username ชื่อผู้ใช้ฐานข้อมูล |
5 | hibernate.connection.password รหัสผ่านฐานข้อมูล |
6 | hibernate.connection.pool_size จำกัด จำนวนการเชื่อมต่อที่รออยู่ในกลุ่มการเชื่อมต่อฐานข้อมูลไฮเบอร์เนต |
7 | hibernate.connection.autocommit อนุญาตให้ใช้โหมด autocommit สำหรับการเชื่อมต่อ JDBC |
หากคุณใช้ฐานข้อมูลร่วมกับแอ็พพลิเคชันเซิร์ฟเวอร์และ JNDI คุณจะต้องกำหนดค่าคุณสมบัติต่อไปนี้ -
ซีเนียร์ | คุณสมบัติและคำอธิบาย |
---|---|
1 | hibernate.connection.datasource ชื่อ JNDI ที่กำหนดในบริบทแอ็พพลิเคชันเซิร์ฟเวอร์ซึ่งคุณกำลังใช้สำหรับแอ็พพลิเคชัน |
2 | hibernate.jndi.class คลาส InitialContext สำหรับ JNDI |
3 | hibernate.jndi.<JNDIpropertyname> ผ่านคุณสมบัติ JNDI ใด ๆ ที่คุณชอบไป JNDI InitialContext |
4 | hibernate.jndi.url ระบุ URL สำหรับ JNDI |
5 | hibernate.connection.username ชื่อผู้ใช้ฐานข้อมูล |
6 | hibernate.connection.password รหัสผ่านฐานข้อมูล |
ไฮเบอร์เนตด้วยฐานข้อมูล MySQL
MySQL เป็นระบบฐานข้อมูลแบบโอเพนซอร์สที่ได้รับความนิยมมากที่สุดในปัจจุบัน ให้เราสร้างhibernate.cfg.xmlไฟล์การกำหนดค่าและวางไว้ในรูทของ classpath ของแอปพลิเคชันของคุณ คุณจะต้องแน่ใจว่าคุณมีtestdb ฐานข้อมูลที่มีอยู่ในฐานข้อมูล MySQL ของคุณและคุณมีผู้ใช้ test สามารถเข้าถึงฐานข้อมูลได้
ไฟล์คอนฟิกูเรชัน XML ต้องเป็นไปตาม Hibernate 3 Configuration DTD ซึ่งมีอยู่ที่ http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd.
<?xml version = "1.0" encoding = "utf-8"?>
<!DOCTYPE hibernate-configuration SYSTEM
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name = "hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name = "hibernate.connection.driver_class">
com.mysql.jdbc.Driver
</property>
<!-- Assume test is the database name -->
<property name = "hibernate.connection.url">
jdbc:mysql://localhost/test
</property>
<property name = "hibernate.connection.username">
root
</property>
<property name = "hibernate.connection.password">
root123
</property>
<!-- List of XML mapping files -->
<mapping resource = "Employee.hbm.xml"/>
</session-factory>
</hibernate-configuration>
ไฟล์การกำหนดค่าข้างต้นประกอบด้วย <mapping> แท็กซึ่งเกี่ยวข้องกับไฟล์ hibernatemapping และเราจะเห็นในบทถัดไปว่าไฟล์การแมปไฮเบอร์เนตคืออะไรและเราใช้มันอย่างไรและทำไม?
ต่อไปนี้เป็นรายการประเภทคุณสมบัติของฐานข้อมูลที่สำคัญต่างๆ -
ซีเนียร์ | ฐานข้อมูลและภาษาถิ่น |
---|---|
1 | DB2 org.hibernate.dialect.DB2Dialect |
2 | HSQLDB org.hibernate.dialect.HSQLDialect |
3 | HypersonicSQL org.hibernate.dialect.HSQLDialect |
4 | Informix org.hibernate.dialect.InformixDialect |
5 | Ingres org.hibernate.dialect.IngresDialect |
6 | Interbase org.hibernate.dialect.InterbaseDialect |
7 | Microsoft SQL Server 2000 org.hibernate.dialect.SQLServerDialect |
8 | Microsoft SQL Server 2005 org.hibernate.dialect.SQLServer2005Dialect |
9 | Microsoft SQL Server 2008 org.hibernate.dialect.SQLServer2008Dialect |
10 | MySQL org.hibernate.dialect.MySQLDialect |
11 | Oracle (any version) org.hibernate.dialect.OracleDialect |
12 | Oracle 11g org.hibernate.dialect.Oracle10gDialect |
13 | Oracle 10g org.hibernate.dialect.Oracle10gDialect |
14 | Oracle 9i org.hibernate.dialect.Oracle9iDialect |
15 | PostgreSQL org.hibernate.dialect.PostgreSQLDialect |
16 | Progress org.hibernate.dialect.ProgressDialect |
17 | SAP DB org.hibernate.dialect.SAPDBDialect |
18 | Sybase org.hibernate.dialect.SybaseDialect |
19 | Sybase Anywhere org.hibernate.dialect.SybaseAnywhereDialect |