写点什么

NHibernate 2.0 带来了很多新特性

  • 2008-04-15
  • 本文字数:1374 字

    阅读完需:约 5 分钟

NHibernate 2.0 Alpha 于本周发布了。当前的 2.0 版本是针对 Hibernate 3.2.6 的特性集跨出的第一步,很多类都已经完全重写而且添加了很多特性。 InfoQ 有幸采访了项目带头人 Karl Chu,以及 Ayende 和 Fabio Maulo 等人,谈论到了这个 2.0 版本的一些细节。当问到在 2.0 中最重要的改变是什么时,Karl 回答道:

从 1.2 到 2.0 有很多改变。如果只挑选一两个的话,我想新的继承映射策略以及新的事件底层机制是最重要的。它们为 NHibernate 带来了巨大的灵活性。

Ayende 在他的博客上发布了一个关于所有改变和新特性的列表。他赞同 Karl 的观点,认为新的事件(Events)、动作(Actions)和监听器(Listeners)特性以及“对于 Criteria API 的主要增强”,特别 Multi Criteria 的加入是很重要的,它们允许“在一次 DB 访问往返中,能对 DB 执行多个查询,并实现了批量查询这样有意思的使用场景”。

事件(Events)、动作(Actions)和监听器(Listeners)特性为“介入 NHibernate 内部完成操作”提供了途径,Ayende 说道。“这在很多场景中是很有用的,尤其当你想更好的控制 NHibernate 的运作的时候”。据 Fabio Maulo 所说,“重写 NH 默认的事件所受到的限制只是你自己的想象力”。NHibernate 展现了很多使用事件特性的方式,例如 NHibernate.Validator 使用了事件 / 监听器,未来的 NHibernate.Search 和 NHibernate.Shards 用到了事件,以及 NHibernate AddIns 提供了一些示例来说明如何使用事件把 EnterpriseLibrary Validation-Application-Block 和 NHibernate 进行合并。

对于“Alpha”状态,Ayende 解释到:

我们虽然称之为 alpha,但我们很多人已经把其用到了生成环境里了,所以我们其实已经确信它已经比较稳定了。它依旧处于 alpha 的原因是,在(上一个版本发布的)近 9 个月以来,我们对其做了大量的更改,所以我们想在正式发布它之前能得到更多真实世界使用的反馈。自从上一个版本发布以来,被改变的代码行数最新估计大约是 100000 行。

尽管很多特性被加入其中,但“很多改变都是针对核心的”,Ayende 说道,“需要把 Hibernate 3.2 的特性移植过来,并对 NHibernate 进行大量的改变以符合 Hibernate 3.2 现存的代码基础”。Fabio 提到“NHibernate 2.0.0 只是针对 Hibernate 3.2.6 移植的第一步”且 2.1.0 版本将最终消除它们的差异。

对于 LINQ 的支持,Karl Chu 说道:“我个人相信 NHibernate.Linq 的成功将在 NHibernate 未来的成功中扮演一个重要的角色”。Ayende 正在精心实现 Linq for NHibernate(NHibernate.Linq)子项目:

Linq for NHibernate 正在开发当中,目前我们已经完成了最基本的功能,可以配合 NHibernate 2.0 Alpha 1 使用。
我们正在着手开发一些高级功能。一旦完成,我们将把 Linq for NHibernate 合并到 NHibernate 项目中(现在可能作为一个 Contrib 项目存在),并和 NHibernate 一起发布。
注意 NHibernate 依旧和.NET 2.0 完全兼容,Linq for NHibernate 只是一个插件而已。

NHibernate 2.x 的线路图“是将实现 Hibernate 3.2 的所有特性;我们离这个目标不会太远”,Karl Chu 这样宣称。

Juli Lerman 写文章谈论了 NHibernate 2.0 Alpha ,并指出它相对于实体框架(Entity Framework)的关系和位置是“EF 有很长的路还要走,所以在此期间 NHibernate 将会越来越强大”。

查看英文原文: NHibernate 2.0 Offers Many New Features

2008-04-15 02:551740
用户头像

发布了 254 篇内容, 共 57.8 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

Go-Excelize API源码阅读(四)——Save()

Regan Yue

Go 开源 源码刨析 8月日更 8月月更

开源一夏 | 基于 Serverless一键体验FastAPI

六月的雨在InfoQ

阿里云 开源 Serverless FC 8月月更

mysql进阶(二十九)常用函数汇总

No Silver Bullet

MySQL mysql常用函数 8月月更

企业“数字化转型”成功的2个必备条件!

优秀

数字化转型

如何让您的wiki内容更高级?

Geek_da0866

什么是Shell?从小白到入门你只差一个它

Albert Edison

Linux centos 运维 shell脚本编程 8月月更

基于ECS实现一分钟自动化部署【华为云至简致远】

科技云未来

自动化部署

用完华为云会议解决方案,我直接卸载了之前的会议软件【华为云至简致远】

科技云未来

云会议产品

QCon 回顾 | Data Fabric:逻辑统一、物理分散

网易数帆

大数据 数据湖 降本增效 Data Fabric

以数治企,韧性成长,2022 年中国 CIO 数字峰会成功举行

金蝶云·苍穹

Grid 布局介绍

CRMEB

2022纯手工打造1700道Java高级工程师面试宝典(含面试题解析)

Java工程师

Java 面试 八股文

它们不一样!透析【观察者模式】和【发布订阅模式】

掘金安东尼

前端 设计模式 8月月更

LeaRun模型驱动开发框架 重塑企业生产力

力软低代码开发平台

阿里云数据库PolarDB开源人才培养计划发布!万元好礼等你来拿!

阿里云数据库开源

数据库 阿里云 开源 认证 polarDB

如何用精益敏捷组合管理,提升研发效能?|ONES 研发管理大师课

万事ONES

Netty入门 -- 什么是Netty?

Bug终结者

Netty 8月月更

APICloud AVM 封装日期和时间选择组件

YonBuilder低代码开发平台

安卓 低代码开发 多端开发

开源一夏 | RuntimeException 子类

六月的雨在InfoQ

开源 8月月更

深度解读 | 关于SBOM最基础元素,你需要知道的(Part I)

安势信息

开源 漏洞 SCA SBOM 最基础元素

Java泛型的继承场景

Geek_163f36

国内部分手机游戏开始显示用户IP属地

郑州埃文科技

游戏 手游 IP归属地

基于华为云ModelArts的水表读数识别开发实践【华为云至简致远】

科技云未来

水表读数识别项目

Taro小程序跨端开发入门实战

京东科技开发者

小程序 taro 开发 移动端

调研阶段复盘

Geek_XOXO

复盘

急了,Mysql索引中最不容易记的三个知识点通透了

知识浅谈

8月月更

永续合约交易所系统开发逻辑详情

开发微hkkf5566

运筹帷幄决胜千里,Python3.10原生协程asyncio工业级真实协程异步消费任务调度实践

刘悦的技术博客

Python 协程 Async Python3 协程原理

Qt下异步使用C++调用Python文件

Geek_163f36

基于华为云弹性云服务器ECS(搭载openEuler的鲲鹏通用计算增强型)完成鲲鹏代码迁移工具实践【华为云至简致远】

科技云未来

鲲鹏服务器 弹性云服务器ESC

Linux下Docker安装部署以及云原生的理解

Geek_acae888666

云原生 Docker 镜像

NHibernate 2.0带来了很多新特性_.NET_Hartmut Wilms_InfoQ精选文章