写点什么

连贯 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:021291
用户头像

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

关注

评论

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

面试必备常见存储引擎与锁的分类,请查收

阿Q说代码

MySQL innodb 共享锁 意向锁 8月日更

分析微信朋友圈的高性能复杂度

Rabbit

架构实战营

Golang:定时器的终止与重置

Regan Yue

定时器 Go 语言 8月日更

AI巨头们建造的“新世界”,进展如何?

脑极体

架构师实战营作业[模块一]

看,有只猪

搜索引擎渐行渐远,未来路在何方

石头IT视角

微信的业务架构图

Rabbit

架构实战营

HTTP协议之:HTTP/1.1和HTTP/2

程序那些事

HTTP 程序那些事 HTTP协议 http2

架构训练营 模块一作业

初一

微服务容错组件Hystrix设计分析

慕枫技术笔记

分布式 后端 熔断

模块一作业

紫云

架构实战营

餐饮店加盟该如何推广?

获客I3O6O643Z97

抖音、快手获客系统

我在组内的Nacos分享

捉虫大师

微服务 dubbo nacos 服务发现

女朋友问我 LB 是谁?

程序员鱼皮

Java 负载均衡 架构 后端 技术选型

架构训练营模块一作业

guangbao

架构实战营模块六作业

老猎人

架构实战营

模块一作业

potti

架构实战营

OpenJDK源码下载

4ye

源码 后端 JVM 8月日更

从源码分析创建线程池的4种方式

华为云开发者联盟

Java 工具 高并发 线程池 Executors

Linux之nohup命令

入门小站

Linux

初识html,一文搞懂HTMl骨架标签都有哪些含义及浏览器内核

你好bk

html html5 大前端 浏览器 html/css

docker入门:极简方式发布springboot

小鲍侃java

8月日更

🚀【Guava技术指南】「RateLimiter类」服务请求流控实现方案

洛神灬殇

Java ratelimiter Guava 8月日更

作业

Li. Mr

极客时间【架构实战营】第二期 模块一作业

Geek_91606e

架构实战营

[架构实战营]模块一

Amy

架构实战营 业务架构图

graphql中的'子查询'

杜艮魁

开源 后端 graphql

在线JSON转XML工具

入门小站

工具

百度地图开发-实现离线地图功能 05

Andy阿辉

android 百度地图 Android 小菜鸟 Android端 8月日更

学习心得-架构训练营-第一课

Fm

公司新来了一个质量工程师,说团队要保证 0 error,0 warning

华为云开发者联盟

DevOps 程序 华为云DevCloud 静态代码检查 质量工程师

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