Hibernate 简明教程
Hibernate - Configuration
Hibernate 需要提前知道——在哪里找到映射信息,这些映射信息定义了 Java 类和数据库表之间的相互关系。Hibernate 还需要一组与数据库和其他相关参数相关的配置设置。所有此类信息通常按标准 Java 属性文件 hibernate.properties 提供,或按名为 hibernate.cfg.xml 的 XML 文件提供。
我在示例中将考虑使用 XML 格式的文件 hibernate.cfg.xml 来指定必需的 Hibernate 属性。大多数属性采用其默认值,并且不必在属性文件中指定它们(除非确实需要)。此文件保存在应用程序类路径的根目录中。
Hibernate Properties
以下是一些重要属性,在独立情况下,您需要对其进行数据库配置:
Sr.No. |
Properties & Description |
1 |
hibernate.dialect 此属性使 Hibernate 为所选数据库生成适当的 SQL。 |
2 |
hibernate.connection.driver_class The JDBC driver class. |
3 |
hibernate.connection.url 连接到数据库实例的 JDBC URL。 |
4 |
hibernate.connection.username The database username. |
5 |
hibernate.connection.password The database password. |
6 |
hibernate.connection.pool_size 限制了在 Hibernate 数据库连接池中等待的连接数量。 |
7 |
hibernate.connection.autocommit 允许对 JDBC 连接使用自动提交模式。 |
如果您使用数据库与应用程序服务器和 JNDI 一起使用,则需要配置以下属性:
Sr.No. |
Properties & Description |
1 |
hibernate.connection.datasource 应用程序服务器上下文中定义的 JNDI 名称,您正在为应用程序使用该 JNDI 名称。 |
2 |
hibernate.jndi.class JNDI 的 InitialContext 类。 |
3 |
hibernate.jndi.<JNDIpropertyname> 将您想要的任何 JNDI 属性传递给 JNDI InitialContext。 |
4 |
hibernate.jndi.url 提供 JNDI 的 URL。 |
5 |
hibernate.connection.username The database username. |
6 |
hibernate.connection.password The database password. |
Hibernate with MySQL Database
MySQL 是当今最流行的开源数据库系统之一。我们将创建 hibernate.cfg.xml 配置文件,并将其放入应用程序类路径的根目录中。您必须确保您的 MySQL 数据库中存在 testdb 数据库,并且您有用户 test 可用于访问数据库。
XML 配置文件必须符合 Hibernate 3 Configuration DTD,可以在 http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd 中获取该 DTD。
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 5.3//EN"
"http://hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hbm2ddl.auto">update</property>
<property name="dialect">org.hibernate.dialect.MySQL8Dialect</property>
<property name="connection.url">jdbc:mysql://localhost/TUTORIALSPOINT</property>
<property name="connection.username">root</property>
<property name="connection.password">guest123</property>
<property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<mapping resource="employee.hbm.xml"/>
</session-factory>
</hibernate-configuration>
上述配置文件包含 <mapping> 标记,这些标记与 Hibernate 映射文件相关,我们将在下一章中看到 Hibernate 映射文件确切是什么以及我们如何以及为什么使用它?
hbm2ddl.auto Property
Hibernate 中的 hbm2ddl.auto
属性定义如何处理数据库架构。可能的值包括:
-
create ——如果值为“create”,则当创建 SessionFactory 对象时,Hibernate 会在数据库中创建一个新表。如果在数据库中存在具有相同名称的表,它会删除该表及其数据并创建一个新表。
-
update ——如果值为“update”,则 Hibernate 会先验证该表在数据库中是否存在。如果存在,则按更改修改该表。如果不存在,则创建一个新表。
-
validate −如果值为“validate”,则 Hibernate 仅验证表是否存在。如果表不存在,则它会抛出一个异常。
-
create-drop −如果值为“create-drop”,则 Hibernate 将在新创建 SessionFactory 时创建一个新表,执行所需的操作,并在 SessionFactory 销毁时删除该表。此值用于测试 Hibernate 代码。
-
none −它不会对架构进行任何更改。
Hibernate Dialect
数据库方言是一种配置选项,它允许软件将通用 SQL 语句转换到特定于供应商的 DDL 和 DML。不同的数据库产品(例如 PostgreSQL、MySQL、Oracle 和 SQL Server)有自己的 SQL 变体,称为 SQL 方言。
以下是各种重要的数据库方言属性类型的列表 -
Sr.No. |
Database & Dialect Property |
1 |
Caché 2007.1 org.hibernate.dialect.Cache71Dialect |
2 |
DB2 org.hibernate.dialect.DB2Dialect |
3 |
DB2/390 org.hibernate.dialect.DB2390Dialect |
4 |
DB2/400 org.hibernate.dialect.DB2400Dialect |
5 |
Cloudscape 10 - aka Derby. org.hibernate.dialect.DerbyDialect |
6 |
Firebird org.hibernate.dialect.FirebirdDialect |
7 |
FrontBase org.hibernate.dialect.FrontBaseDialect |
8 |
H2 org.hibernate.dialect.H2Dialect |
9 |
HSQLDB(HyperSQL) org.hibernate.dialect.HSQLDialect |
10 |
Informix org.hibernate.dialect.InformixDialect |
11 |
Ingres 9.2 org.hibernate.dialect.IngresDialect |
12 |
Ingres 9.3 and later org.hibernate.dialect.Ingres9Dialect |
13 |
Ingres 10 and later org.hibernate.dialect.Ingres10Dialect |
14 |
Interbase org.hibernate.dialect.InterbaseDialect |
15 |
Microsoft SQL Server 2000 org.hibernate.dialect.SQLServerDialect |
16 |
Microsoft SQL Server 2005 org.hibernate.dialect.SQLServerDialect |
17 |
Microsoft SQL Server 2008 org.hibernate.dialect.SQLServer2008Dialect |
18 |
MySQL (prior to 5.x) org.hibernate.dialect.MySQLDialect |
19 |
MySQL 5.x org.hibernate.dialect.MySQL5Dialect |
20 |
Oracle 8i org.hibernate.dialect.Oracle8iDialect |
21 |
Oracle 9i org.hibernate.dialect.Oracle9iDialect |
22 |
Oracle 10g org.hibernate.dialect.Oracle10gDialect |
23 |
Oracle 11g org.hibernate.dialect.Oracle10gDialect |
24 |
Pointbase org.hibernate.dialect.PointbaseDialect |
25 |
PostgreSQL org.hibernate.dialect.PostgreSQLDialect |
26 |
PostgreSQL Plus org.hibernate.dialect.PostgrePlusDialect |
27 |
Progress org.hibernate.dialect.ProgressDialect |
28 |
Unisys 2200 Relational Database (RDMS) org.hibernate.dialect.RDMSOS2200Dialect |
29 |
SAP DB org.hibernate.dialect.SAPDBDialect |
30 |
Sybase 11.9.2 org.hibernate.dialect.Sybase11Dialect |
31 |
Sybase Anywhere org.hibernate.dialect.SybaseAnywhereDialect |
32 |
Sybase Adaptive Server Enterprise (ASE) 15 org.hibernate.dialect.SybaseASE15Dialect |
33 |
Teradata org.hibernate.dialect.TeradataDialect |
34 |
TimesTen 5.1 org.hibernate.dialect.TimesTenDialect |