附录 A. 参考资料


A.1. Hibernate 属性

Expand
表 A.1. 在 persistence.xml 文件中配置的连接属性
属性名称描述

javax.persistence.jdbc.driver

org.hsqldb.jdbcDriver

要使用的 JDBC 驱动程序的类名称。

javax.persistence.jdbc.user

SA

用户名。

javax.persistence.jdbc.password

 

密码.

javax.persistence.jdbc.url

jdbc:hsqldb:.

JDBC 连接 URL.

Expand
表 A.2. Hibernate 配置属性
属性名称描述

hibernate.dialect

Hibernate org.hibernate.dialect.Dialect.Dialect 的类名称。允许 Hibernate 生成针对特定关系数据库优化的 SQL。

在大多数情况下,Hibernate 将能够根据 JDBC 驱动程序返回的 JDBC 元数据,选择正确的 org.hibernate.dialect.Dialect 实施。

hibernate.show_sql

布尔值.将所有 SQL 语句写入控制台。这是将日志类别 org.hibernate.SQL 设置为 debug 的替代选择。

hibernate.format_sql

布尔值.在日志和控制台中仔细打印 SQL。

hibernate.default_schema

使用生成的 SQL 中给定的 schema/tablespace 限定非限定表名称。

hibernate.default_catalog

使用生成的 SQL 中的给定目录限定非限定表名称。

hibernate.session_factory_name

org.hibernate.SessionFactory 将在创建后在 Java Naming 和 Directory 界面中自动绑定到此名称。例如: jndi/composite/name.Jpa

hibernate.max_fetch_depth

为单点关联(一对一,多对一)设置外部连接获取树的最大深度。0 可禁用默认外部连接获取。建议的值介于 0 到 3 之间。

hibernate.default_batch_fetch_size

设置用于 Hibernate 批处理获取关联的默认大小。建议的值为 4816

hibernate.default_entity_mode

为从此 SessionFactory 中打开的所有会话设置实体表示的默认模式。值包括: dynamic-mapdom4jpojo

hibernate.order_updates

布尔值.强制 Hibernate 按照正在更新的项目的主键值对 SQL 更新进行排序。这将导致高度并发系统中的事务死锁减少。

hibernate.generate_statistics

布尔值.如果启用,Hibernate 将收集对性能调优有用的统计信息。

hibernate.use_identifier_rollback

布尔值.如果启用,则在删除对象时,生成的标识符属性将重置为默认值。

hibernate.use_sql_comments

布尔值.如果启用,Hibernate 将在 SQL 中生成注释,以便于调试。默认值为 false

hibernate.id.new_generator_mappings

布尔值.此属性在使用 @GeneratedValue 时相关。它指示新的 IdentifierGenerator 实施是否用于 javax.persistence.GenerationType.AUTO、javax.persistence.GenerationType.TABLE 和 javax.persistence.GenerationType.SEQUENCE.默认值为 true

hibernate.ejb.naming_strategy

使用 Hibernate EntityManager 时,选择 org.hibernate.cfg.NamingStrategy 实施。Hibernate.ejb.naming_strategy 在 Hibernate 5.0 中不再受支持。如果使用,则会记录一个弃用信息,表示它不再被支持,并已被删除,而是使用 split ImplicitNamingStrategy 和 PhysicalNamingStrategy。

如果应用程序不使用 EntityManager,请按照这里的说明配置 NamingStrategy: Hibernate Reference 文档 - Naming Strategies

有关使用 MetadataBuilder 原生 bootstrapping 并应用隐式命名策略的示例,请参阅 Hibernate 5.0 文档中的 http://docs.jboss.org/hibernate/orm/5.0/userguide/html_single/Hibernate_User_Guide.html#bootstrap-native-metadata。物理命名策略可使用 MetadataBuilder.applyPhysicalNamingStrategy() 应用。有关 org.hibernate.boot.MetadataBuilder 的详情请参考 https://docs.jboss.org/hibernate/orm/5.0/javadocs/

hibernate.implicit_naming_strategy

指定要使用的 org.hibernate.boot.model.naming.ImplicitNamingStrategy 类。Hibernate.implicit_naming_strategy 还可用于配置实现 ImplicitNamingStrategy 的自定义类。为这个设置定义了以下短名称:

  • default - ImplicitNamingStrategyJpaCompliantImpl
  • jpa - ImplicitNamingStrategyJpaCompliantImpl
  • legacy-jpa - ImplicitNamingStrategyLegacyJpaImpl
  • legacy-hbm - ImplicitNamingStrategyLegacyHbmImpl
  • component-path - ImplicitNamingStrategyComponentPathImpl

默认设置由 ImplicitNamingStrategy 在 默认 短名称中定义。如果默认设置为空,则回退将使用 ImplicitNamingStrategyJpaCompliantImpl

hibernate.physical_naming_strategy

可插拔策略合同,用于为数据库对象名称应用物理命名规则。指定要使用的 PhysicalNamingStrategy 类。PhysicalNamingStrategyStandardImpl 默认会被使用。Hibernate.physical_naming_strategy 还可用于配置实现 PhysicalNamingStrategy 的自定义类。

重要

对于 hibernate.id.new_generator_mappings,新应用程序应保留默认值 true。使用 Hibernate 3.3.x 的现有应用可能需要将其更改为 false,以继续使用基于序列对象或表的生成器,并且保持向后兼容性。

Expand
表 A.3. Hibernate JDBC 和连接属性
属性名称描述

hibernate.jdbc.fetch_size

决定 JDBC 获取大小的非零值(calls Statement.setFetchSize())

hibernate.jdbc.batch_size

非零值可启用 Hibernate 使用 JDBC2 批处理更新。建议的值介于 5 到 30 之间。

hibernate.jdbc.batch_versioned_data

布尔值.如果 JDBC 驱动程序返回来自 executeBatch() 的正确行数,则将此属性设为 true。然后,Hibernate 将批处理 DML 用于自动版本化的数据。默认值为 false

hibernate.jdbc.factory_class

选择自定义 org.hibernate.jdbc.Batcher。大多数应用都不需要此配置属性。

hibernate.jdbc.use_scrollable_resultset

布尔值.启用通过 Hibernate 使用 JDBC2 可滚动结果集。只有使用用户提供的 JDBC 连接时才需要此属性。Hibernate 使用连接元数据,否则,Hibernate 将使用连接元数据。

hibernate.jdbc.use_streams_for_binary

布尔值.这是一个系统级属性。在将 二进制 或可 序列化 类型写入/从 JDBC 写入/读取时,请使用流。

hibernate.jdbc.use_get_generated_keys

布尔值.启用 JDBC3 Prepared Statement.getGeneratedKeys() 在插入后检索原生生成的密钥。需要 JDBC3+ 驱动程序和 JRE1.4+。如果 JDBC 驱动程序与 Hibernate 标识符生成器有问题,则设置为 false。默认情况下,它会尝试使用连接元数据确定驱动程序功能。

hibernate.connection.provider_class

自定义 org.hibernate.connection.ConnectionProvider 的类名称,它为 Hibernate 提供 JDBC 连接。

hibernate.connection.isolation

设置 JDBC 事务隔离级别。检查 java.sql.Connection 以获得有意义的值,但请注意,大多数数据库不支持所有隔离级别,另一些则定义了额外的非标准隔离。标准值为 1、2、4、8

hibernate.connection.autocommit

布尔值.不建议使用此属性。为 JDBC 池连接启用自动提交。

hibernate.connection.release_mode

指定 Hibernate 应何时释放 JDBC 连接。默认情况下,保留 JDBC 连接,直到会话被显式关闭或断开连接。默认值为 auto,为 Jakarta Transactions 和 CMT 事务策略选择 after_statement,为 JDBC 事务策略选择 after_transaction

可用值为 auto (默认)、on_close、fin _transaction、freject_statement

此设置仅影响 SessionFactory.openSession 返回的会话。对于通过 SessionFactory.getCurrentSession 获取的会话,为控制该会话的连接发行模式而被配置为 CurrentSessionContext 实施。

hibernate.connection.<propertyName>

将 JDBC 属性 <propertyName> 传递给 DriverManager.getConnection( )。

hibernate.jndi.<propertyName>

将属性 <propertyName> 传递给 Java 命名和目录接口 InitialContextFactory

Expand
表 A.4. Hibernate 缓存属性
属性名称描述

hibernate.cache.region.factory_class

自定义 CacheProvider 的类名称。

hibernate.cache.use_minimal_puts

布尔值.优化企业级缓存操作,以最小化写入,代价是更频繁的读取。此设置对群集缓存最有用,在 Hibernate3 中,群集缓存实施默认启用此设置。

hibernate.cache.use_query_cache

布尔值.启用查询缓存。单个查询仍然需要设置可缓存。

hibernate.cache.use_second_level_cache

布尔值.用于完全禁用第二级缓存,默认为指定 <cache> 映射的类启用。

hibernate.cache.query_cache_factory

自定义 QueryCache 接口的类名称。默认值为内置的 StandardQueryCache

hibernate.cache.region_prefix

用于第二级缓存区域名称的前缀。

hibernate.cache.use_structured_entries

布尔值.强制 Hibernate 以更易人性的格式将数据存储在第二级缓存中。

hibernate.cache.default_cache_concurrency_strategy

使用 @Cacheable 或 @Cache 时用于指定默认 org.hibernate.annotations.CacheConcurrencyStrategy 的名称的设置。@cache(strategy="..") 用于覆盖此默认值。

Expand
表 A.5. Hibernate 事务属性
属性名称描述

hibernate.transaction.factory_class

与 Hibernate 事务 API 一起使用的事务Factory 的类名称。默认为 JDBCTransactionFactory

jta.UserTransaction

JTATransactionFactory 使用的 Java 命名和目录接口名称,从应用服务器获取 Jakarta Transactions UserTransaction

hibernate.transaction.manager_lookup_class

TransactionManagerLookup 的类名称。启用 JVM 级别缓存或在 Jakarta Transactions 环境中使用 hilo 生成器时,需要此设置。

hibernate.transaction.flush_before_completion

布尔值.如果启用,会话将在交易完成前自动清空。内置和自动会话上下文管理是首选的。

hibernate.transaction.auto_close_session

布尔值.如果启用,会话将在交易完成后自动关闭。内置和自动会话上下文管理是首选的。

Expand
表 A.6. 其他 Hibernate 属性
属性名称描述

hibernate.current_session_context_class

为"当前" 会话 的范围提供一个自定义策略。值包括 jtathreadmanagedcustom.Class

hibernate.query.factory_class

选择 HQL 解析器实施: org.hibernate.hql.internal.ast.ASTranslatorFactory 或 org.hibernate.hql.internal.classic.ClassicQueryTranslatorFactory

hibernate.query.substitutions

用于从 Hibernate 查询中的令牌映射到 SQL 令牌(令牌可以是功能或字面名称)。例如,hqlLiteral=SQL_LITERAL、hqlFunction=SQLFUNC

hibernate.query.conventional_java_constants

指明 Java 常量是否遵循 Java 命名约定。默认为 false。只有在应用中使用了传统的 Java 常量时,现有应用才可以将其设置为 true

将此设置为 true 可显著提高性能,因为 Hibernate 可以仅通过检查别名是否遵循 Java 命名约定来确定别名是否应该被视为 Java 常态。

当此属性设为 false 时,Hibernate 确定别名应通过尝试将别名加载为类来被视为 Java 常数,这是应用的开销。如果别名无法作为类加载,则 Hibernate 将别名视为 Java 常态。

hibernate.hbm2ddl.auto

创建 SessionFactory 时,自动验证或导出架构 DDL 到数据库。使用 create-drop 时,当 SessionFactory 明确关闭时,数据库架构将被丢弃。属性值选项为 验证更新创建create-drop

hibernate.hbm2ddl.import_files

可选文件的逗号分隔名称,其中包含在 SessionFactory 创建期间执行的 SQL DML 语句。这对于测试或演示非常有用。例如,通过添加 INSERT 语句,可以在部署时使用一组最小的数据进行填充。示例值为 /corps.sql、/dogs.sql

文件顺序很重要,因为执行给定文件的语句后再执行下列文件的声明:这些语句仅在创建架构时才执行,例如将 hibernate.hbm2ddl.auto 设置为 createcreate-drop

hibernate.hbm2ddl.import_files_sql_extractor

自定义 ImportSqlCommandExtractor 的类名称。默认为内置 SingleLineSqlCommandExtractor。这可用于实施一个从每个导入文件提取单个 SQL 语句的专用解析器。Hibernate 还提供 MultipleLinesSqlCommandExtractor,它支持拆分于多行(每个语句末尾的强制分号)的指令/注释和带引号的字符串。

hibernate.bytecode.use_reflection_optimizer

布尔值.这是一个系统级属性,无法在 hibernate.cfg.xml 文件中设置。允许使用字节代码操作,而不是运行时反应。说明性有时在故障排除时很有用。Hibernate 始终需要 cglib 或 javassist,即使优化器已关闭。

hibernate.bytecode.provider

javasist 或 cglib 都可以用作字节操作引擎。默认值为 javassist。该值可以是 javassistcglib

Expand
表 A.7. Hibernate SQL Dialects(hibernate.dialect)
RDBMSdialect

DB2

org.hibernate.dialect.DB2Dialect

DB2 AS/400

org.hibernate.dialect.DB2400Dialect

DB2 OS390

org.hibernate.dialect.DB2390Dialect

Firebird

org.hibernate.dialect.FirebirdDialect

FrontBase

org.hibernate.dialect.FrontbaseDialect

H2 数据库

org.hibernate.dialect.H2Dialect

HypersonicSQL

org.hibernate.dialect.HSQLDialect

Informix

org.hibernate.dialect.InformixDialect

Ingres

org.hibernate.dialect.IngresDialect

InterBase

org.hibernate.dialect.InterbaseDialect

MariaDB 10

org.hibernate.dialect.MariaDB10Dialect

MariaDB Galera Cluster 10

org.hibernate.dialect.MariaDB10Dialect

Mckoi SQL

org.hibernate.dialect.MckoiDialect

Microsoft SQL Server 2000

org.hibernate.dialect.SQLServerDialect

Microsoft SQL Server 2005

org.hibernate.dialect.SQLServer2005Dialect

Microsoft SQL Server 2008

org.hibernate.dialect.SQLServer2008Dialect

Microsoft SQL Server 2012

org.hibernate.dialect.SQLServer2012Dialect

Microsoft SQL Server 2014

org.hibernate.dialect.SQLServer2012Dialect

Microsoft SQL Server 2016

org.hibernate.dialect.SQLServer2012Dialect

MySQL5

org.hibernate.dialect.MySQL5Dialect

MySQL5.5

org.hibernate.dialect.MySQL55Dialect

MySQL5.7

org.hibernate.dialect.MySQL57Dialect

Oracle(任何版本)

org.hibernate.dialect.OracleDialect

Oracle 9i

org.hibernate.dialect.Oracle9iDialect

Oracle 10g

org.hibernate.dialect.Oracle10gDialect

Oracle 11g

org.hibernate.dialect.Oracle10gDialect

Oracle 12c

org.hibernate.dialect.Oracle12cDialect

Pointbase

org.hibernate.dialect.PointbaseDialect

PostgreSQL

org.hibernate.dialect.PostgreSQLDialect

PostgreSQL 9.2

org.hibernate.dialect.PostgreSQL9Dialect

PostgreSQL 9.3

org.hibernate.dialect.PostgreSQL9Dialect

PostgreSQL 9.4

org.hibernate.dialect.PostgreSQL94Dialect

Postgres Plus Advanced Server

org.hibernate.dialect.PostgresPlusDialect

progress

org.hibernate.dialect.ProgressDialect

SAP DB

org.hibernate.dialect.SAPDBDialect

Sybase

org.hibernate.dialect.SybaseASE15Dialect

Sybase 15.7

org.hibernate.dialect.SybaseASE157Dialect

Sybase 16

org.hibernate.dialect.SybaseASE157Dialect

Sybase 任意位置

org.hibernate.dialect.SybaseAnywhereDialect

重要

hibernate.dialect 属性应设置为应用数据库的正确 org.hibernate.dialect.Dialect.Dialect 子类。如果指定了点数,Hibernate 将会对某些其他属性使用明智的默认值。这意味着不需要手动指定它们。





修订了 2022 年 2 月 18:22:39 +1000

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat