hibernate4 mysql配置文件_Hibernate之配置文件

以你之姓@ 2022-10-27 00:27 343阅读 0赞

Hibernate常规属性

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

取值full.classname.of.Dialect

hibernate.show_sql 输出所有SQL语句到控制台. 有一个另外的选择是把org.hibernate.SQL这个logcategory设为debug。

eg. true | false

hibernate.format_sql 在log和console中打印出更漂亮的SQL。

取值 true | false

hibernate.default_schema 在生成的SQL中, 将给定的schema/tablespace附加于非全限定名的表名上.

取值 SCHEMA_NAME

hibernate.default_catalog 在生成的SQL中, 将给定的catalog附加于非全限定名的表名上.

取值 CATALOG_NAME

hibernate.session_factory_name SessionFactory创建后,将自动使用这个名字绑定到JNDI中.

取值jndi/composite/name

hibernate.max_fetch_depth 为单向关联(一对一, 多对一)的外连接抓取(outerjoin fetch)树设置最大深度. 值为0意味着将关闭默认的外连接抓取.

取值 建议在0到3之间取值

hibernate.default_batch_fetch_size 为Hibernate关联的批量抓取设置默认数量.

取值 建议的取值为4, 8, 和16

hibernate.default_entity_mode 为由这个SessionFactory打开的所有Session指定默认的实体表现模式.

取值 dynamic-map,dom4j, pojo

hibernate.order_updates 强制Hibernate按照被更新数据的主键,为SQL更新排序。这么做将减少在高并发系统中事务的死锁。

取值 true | false

hibernate.generate_statistics 如果开启,Hibernate将收集有助于性能调节的统计数据.

取值 true | false

hibernate.use_identifer_rollback 如果开启, 在对象被删除时生成的标识属性将被重设为默认值.

取值 true | false

hibernate.use_sql_comments 如果开启, Hibernate将在SQL中生成有助于调试的注释信息,默认值为false.

取值 true | false

Hibernate JDBC和连接(connection)属性

hibernate.jdbc.fetch_size 非零值,指定JDBC抓取数量的大小 (调用Statement.setFetchSize()).

hibernate.jdbc.batch_size 非零值,允许Hibernate使用JDBC2的批量更新.

取值 建议取5到30之间的值

hibernate.jdbc.batch_versioned_data 如果你想让你的JDBC驱动从executeBatch()返回正确的行计数 , 那么将此属性设为true(开启这个选项通常是安全的).同时,Hibernate将为自动版本化的数据使用批量DML. 默认值为false.

eg. true | false

hibernate.jdbc.factory_class 选择一个自定义的Batcher.多数应用程序不需要这个配置属性.

eg.classname.of.Batcher

hibernate.jdbc.use_scrollable_resultset 允许Hibernate使用JDBC2的可滚动结果集. 只有在使用用户提供的JDBC连接时,这个选项才是必要的,否则Hibernate会使用连接的元数据.

取值 true | false

hibernate.jdbc.use_streams_for_binary 在JDBC读写binary (二进制)或serializable(可序列化) 的类型时使用流(stream)(系统级属性).

取值 true | false

hibernate.jdbc.use_get_generated_keys 在数据插入数据库之后,允许使用JDBC3 PreparedStatement.getGeneratedKeys() 来获取数据库生成的key(键)。需要JDBC3+驱动和JRE1.4+, 如果你的数据库驱动在使用Hibernate的标 识生成器时遇到问题,请将此值设为false.默认情况下将使用连接的元数据来判定驱动的能力.

取值 true|false

hibernate.connection.provider_class 自定义ConnectionProvider的类名, 此类用来向Hibernate提供JDBC连接.

取值classname.of.ConnectionProvider

hibernate.connection.isolation 设置JDBC事务隔离级别. 查看java.sql.Connection来了解各个值的具体意义, 但请注意多数数据库都不支持所有的隔离级别.

取值 1, 2, 4, 8

hibernate.connection.autocommit 允许被缓存的JDBC连接开启自动提交(autocommit)(不建议).

取值 true | false

hibernate.connection.release_mode 指定Hibernate在何时释放JDBC连接. 默认情况下,直到Session被显式关闭或被断开连接时,才会释放JDBC连接. 对于应用程序服务器的JTA数据源, 你应当使用after_statement,这样在每次JDBC调用后,都会主动的释放连接. 对于非JTA的连接, 使用after_transaction在每个事务结束时释放连接是合理的. auto将为JTA和CMT事务策略选择after_statement, 为JDBC事务策略选择after_transaction.

取值 auto (默认) |on_close | after_transaction | after_statement

注意,这些设置仅对通过SessionFactory.openSession得到的Session起作用。对于通过SessionFactory.getCurrentSession得到的Session,所配置的CurrentSessionContext实现控制这些Session的连接释放模式。请参阅第2.5 节“上下文相关的(Contextual)Session”。

hibernate.connection. 将JDBC属性propertyName传递到DriverManager.getConnection()中去.

hibernate.jndi. 将属性propertyName传递到JNDIInitialContextFactory中去.

Hibernate缓存属性

hibernate.cache.provider_class 自定义的CacheProvider的类名.

取值classname.of.CacheProvider

hibernate.cache.use_minimal_puts 以频繁的读操作为代价, 优化二级缓存来最小化写操作.在Hibernate3中,这个设置对的集群缓存非常有用, 对集群缓存的实现而言,默认是开启的.

取值 true|false

hibernate.cache.use_query_cache 允许查询缓存, 个别查询仍然需要被设置为可缓存的.

取值 true|false

hibernate.cache.use_second_level_cache 能用来完全禁止使用二级缓存.对那些在类的映射定义中指定的类,会默认开启二级缓存.

取值 true|false

hibernate.cache.query_cache_factory 自定义实现QueryCache接口的类名, 默认为内建的StandardQueryCache.

取值classname.of.QueryCache

hibernate.cache.region_prefix 二级缓存区域名的前缀.

取值 prefix

hibernate.cache.use_structured_entries 强制Hibernate以更人性化的格式将数据存入二级缓存.

取值 true|false

Hibernate事务属性

hibernate.transaction.factory_class 一个TransactionFactory的类名, 用于HibernateTransaction API (默认为JDBCTransactionFactory).

取值classname.of.TransactionFactory

jta.UserTransaction 一个JNDI名字,被JTATransactionFactory用来从应用服务器获取JTAUserTransaction.

取值jndi/composite/name

hibernate.transaction.manager_lookup_class 一个TransactionManagerLookup的类名 – 当使用JVM级缓存,或在JTA环境中使用hilo生成器的时候需要该类.

取值classname.of.TransactionManagerLookup

hibernate.transaction.flush_before_completion 如果开启, session在事务完成后将被自动清洗(flush)。 现在更好的方法是使用自动session上下文管理。

取值 true | false

hibernate.transaction.auto_close_session 如果开启, session在事务完成后将被自动关闭。 现在更好的方法是使用自动session上下文管理。

取值 true | false

其他属性

hibernate.current_session_context_class 为”当前” Session指定一个(自定义的)策略。

eg. jta | thread| managed | custom.Class

hibernate.query.factory_class 选择HQL解析器的实现.

取值org.hibernate.hql.ast.ASTQueryTranslatorFactory ororg.hibernate.hql.classic.ClassicQueryTranslatorFactory

hibernate.query.substitutions 将Hibernate查询中的符号映射到SQL查询中的符号 (符号可能是函数名或常量名字).

取值hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC

hibernate.hbm2ddl.auto 在SessionFactory创建时,自动检查数据库结构,或者将数据库schema的DDL导出到数据库. 使用 create-drop时,在显式关闭SessionFactory时,将drop掉数据库schema.

取值 validate | update| create | create-drop

hibernate.cglib.use_reflection_optimizer 开启CGLIB来替代运行时反射机制(系统级属性). 反射机制有时在除错时比较有用. 注意即使关闭这个优化, Hibernate还是需要CGLIB. 不能在hibernate.cfg.xml中设置此属性.

取值 true | false

PO.hbm.xml属性详解

1.元素的属性

class-description 指定描述类的javaDoc

field-description 指定描述类的属性javaDoc

interface 如果为true,表明生成接口而非类,默认false

implements 指定类所实现的接口

extends 指定继承的父类名

generated-class 重新指定生成的类名

scope-class 指定类的修饰符,默认public

scope-set 指定set方法的修饰符,默认public

scope-get 指定get方法的修饰符,默认public

scope-field 指定类的属性的修饰符,默认private

use-in-toString 如果为true,表示在toString()方法中包含此属性

gen-property 如果为false,不会在java类中生成此属性,默认true

finder-method 指定find方法名

2.元素属性

name 设定字段名字

length 设定字段长度

not-null 如为true,指名该字段不允许为null,默认false

unique 如为true,指名该字段具有唯一约束,默认false

index 给一个或多个字段建立索引

unique-key 为多个字段设定唯一约束

foreign-key 为外键约束命名,在元素中包含foreign-key属性,在双向关联中,inverse属性为true的一端不能设置foreign-key

sql-type 设定字段sql类型

check 设定sql检查约束

  1. 用于控制insert or update 语句的映射属性

元素的insert属性 如为false,在insert中不包含该字段,默认为true

元素的update属性 如为false,在update中不包含该字段,默认为true

元素的mutable属性 如为false,等价于所有字段的update属性为false,默认为true

元素的dunameic-insert属性 如为true,表明动态生成insert语句,只有不为null,才会包含insert语句中,默认false

元素的dunameic-update属性 如为true,表明动态生成update语句,只有不为null,才会包含insert语句中,默认false

元素的dunameic-insert属性 如为true,表明等价于所有字段动态生成insert语句,只有不为null,才会包含insert语句中 ,默认false

元素的dunameic-update属性 如为true,表明等价于所有字段动态生成update语句,只有不为null,才会包含insert语句中 ,默认false

  1. Hibernate提供的内置标识符生成器

increment 适用于代理主键,自动递增,增1(只能是long,int,short)

identity 适用于代理主键,底层数据库自动增长字段类型(数据库需支持,只能是long,int,short)

(oralce)sequence 适用于代理主键,根据底层数据库的序列来生成标识符(数据库支持序列,只能是long,int,short)

hilo 适用于代理主键,根据high/low算法来生成.Hibernate把特定表的字段作为high值,在默认情况下选用hibernate_unique_key表的next_hi字段

(mysql,mssql)native适用于代理主键,根据数据库自动生成标识符支持能力,来选择identity,sequence,hilo

uuid.hex 适用于代理主键,采用128位UUID(universalunique identification)算法来生成标识.此算法能在网络环境中生成唯一的字符串标识符,

(不建议使用,字符串类型比整形类型的主键占用更多的空间)

assigned 适用于自然主键,由java程序负责生成.

5.

指定描述类的javaDoc

指名类的修饰类型

指定继承类

指定类,类属性的getxxx(),setxxx()方法的修饰符 包括:static,final,abstract,public,protected,private

指定描述类的javaDoc

6.cascade属性

none 在保存更新时,忽略其他关联对象,这是cascade默认属性

save-update 当通过Session的save(),update()以及saveOrUpdate()方法来保存或更新当前对象时,及联保存所有关联的新建的临时对象,并且及联更新所有关联的游离对象

delete 当通过session的delete()方法删除当前对象时,及联删除所有对象

all 包含save-update及delete行为,此外对当前对象执行evict()或lock()操作时,也会对所有关联的持久化对象执行evict()或lock()操作

delete-orphan 删除所有和当前对象解除关联关系的对象

all-delete-orphan 包含all和delete-orphan0b1331709591d260c1c78e86d0c51c18.png

发表评论

表情:
评论列表 (有 0 条评论,343人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Hibernate配置文件

    Hibernate的主配置文件,即hibernate.cfg.xml 主要包括三种配置: 1、数据库信息 2、导入映射配置文件 3、其它配置 配置数据库信息主要有:方言