领导力大挑战
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
该内容已经被标记书签!
标记书签错误,请重试!
作者 李永京 发布于 2010年12月14日
2010年12月4号Fabio Maulo发布了NHibernate 3.0.0.GA正式版本,基于.Net3.5和.NET 3.5 Client Profile平台,主要改变是增加Loquacious配置和基于Lambda表达式查询和Linq查询。你可以到这里下载NHibernate 3.0.0.GA。接着Fabio Maulo陆续发了NHibernate.Caches.3.0.0.GA、NHibernate.Validator.1.3.0.Alpha1、ConfORM 1.0.1.2。
下面是NHibernate 3版本新特性:
在Configuration部分新增两种Loquacious-Configuration方式:流配置(fluent-configuration)和lambda表达式配置(lambda-configuration)。
fluent-configuration顾名思义,使用Fluent API配置SessionFactory属性,提供强类型支持、编译期错误检查等。你可以通过SessionFactory fluent配置了解详细信息。例如使用流配置方式最小配置NHibernate:
var configure = new Configuration();
configure.SessionFactory()
.Named("Demo")
.Proxy.Through<ProxyFactoryFactory>()
.Integrate
.Using<MsSql2008Dialect>()
.Connected
.Using("ConnectionString");
lambda-configuration是利用C#3.0扩展方法(Extension Methods)配置SessionFactory属性。你可以通过Configuration篇之SessionFactory lambda配置和Cache lambda-configuration配置了解详情。例如使用lambda表达式方式最小配置NHibernate:
var configure = new Configuration();
configure.SessionFactoryName("Demo");
configure.Proxy(p => p.ProxyFactoryFactory<ProxyFactoryFactory>());
configure.DataBaseIntegration(db =>
{
db.Dialect<MsSql2008Dialect>();
db.Driver<SqlClientDriver>();
db.ConnectionString = ConnectionString;
});
新增WcfOperationSessionContext类提供对WCF环境的支持,我们直接配置"current_session_context_class"为"wcf_operation"在WCF环境中应用NHibernate。
对于Mapping部分,Fabio Maulo完全重构了NHibernate.Cfg.MappingSchema代码部分,提高了性能。同时为NHibernate专门设计了一个配置ORM工具——ConfORM:解析Domain结构,按照模式适配器和自定义配置生成HbmMapping类,避免NHibernate通过读取XML映射文件反序列化等方式生成HbmMapping类的过程。不过ConfORM不是NHibernate的一部分,需要另外单独下载。李永京在自己的博客中介绍了这个工具,可以参考ConfORM概览、原理、OneToOne语义、ManyToMany语义、Component语义。我们可以这样使用:
var orm = new ObjectRelationalMapper();
orm.TablePerClass<Domain>();
var mapper = new Mapper(orm);
var hbmMapping= mapper.CompileMappingFor(new[] { typeof(Domain) });
在Configuration类中新增了AddDeserializedMapping(HbmMapping mappingDocument, string documentFileName)方法,可以直接解析HbmMapping,这样选择不使用xml文件而是ConfORM。例如上面使用ConfORM生成的hbmMapping我们加到Configuration中:
var conf=new Configuration(); //... conf.AddDeserializedMapping(hbmMapping, "Domain");
在NHibernate 3.0.0版本中,Query方式新增了Linq支持和强类型查询API(QueryOver)两种查询方式。
QueryOver是Lambda表达式方式的条件(Criteria)查询,可读性强且支持property-renaming特性。可以参考QueryOver in NH 3.0。例如下面查询Name为李永京、按照Age降序的Person集合:
var query = s.QueryOver<Person>() .Where(p => p.Name == "李永京") .OrderBy(p => p.Age).Asc .List();
Linq基于HQL AST分析器的Linq Provider实现,由Steve Strong贡献者开发的,底层使用第三方Re-Linq开源框架。不过NHibernate3.0.0版本提供的Linq查询还处于Bate阶段,Fabio Maulo准备发布3.1版本修复Linq查询BUG。可以参考:NHibernate.Linq标准查询、增强查询、自定义扩展。我们使用ISession接口的Query<T>()扩展方法创建一个NHibernate.Linq查询。
var query = session.Query<Person>().Where(o => o.Name == "李永京").ToList();
还有其他一些新特性:
如果从NHibernate2.1.2版本升级到NHibernate3.0.0版本,需要注意下面改变:
最近一年,网络上出现了一些优秀的NHibernate工具:
其中HQL Language Service for Visual Studio是一款开源工具,其他都是商业版本。
据我了解的情况来看,将来的版本发布预计一两个月后会发布3.1版本,然后就升级至.Net4平台开发NHibernate 4版本,主要就是逐步改写内部代码去掉Iesi.Collections.dll,使用.Net4提供的ISet集合和添加一些新功能,比如Duck Typing(鸭子类型)等。另外,NHibernate源码将迁移到CodePlex网站,使用Hg版本控制。
感谢李永伦对本文的审校。
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
论道WP第三篇专栏,以应用程序栏的使用为中心,包括了软键盘带来的问题、应用程序栏介绍、如何绑定应用程序栏的属性等几个方面的具体话题,为开发者顺利使用应用程序栏开发提供了具体指导。
在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中对于锁的性能优化,以及锁的存储结构及升级过程。
本次分享将首先介绍现代富文本编辑器的组成和实现,然后结合UEditor的开发过程,与参会者分享UEditor在设计和实现的过程中,所涉及到的核心功能的细节实现。
本次演讲视频录制于百度技术沙龙。
我们所开发的应用程序大多都需要提供一个图形用户界面(GUI)。关于GUI应用的架构设计,已经有了Form & Control、MVC,、MVP、 Passive View等多种模式。模式可以帮助我们建立优雅的架构,但前提是弄清楚模式的应用场景。弄清楚GUI应用面临的设计上的问题,有助于我们正确的挑选设计方案。
MongoDB是一种非常易用的NoSQL方案,Brian C. Dilley在这篇文章里介绍了MongoDB的优劣势,并介绍了MJORM项目。MJORM用于MongoDB,是一个没有注解的Java ORM库。
随着网络基础设施的逐步成熟,从RPC进化到Web Service,并在业界开始普遍推行SOA,再到后来的RESTful平台以及云计算中的PaaS与SaaS概念的推广,分布式架构在企业应用中开始呈现出不同的风貌,然而殊途同归,这些分布式架构的目标仍然是希望回到建造巴别塔的时代,系统之间的交流不再为不同语言与平台的隔阂而产生障碍。
没有回复
关注此讨论 回复