您的位置:首页 > 其它

NHibernate 2.0.0 Alpha 1 悄悄地发布了

2008-03-31 17:11 274 查看
NHibernate源于非常优秀的基于Java的Hibernate关系型持久化工具。可是从2007年11月26日发布的1.2.1GA版本不是很好的支持VS2008。今天负责NHibernate开发的Ayende Rahien发布了NHibernate 2.0.0 Alpha 1,我们可以从这里下载,相信不久正式版会更好,先下载尝鲜一下。

下面列表列出了一些改进:

新特性

增加了一个类映射到多张表的联接映射元素

表和继承策略

针对PostgreSQL dialect的HQL函数‘current_timestamp’,‘str’和‘locate’

VetoInterceptor - 通过IInterceptor接口取消删除、更新、插入的调用

在HQL查询语句中使用常量

增加NHibernate使用一个鉴别器对每个子类一张表的支持

增加对子查询的分页支持

在自定义的SQL查询里的自动类型发现

增加了 OnPreLoad和OnPostLoad生命周期事件

增加了 ThreadStaticSessionContext

增加了 标记to

增加了 foreign-key="none",虽然父表不具备not-found="ignore"。(这和SQL Server不相干)

增加了 DetachedQuery

ExecuteUpdate支持原生的SQL查询

来自Hibernate的特性:
移植了 Actions, Events和Listeners

移植了 StatelessSession

移植了 CacheMode

移植了 Statistics

移植了 QueryPlan

移植了 ResultSetWrapper

移植了 Structured/Unstructured cache

移植了 SchemaUpdate

移植了 Hibernate.UserTypes

移植了 Hibernate.Mapping

移植了 Hibernate.Type

移植了 EntityKey

移植了 CollectionKey

移植了 TypedValue

移植了 SQLExceptionConverter

移植了 Session Context

移植了 CascadingAction

重大变化:

NHibernate.Expression命名空间更改为NHibernate.Criterion

NHibernate.Property命名空间更改为NHibernate.Properties

没有事务外的AutoFlush -- 数据库事务不是可选的,数据库的所有通信都有一个事务,不管是读还是写数据

将忽略配置节,使用配置节代替(注意它们有不同的XML格式)

配置值不再需要前缀“hibernate.”,如果你以前指定“hibernate.dialect“,现在只要使用".dialect”

接口修改-IItnterceptor更改为匹配Hibernate 3.2的Interceptor

对所有的命名查询在初始化的时候执行验证,任何无效的查询会抛出异常

NHibernate在SQL Server上查询count(*)返回是长整形(long)

SaveOrUpdateCopy返回一个新的实体实例,不会更改原始实体

修改了接口INamingStrategy

NHiberate.Search -Index/Store属性移到了Attributes命名空间

修改了IType、IEntityPersister、IVersionType -- 对此感兴趣的可能只是对NHibernate疯狂热爱的人

需要的时候必须包含括号

修改了接口IBatcher

修复的缺陷:

修复了HQL查询的表达式映射

修复了里面有一个 ;里面有一个 导致的异常

不支持限制大小的SQL dialects不支持多条件分页

修复了MsSql2005 dialect在多个处理器的计算机上有限制的字符串排序不正确的问题

修复了当在另一个子表达式中使用SimpleSubqueryExpression时得到的是NullReferenceException的问题。

修复了当删除一个包含空值的对象时引发的空引用异常

修复了在复杂联接表的重复列名

修复了MultiQuery在所有的查询强制使用参数

修复了当参数包含一个逗号和使用MaxResults时concat函数不能正常工作

修复了在MSSQL 2005 dialect 使用表达式分页不能正常工作

修复了OersustebtEnumType不正确的处理具有零值定义的枚举

修复了当没有使用SetFirstResult()时SetMaxResults()返回至少一行

修复了在SQL Server 2005的GetLimitSring 使用总计排序的缺陷

修复了SessionImpl.EnableFilter当已经启用的时候返回错误的过滤器

修复了Generated Id不能用于MySQL

修复了一对一不能延迟加载

修复了不会生成悲观锁定的FOR UPDATE语句

改进:

Postgre Dialect增加对Guid的支持

查询语句中支持注释

ISession增加了Merge和Persist

SQL Server支持IFF

IdBag现在支持Identity列

多条件(Criteria)现在使用结果转换器

处理key-many-to-one 键和找不到资源

可以在映射中指定抽象类

指南:

选择使用Restrictions而不是Expression类来定义Criteria查询。

子项目:

增加了NHibernate.Validator

增加了NHibernate.Shards

NHibernate.Search更新到和Hibernate Search 3.0相匹配

条件API:

允许检查、遍历、克隆和转换ICriteria以及DetachedCriteria

引入CriteriaTransformer 类

GetCriteriaByPath、GetCriteriaByAlias

增加了DetachedCriteria.For

增加了多条件

Projections现在可以将参数传递到生成的SQL语句。

增加了从Criteria中调用(HQL概念的)Sql函数的支持

增加了ConstantProjection

增加了CastProjection

能够使用IProjection作为ICriterion的参数

代理验证的支持更好:

现在支持internal字段的检查

更新了Castle.DynamicProxy2.dll,更好的支持.NET 2.0 SP1

SQL Lite:

支持多查询和多条件

支持子查询和limits

允许DROP TABLE IF EXISTS语句

PostgreSQL (Npgsql):

启用PostgreSQL的多查询支持

FireBird:

更好的全面支持

批处理:

更改了日志记录使其更清晰的表达所有的命令在单个批处理被发送到数据库。

AbstractBatcher现在使用侦听器,允许用户在准备好之前拦截和修改SQL。

错误处理:

在获取Int32Type中的值异常的更友好错误信息

当使用的子查询中包含一个不存在的属性时的更友好的错误信息

当带一个值类型调用UniqueResult()和查询返回null时抛出更有意义的异常

整体上更好的错误处理

更友好的调试日志

重构:

在框架内部的重要重构使用了泛型集合类代替非泛型的集合性。

对配置系统和hbm文件的解析进行了重要重构。

工厂:

增加了ProxyFactoryFactory

增加了BatchingBatcherFactory
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: