惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Simon Willison's Weblog
Simon Willison's Weblog
Help Net Security
Help Net Security
P
Privacy International News Feed
T
Threat Research - Cisco Blogs
C
Cisco Blogs
C
CERT Recently Published Vulnerability Notes
NISL@THU
NISL@THU
L
LINUX DO - 热门话题
Security Latest
Security Latest
A
Arctic Wolf
G
GRAHAM CLULEY
月光博客
月光博客
S
Securelist
D
Docker
J
Java Code Geeks
T
Troy Hunt's Blog
T
Tenable Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
SecWiki News
SecWiki News
S
Security @ Cisco Blogs
量子位
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
L
LINUX DO - 最新话题
Recent Commits to openclaw:main
Recent Commits to openclaw:main
aimingoo的专栏
aimingoo的专栏
博客园 - 【当耐特】
H
Heimdal Security Blog
The Hacker News
The Hacker News
博客园 - 三生石上(FineUI控件)
Application and Cybersecurity Blog
Application and Cybersecurity Blog
N
Netflix TechBlog - Medium
Vercel News
Vercel News
Forbes - Security
Forbes - Security
B
Blog RSS Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
IT之家
IT之家
B
Blog
MongoDB | Blog
MongoDB | Blog
博客园 - 聂微东
Google DeepMind News
Google DeepMind News
S
Secure Thoughts
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Check Point Blog
云风的 BLOG
云风的 BLOG
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
The Blog of Author Tim Ferriss
L
Lohrmann on Cybersecurity
F
Full Disclosure
D
Darknet – Hacking Tools, Hacker News & Cyber Security
P
Proofpoint News Feed

博客园 - lae

[转]程序员应知: 海量数据如何分析 [转]Web开发者必备的12款超赞jQuery插件 NOSql数据库特性对比 微软回答“关于数据的10个问题” SubSonic 3.0新特性 System.Data.OracleClient调用带blob等大字段类型参数的存储过程 SubSonic入门(下) SubSonic入门(上) SubSonic的controller类的FetchByID()错误解决办法 - lae - 博客园 ASP.NET中文版开发建议 - lae - 博客园 spl工作在remoting方式下的问题总结 - lae - 博客园 [转载]世界杯期间制定给女友或老婆的十二条准则 - lae - 博客园 sql server 2000关于日期的查询 - lae C# 2.0 杂项技术,以及C#语言的未来发展(选择自 shoutor 的 Blog ) C# 2.0 泛型编程(选择自 shoutor 的 Blog ) C# 2.0 匿名方法、迭代器(选择自 shoutor 的 Blog ) C# 2.0 局部类型、空属类型、静态类(选择自 shoutor 的 Blog) 关于在vs.net中的.htm里面添加连接,就会出现下载.ASPX文件的提示? Microsoft Enterprise Library June 2005--Data Access Application Block访问Oracle数据库(1)
NHibernate3新特性初尝 - lae - 博客园
lae · 2010-11-12 · via 博客园 - lae

配置文件如下  

代码

<?xml version="1.0"?>
<configuration>
    
<configSections>
        
<section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler,NHibernate"/>
        
<section name="syscache" type="NHibernate.Caches.SysCache.SysCacheSectionHandler,NHibernate.Caches.SysCache" />
    
</configSections>
    
<connectionStrings>
        
<add name="db" connectionString="Server=.;Database=NHTest;Trusted_Connection=SSPI"/>
        
<add name="nhtest" connectionString="Data Source=orcl; Persist Security Info=True;Integrated Security=False;User ID=nhtest;Password=nhtest;"/>
    
</connectionStrings><!--Oracle-->
    
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
        
<session-factory>
            
<property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory,NHibernate.ByteCode.Castle</property>
            
<property name="dialect">NHibernate.Dialect.Oracle10gDialect,NHibernate</property>
            
<property name="connection.driver_class">NHibernate.Driver.OracleClientDriver,NHibernate</property>
            
<property name="connection.connection_string_name">nhtest</property>
            
<property name="adonet.batch_size">100</property>
            
<property name="show_sql">true</property>
            
<property name="hbm2ddl.auto">update</property><property name="cache.provider_class">NHibernate.Caches.SysCache.SysCacheProvider,NHibernate.Caches.SysCache</property>
            
<!--<property name="cache.use_second_level_cache">true</property>
            
<property name="cache.use_query_cache">true</property>--><!--<class-cache class="Test.Nh3.Domain, Test.Nh3" region="hourly" usage="read-only"/>--></session-factory>
    
</hibernate-configuration>
    
<syscache>
        
<cache region="hourly" expiration="60" priority="3" />
    
</syscache><runtime>
        
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            
<dependentAssembly>
                
<assemblyIdentity name="NHibernate" publicKeyToken="AA95F207798DFDB4" culture="neutral"/>
                
<bindingRedirect oldVersion="0.0.0.0-3.0.0.2002" newVersion="3.0.0.2002"/>
            
</dependentAssembly>
        
</assemblyBinding>
    
</runtime>
</configuration>

 初始化Mapper

代码

 public HbmMapping GetMapping()
        {
            
//初始化ObjectRelationalMapper类
            var orm = new ObjectRelationalMapper();//TablePerClass:每个类一张表映射策略
            
//TablePerClassHierarchy:每个类分层结构一张表映射策略
            
//TablePerConcreteClass:每个具体类一张表映射策略
            orm.TablePerClass<Domain>();
            
//orm.Patterns.Poids.Add(new GuidCombGeneratorDef());
            
//在这里可以调用ObjectRelationalMapper类一些方法配置Domain语义
            
//使用orm参数初始化Mapper类
            var mapper = new Mapper(orm);
            
//在这里可以调用Mapper类一些方法配置Domain的Mapping
            
//调用Mapper类的CompileMappingFor方法编译生成HbmMapping对象
            return mapper.CompileMappingFor(new[] { typeof(Domain) });
           
        }

初始化config

代码

  var nhConfig = new Configuration().Configure();
            nhConfig.AddDeserializedMapping(GetMapping(), 
null);//配置缓存
            nhConfig.SetProperty(NHibernate.Cfg.Environment.UseSecondLevelCache, "true")
                .SetProperty(NHibernate.Cfg.Environment.UseQueryCache, 
"true")
                .Cache(c 
=> c.Provider<SysCacheProvider>())
                .EntityCache
<Domain>(c =>
                {
                    c.Strategy 
= EntityCacheUsage.ReadWrite;
                    c.RegionName 
= "hourly";
                });
//配置数据库架构元数据
            
//SchemaMetadataUpdater.QuoteTableAndColumns(nhConfig);
            
//创建数据库架构
            
//new SchemaExport(nhConfig).Create(false, true);

            var factory 
= nhConfig.BuildSessionFactory();using (var s = factory.OpenSession())
            {
                
using (var tx = s.BeginTransaction())
                {
                    var domain 
= new Domain
                    {
                        Name 
= "我的测试" + DateTime.Now.ToString(),
                        Address 
= "中国",
                        Picture
=GetPic()
                    };
          
                    s.Save(domain);
                    tx.Commit();
                }
            }

    尽管配置了缓存,性能问题依然出现在picture保存上面,竟然需要20多秒,期待有人能研究出这个解决办法。

 -------------------------------------------------------------

 构造领域模型时需要使用如下代码,等同于在*.hbm.xml文件将实体列映射的类型显式声明

 var mapper = new Mapper(orm);
            mapper.Class<Domain>(dm =>
            {
                dm.Property(x => x.Picture,
                            m => m.Type(NHibernate.NHibernateUtil.BinaryBlob));
            });