最近在做.NET平台上C#+SPRING.NET+Nhibernate的开发,之前一直在做.NET+SQL SERVER2005的开发,这里对比两者的差异,发表一些观点
不管我们用的是hibernate还是nhibernate,在从数据库返回了数据之后,我们总是需要自己去构建模型层。不可否认,自己构建模型层的结构,确实更大程度上的把开发的主动权控制在了我们程序员的手中,但是由此带来的不便也是显而易见的。如果我们使用ADO.NET,那么我们在处理返回的dataset的时候,其已经对里面的datatable构建好了。省去了我们对模型层字段的设置和配置,我们只需要知道数据库返回的是什么字段,在做数据绑定的时候,对应这个字段就行了。对字段的类型所关心的很少,我们有更多的时间来关心业务上的问题。
但是,当我们用Nhibernate的时候,模型层需要我们自己去构建domain和dto,这个本身就花费了我们大部分的时间。而且我从网上查了一些资料,其实nhibernate的实际效率并不比dataset要高哪里去。如果说仅仅是内存上的多占用的那部分,我相信这点内存我们还是支付的起的。但是,hibernate思维方式带给我们的麻烦事情还远没有结束。每当存储过程改变的时候,也就是从数据库返回的数据集的字段有所改变的时候,我们这个时候需要做的不仅仅是需要改变页面表现层的字段名,而且还要动domain或是dto的字段设置,尤其是字段类型。这些都是相当繁琐,而且增加了程序员犯错的机会,降低了开发的速度。
不可否认,MS把这些东西都给我们封装的太完美了,而完美如果非要说“挣脱MS的枷锁,做自己开发的主人”这种话,什么都自己去做的话,也是会付出很大的代价的。别人有好的东西,我们还是应该承认。
抛砖引玉。
分享到:
相关推荐
在本压缩包中,我们关注的是一个基于Java的实例,它展示了如何在Java环境中使用ADO.NET来处理数据。虽然ADO.NET通常与微软的.NET Framework关联,但通过JDBC(Java Database Connectivity)桥接,Java开发者也可以...
在Java中,没有直接对应的类可以完全等同于ADO.NET的DataTable,但我们可以使用Java的数据结构和API来实现类似的功能。下面将详细介绍如何在Java中构建一个类似的数据表对象。 1. **Java集合框架**: Java提供了...
综上所述,虽然Java没有直接的ADO.NET等价物,但通过JDBC、PreparedStatement、连接池和ORM框架,开发者可以在Java环境中实现高效的数据操作。理解这些概念和工具对于构建高性能的Java数据库应用至关重要。
虽然Java没有直接等同于ADO.NET的库,但开发者可以结合JDBC和第三方库,例如使用iBatis或Hibernate的动态SQL功能,来实现类似的数据访问模式。此外,Apache的JNDI(Java Naming and Directory Interface)可以用来...
在使用IoC容器来配置应用程序时,我们既可以用传统的ADO.NET来访问数据库,也可以使用Spring.NET的Hibernate集成代码或ADO.NET抽象层来访问数据库。Spring.NET是非侵入式的,代码对框架本身不会产生任何依赖(或者只...
在使用IoC容器来配置应用程序时,我们既可以用传统的ADO.NET来访问数据库,也可以使用Spring.NET的Hibernate集成代码或ADO.NET抽象层来访问数据库。Spring.NET是非侵入式的,代码对框架本身不会产生任何依赖。
在实际项目中,开发者可能还会涉及事务管理、缓存策略、性能优化等方面,例如使用NHibernate的FlushMode、第二级缓存,或者结合ADO.NET的TransactionScope来处理事务。另外,为了提高用户体验,可能会集成AJAX技术,...
Hibernate是一个目前应用的最广泛的开放源代码的对象关系映射框架,它对Java的JDBC(类似于ADO.Net)进行了非常轻量级的对象封装,使得程序员可以随心所欲的使用对象编程思维来操纵数据库,目前在国内Java开发界已经...
在ASP.NET环境中,C#语言通常用于编写业务逻辑和数据访问代码,ORM框架则提供了便利的接口,让开发者可以避免直接操作ADO.NET的数据集或数据读者。 该框架的一个亮点是支持将DBDataReader(数据库数据读取器)直接...
LINQ:Language Integrated Query 语言集成查询,其本质是对ADO.NET结果集通过反射连同泛型特性转换成对象集,实现OR模型的转换(类似JAVA中Hibernate框架,.NET中的NHibernate),它完全是基于.NET 2.0 的框架。...
ADO.NET是.NET Framework中用于数据库访问的技术,它提供了一组接口和类库,使得开发者可以高效地与各种数据库系统交互。ADO.NET的核心组件包括DataSet、DataTable、DataAdapter等,它们允许离线数据操作和数据源...
可能使用ORM(对象关系映射)工具如Hibernate或SQLAlchemy来简化数据库操作。 5. **菜单管理** 系统需要有创建、编辑和删除菜品的功能,包括菜品的名称、价格、描述、图片等信息。这涉及到数据库操作和前端界面的...
- **数据库访问**:Spring.NET支持多种数据库访问方式,包括传统的ADO.NET、Spring.NET的Hibernate集成代码和ADO.NET抽象层。 - **非侵入性**:框架设计为非侵入式,即应用程序的代码不需要依赖于框架本身,仅在必要...
Hibernate是一个目前应用的最广泛的开放源代码的对象关系映射框架,它对Java的JDBC(类似于ADO.Net)进行了非常轻量级的对象封装,使得程序员可以随心所欲的使用对象编程思维来操纵数据库,目前在国内Java开发界已经...
2. WCF ADO.NET:WCF是微软提供的一个全面的服务通信框架,用于构建SOA(面向服务的架构)应用,而ADO.NET是.NET框架中用于数据库访问的技术,提供了灵活的数据访问接口。 这两个技术虽然出发点不同,但目标都是...
NHibernate不仅仅管理.NET类到数据库表的映射(包括.NET数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和ADO.NET处理数据的时间。 NHibernate的目标是对于...
在.NET环境中,可能使用ADO.NET、Entity Framework或本例中的Hibernate进行数据库操作。Hibernate是一种流行的对象关系映射(ORM)工具,它简化了数据库操作,将数据库操作转化为面向对象的代码。 4. **模型(Model...
在.NET环境中,SQLite 可以通过 ADO.NET 提供器进行访问,允许.NET开发者像操作其他数据库一样操作 SQLite 数据库。 NHibernate 是一个流行的面向对象的持久化框架,源自 Java 平台的 Hibernate。它提供了一种抽象...
如果应用程序希望自行管理ADO.NET连接,可以不使用NHibernate提供的`ConnectionProvider`,而是直接与ADO.NET交互。这种方式适用于那些需要更精细控制的应用场景。 **2.4 NHibernate提供ADO.NET连接** 大多数情况...
面试中可能涉及的点有:ASP.NET页面生命周期、控件事件模型、状态管理(如ViewState,Session,Cookie等)、Web服务(Web API)的使用、MVC(Model-View-Controller)架构、依赖注入、数据库交互(ADO.NET,Entity ...