《HarmonyOS:领航者说》技术公开课来啦,大咖分享、实战解码,不容错过 了解详情
写点什么

连贯 NHibernate 有相应的 Wiki 文档了

  • 2009-02-11
  • 本文字数:979 字

    阅读完需:约 3 分钟

InfoQ 之前报道过,我们可以在 NHibernate 中使用 XML 映射,这就是连贯 NHibernate。连贯 NHibernate 使用连贯接口,通过编码的方式代替XML 定义映射。有些社区成员抱怨连贯NHibernate 缺乏相关文档,对此James Gregory 最近做出了回应,他发布了连贯NHibernate 的官方Wiki 文档

Wiki 文档中的包含如下例子:

Wiki 站点把典型的映射解决方案都列举出来了,当中包括 XML 和连贯 NHibernate。下面代码显示的是 XML 部分:

复制代码
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="QuickStart" assembly="QuickStart">
<class name="Cat" table="Cat">
<id name="Id">
<generator class="identity" />
</id>
<property name="Name">
<column name="Name" length="16" not-null="true" />
</property>
<property name="Sex" />
<many-to-one name="Mate" />
<bag name="Kittens">
<key column="mother_id"/>
<one-to-many class="Cat"/>
</bag>
</class>
</hibernate-mapping>

下面代码显示相同映射的连贯 NHibernate 代码:

复制代码
public class CatMap : ClassMap
{
public CatMap()
{
Id(x => x.Id);
Map(x => x.Name)
.WithLengthOf(16)
.Not.Nullable();
Map(x => x.Sex);
References(x => x.Mate);
HasMany(x => x.Kittens);
}
}

文章还提到:

尽管 XML 代码的部分比较优美,但是它可能会导致意想不到的结果。

接着,文中还列举了一些例子:

  • 由于编译器并不对 XML 进行估算,我们可以在映射中对未更新的类的多个属性进行重命名。在这种情况下,直到运行时才会发现解析映射的问题
  • XML 很冗长;NHibernate 逐步减低 XML 的强制元素,但我们仍不能避免 XML 的繁杂性
  • 重复的映射 - 如果我们不断地定义同样的规则,就会发现 NHibernate HBM 映射相当的冗长。例如,确保 string 属性为非空且长度为 1000 的时候,以及确保所有的 int 对象的默认值为 -1 的时候

去年的 8 月份,Oren Eini(也叫 Ayende Rahien ) 指出连贯的 NHibernate 并没有任何价值,因为每个实体必须有一个映射类。然而,从那时起,项目就进行革新,现在就有了自动映射的概念,这正是Ayende 所需要的。自动映射特性使用一套规则来自动映射所有实体,并非每个实体都需要映射类。

查看英文原文: Fluent NHibernate Has a Wiki

2009-02-11 22:021495
用户头像

发布了 87 篇内容, 共 23.5 次阅读, 收获喜欢 1 次。

关注

评论

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

commons-pool2 池化技术探究

vivo互联网技术

Java common-pool2 池化技术

iOS 面试策略之语言工具-Objective-C

iOSer

ios objective-c 程序员

Github瞬间爆火!被各大厂要求直接下架的面试题库也太全了

Java 编程 程序员 架构 面试

【论文分享】Presto: SQL on Everything(二)

小舰

4月日更

德赛西威与华为签署全场景智慧出行生态解决方案合作协议

北京天源迪科亮相2021年企业数字化转型峰会暨山东CIO智库年会

DT极客

一种自适应混合域音频无声水印

行者AI

音频

实至名归!DataPipeline斩获“银行数字化科技创新大奖”

DataPipeline数见科技

Flink在唯品会的实践

Apache Flink

flink

使用开源项目必须保留作者姓名?开源软件不能商用?我们需要先学会分辨开源许可证

郭旭东

开源 开源文化

分布式存储中间件(1):10000字把Redis扒个干净,一发入魂

北游学Java

Java 数据库 redis 分布式

Javac 源码调试教程

学Java关注我

Java 编程 程序员 架构 计算机

直播系统聊天技术(四):百度直播的海量用户实时消息系统架构演进实践

JackJiang

架构设计 即时通讯 IM 直播技术

又有400多个组件支持鸿蒙了!

Geek_283163

华为 鸿蒙

百度商业大规模微服务分布式监控系统——凤睛

百度Geek说

数据库 分布式 微服务 大前端 监控

智慧公安情指勤指挥调度平台搭建,指挥中心平台搭建

Spark地基之RDD

正向成长

spark RDD

Golang 性能分析

escray

学习 极客时间 Go 语言 4月日更

Leveldb解读之二:Read

Jowin

leveldb

聚力区块链 共建数字中国丨“桂链”平台正式发布并启动全面接入“星火·链网”

云计算

移动开发iOS工程师秘籍(全套七层)

程序员 移动开发 ios开发

B站视频下载:如何下载B站视频到电脑上

科技猫

B站 分享 哔哩哔哩 视频处理 b站视频下载

传统行业为什么需要互联网人才

Geek_vidmje

Linux内核源码分析:基于最新的Linux 4.0内核(学习路线总结)

Linux服务器开发

后端 Linux内核 内核源码 内核4.0 底层原理

送给你一份程序员大佬整理的 HTTP 基础知识大图

Java架构师迁哥

干货拉满!阿里公开内部P9级架构师(Java)成长路线图,满满的干货

Java架构追梦

Java 阿里巴巴 架构 面试 成长路线

8K视频指的什么?8K视频处理和工作原理分析

科技猫

技术 分辨率 视频 视频处理 8k

分布式作业系统 Elastic-Job-Lite 源码分析——作业失效转移

比伯

Java 编程 架构 互联网 技术宅

道相同、谋相通、人相守:华为副总裁周跃峰分享如何与用户精英共创数字基建

脑极体

如何用iMazing备份恢复贪婪洞窟

懒得勤快

Java-技术专题-同步可见性的查缺补漏

码界西柚

JVM happens-before CAS 可见性 有序性

连贯NHibernate有相应的Wiki文档了_.NET_Jon Arild Tørresdal_InfoQ精选文章