【NHibernate】配置- sql打印
<property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
<property name="show_sql">true</property>
<property name="adonet.batch_size">0</property>
<mapping assembly="HibernateService"/>
要加上<property name="adonet.batch_size">0</property> 才能正常输出sql
NHibernate: UPDATE Product SET Name = @p0, Category = @p1, Discontinued = @p2 WHERE Id = @p3;@p0 = 'Apple 更新 ' [Type: String (4000)], @p1 = 'Fruits' [Type: String (4000)], @p2 = False [Type: Boolean (0)], @p3 = 1adf041b-9b5c-4dfe-b73d-06b3e076151d [Type: Guid (0)]
adonet.batch_size 指定用ADO.Net的批量更新的数量,默认设置为0(不启用该功能)。
如果是查询 不加 adonet.batch_size 能否输出sql呢?ok没有问题。
NHibernate: SELECT product0_.Id as Id0_0_, product0_.Name as Name0_0_, product0_.Category as Category0_0_, product0_.Discontinued as Disconti4_0_0_ FROM Product product0_ WHERE product0_.Id=@p0;@p0 = 1adf041b-9b5c-4dfe-b73d-06b3e076151d [Type: Guid (0)]
补一个hibernate.cfg.xml:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" >
<session-factory name="HibernateService">
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="connection.connection_string">data source=***,1111;database=**;uid=**;pwd=**;</property>
<property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
<property name="show_sql">true</property>
<property name="adonet.batch_size">0</property> <!--该选项 DQL不需要 DML需要-->
<property name="command_timeout">60</property>
<mapping assembly="HibernateService"/>
</session-factory>
</hibernate-configuration>
NHibernate提供ADO.NET连接配置
|
属性名 |
用途 |
|
connection.provider_class |
实现IConnectionProvider接口的类型。 例如: (如果是NHibernate内部的IConnectionProvider实现类)full.classname.of.ConnectionProvider, (如果是自定义的NHibernate外部的IConnectionProvider实现类 )full.classname.of.ConnectionProvider, assembly。 |
|
connection.driver_class |
如果使用DriverConnectionProvider,实现IDriver接口的类型。 (如果是NHibernate内部的实现的IDriver类型)full.classname.of.Driver (如果是自定义的NHibernate外部的IDriver实现类 )full.classname.of.Driver, assembly。 这个配置通常是不需要配置的,如果设置好了hibernate.dialect一般会自动选好对应的IDriver。 |
|
connection.connection_string |
数据库连接字符串 |
|
connection.connection_string_name |
数据库连接字符串名称(定义在.Net配置文件<connectionStrings>配置节里面的连接字符串名。 |
|
connection.isolation |
ADO.NET事务隔离级别, 查看System.Data.IsolationLevel类来了解各个值的具体意义, 但请注意多数数据库都不支持所有的隔离级别。 例如: Chaos, ReadCommitted, ReadUncommitted, RepeatableRead, Serializable, Unspecified |
|
connection.release_mode |
指定ADO.NET何时释放数据库连接。 例如: auto (默认) | on_close | after_transaction 注意,这些设置仅对通过ISessionFactory.OpenSession得到的ISession起作用。 对于通过ISessionFactory.GetCurrentSession得到的ISession, 所配置的ICurrentSessionContext实现控制这些ISession的连接释放模式。 |
|
command_timeout |
指定NHibernate生成的IDbCommands对象的超时时间。 . |
|
adonet.batch_size |
指定用ADO.Net的批量更新的数量,默认设置为0(不启用该功能)。 |
|
proxyfactory.factory_class |
代理工厂配置。用于指定是哪个中间件提供的延迟加载代理 |
可选的配置属性
有大量属性能用来控制NHibernate在运行期的行为. 它们都是可选的, 并拥有适当的默认值。
|
属性名 |
用途 |
|
dialect |
设置NHibernate的Dialect类名 - 允许NHibernate针对特定的关系数据库生成优化的SQL 可用值: full.classname.of.Dialect, assembly |
|
default_schema |
在生成的SQL中, 将给定的schema/tablespace附加于非全限定名的表名上。 可用值: SCHEMA_NAME |
|
use_outer_join |
允许外连接抓取,已弃用,请使用max_fetch_depth。 可用值: true | false |
|
max_fetch_depth |
为单向关联(一对一, 多对一)的外连接抓取(outer join fetch)树设置最大深度。 值为0意味着将关闭默认的外连接抓取 可用值:建议在0 到3之间取值。 |
|
use_reflection_optimizer |
开启运行时代码动态生成来替代运行时反射机制(系统级属性)。 使用这种方式的话程序在启动会耗费一定的性能,但是在程序运行期性能会有更好的提升。 注意即使关闭这个优化, Hibernate还是需要CGLIB. 你不能在hibernate.cfg.xml中设置此属性。 这个属性不能在hibernate.cfg.xml或者是应用程序配置文件<hibernate-configuration> 配置节中设置。 可用值: true | false |
|
bytecode.provider |
指定字节码provider用于优化NHibernate反射性能。 null代表完全关闭性能优化, lcg用于轻量级的代码动态生成,codedom基于CodeDOM代码动态生成。 可用值: null | lcg | codedom |
|
cache.provider_class |
设置缓存实现类(实现ICacheProvider接口的类) 可用值: classname.of.CacheProvider, assembly |
|
cache.use_minimal_puts |
以频繁的读操作为代价, 优化二级缓存来最小化写操作(对群集缓存有效)。 可用值: true | false |
|
cache.use_query_cache |
允许查询缓存, 个别查询仍然需要被设置为可缓存的. 可用值: true | false |
|
cache.query_cache_factory |
自定义实现IQueryCacheFactory接口的类名, 默认为内建的StandardQueryCacheFactory。 可用值: classname.of.QueryCacheFactory, assembly |
|
cache.region_prefix |
二级缓存区域名的前缀。 可用值: prefix |
|
query.substitutions |
将NHibernate查询中的符号映射到SQL查询中的符号 (符号可能是函数名或常量名字)。 可用值: hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC query.substitutions true=1, false=0 将导致符号true和false在生成的SQL中被翻译成整数常量 |
|
show_sql |
输出所有SQL语句到控制台. 可用值: true | false |
|
hbm2ddl.auto |
在ISessionFactory创建时,自动检查数据库结构,或者将数据库schema的DDL导出到数据库。 使用 create-drop时,在显式关闭ISessionFactory时,将drop掉数据库schema。 可用值: create | create-drop |
|
use_proxy_validator |
是否启用验证接口或者是类是否可以使用代理,默认开启。 (检查实体类的属性或者是方法是否被设置为Virtual) 可用值: true | false |
|
transaction.factory_class |
自定义ITransactionFactory的实现,默认为NHibernate内建的AdoNetTransactionFactory。 可用值: classname.of.TransactionFactory, assembly |
脑补一下:
ISessionFactory (NHibernate.ISessionFactory)
针对单个数据库映射关系经过编译后的内存镜像,是线程安全的(不可变)。 它是生成ISession的工厂,本身要用到IConnectionProvider。 该对象可以在进程或集群的级别上,为那些事务之间可以重用的数据提供可选的二级缓存。
ISession (NHibernate.ISession)
表示应用程序与持久储存层之间交互操作的一个单线程对象,此对象生存期很短。 其隐藏了ADO.NET连接,也是 ITransaction的工厂。 其会持有一个针对持久化对象的必选(第一级)缓存, 在遍历对象图或者根据持久化标识查找对象时会用到。
持久的对象及其集合(Persistent Objects and Collections)
带有持久化状态的、具有业务功能的单线程对象,此对象生存期很短。 这些对象可能是普通的POCOs, 唯一特殊的是他们正与(仅仅一个)ISession相关联。 一旦这个ISession被关闭, 这些对象就会脱离持久化状态,这样就可被应用程序的任何层自由使用。 (例如,用作跟表示层打交道的数据传输对象。)
瞬态(transient)和脱管(detached)的对象及其集合
那些目前没有与ISession关联的持久化类实例。 他们可能是在被应用程序实例化后, 尚未进行持久化的对象。 也可能是因为实例化他们的ISession已经被关闭而脱离持久化的对象。
ITransaction (NHibernate.ITransaction)
(可选的)应用程序用来指定原子操作单元范围的对象,它是单线程的,生命周期很短。 它通过抽象将应用从底层具体的ADO.NET事务隔离开。 某些情况下,一个ISession之内可能包含多个ITransaction对象。
IConnectionProvider (NHibernate.Connection.IConnectionProvider)
(可选的)生成ADO.NET连接以及Command对象的工厂。 它通过抽象将应用从底层的IDbConnection或IDbCommand隔离开。 仅供开发者扩展/实现用,并不暴露给应用程序使用。
IDriver (NHibernate.Driver.IDriver)
(可选的)一个封装了不同ADO.NET providers之间的差异(利用参数命名转换等ADO.NET支持的特性)的接口。
ITransactionFactory (NHibernate.Transaction.ITransactionFactory)
(可选的)生成ITransaction对象实例的工厂。 仅供开发者扩展/实现用,并不暴露给应用程序使用。
【NHibernate】配置- sql打印的更多相关文章
- springboot+mybatis 配置sql打印日志
第一种: 配置类型 # 配置slq打印日志 logging.level.com.lawt.repository.mapper=debug重点: #其中 com.lawt.repository.ma ...
- springboot2、mybatis-plus3 一行配置实现打印sql最终填充的参数值
在application.yml中添加: # 配置slq打印日志 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.st ...
- NHibernate配置
因为NHibernate被设计为可以在许多不同环境下工作,所以它有很多配置参数.幸运的是,大部分都已经有默认值了. NHibernate.Test.dll包含了一个示例的配置文件app.config, ...
- NHibernate系列文章五:NHibernate配置
摘要 NHibernate有多种配置方法,代码,xml文件,以及Fluent NHibernate.这里只介绍最常用的两种NHibernate配置方法:通过代码和通过配置文件. 1. 通过代码配置 通 ...
- 配置SQL Server去使用 Windows的 Large-Page/Huge-Page allocations
配置SQL Server去使用 Windows的 Large-Page/Huge-Page allocations 目录表->页表->物理内存页 看这篇文章之前可以先看一下下面这篇文章 ...
- MyBatis 配置sql语句输出
版权声明:本文为博主原创文章,未经博主允许不得转载. 此处使用log4j,加入jar包,然后在src路径下加入:log4j.properties文件 填入以下配置就可以打印了 log4j.rootLo ...
- springboot整合mybatis将sql打印到日志(转)
在前台请求数据的时候,sql语句一直都是打印到控制台的,有一个想法就是想让它打印到日志里,该如何做呢? 见下面的mybatis配置文件: <?xml version="1.0" ...
- springboot整合mybatis将sql打印到日志
在前台请求数据的时候,sql语句一直都是打印到控制台的,有一个想法就是想让它打印到日志里,该如何做呢? 见下面的mybatis配置文件: <?xml version="1.0" ...
- 通俗易懂的Nhibernate教程(2) ---- 配置之Nhibernate配置
在上一个教程中,我们讲了Nhibernate的基本使用!So,让我们回顾下Nhibernate使用基本的步骤吧 1.NHibernate配置 ----- 这一步我们告诉了Nhibernate:数据库 ...
随机推荐
- 用继承实现XYPoint和Circle两个类
#import <Foundation/Foundation.h> @protocol show @required -(void)printOn; @end @interface XYP ...
- java调用.net asmx服务
有时候,在java下开发会调用一下.net下写的服务,看网上有各种方法,但总是不成功,总结下自己测试过能调用成功的方式: 1. 原始方式http-soap public static String p ...
- 解析$.grep()源码及透过$.grep()看(两次取反)!!的作用
先上jquery源码: grep: function( elems, callback, inv ) { var retVal, ret = [], i = 0, length = elems.len ...
- hihocoder 1043 完全背包
#1043 : 完全背包 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 且说之前的故事里,小Hi和小Ho费劲心思终于拿到了茫茫多的奖券!而现在,终于到了小Ho领取奖励的 ...
- Quartz Scheduler(2.2.1) - Integration with Spring
1. maven 依赖: <properties> <spring.version>3.2.3.RELEASE</spring.version> <quart ...
- Smarty控制foreach输出数量
最近在搞ecshop,ecshop用的是smarty.在首页中想要修改展示的商品数量,但是用的是foreach,让我无从下手,在网上找了好久终于找到解决方案. <!--{foreach name ...
- C++描述基础算法之直接插入排序
由于此博文并不难,所以并不需要搬出C++特性的这些大山,所以就使用简单的C++代码描述了.^_^ 直接插入排序是一种简单的插入排序法,所以适用于少量数据的排序,直接插入排序是比较稳定的一种排序算法. ...
- 你早该这么玩Excel 读书笔记
1. Excel用来分析数据,至少要有一份原始数据和对于的分类汇总数据,这两种数据在一项任务中,应该是存放在同一个Excel文档中的,在书籍中,把他们叫做源数据表和分类汇总表.用户输入源数据表,根据相 ...
- java web中cookie的永久创建与撤销
一.首先是创建cookie 当在数据库中查找知道所输入的用户名和密码正确之后,就开始创建: String cb=request.getParameter("cb");//cb就是登 ...
- browserify总结
一.browserify 简介 browserify is a tool for compiling node-flavored commonjs modules for the browser. Y ...