适用于Oracle的最佳ORM工具,具有4000个表

时间:2009-02-13 14:56:02

标签: orm

我正在寻找可与Oracle和SQL Server 2005配合使用的最佳.Net ORM工具。我们拥有一个包含大约4000个表的Oracle数据库。我尝试使用TierDeveloper和Codesmith,当我尝试使用Oracle DB映射对象时,他们没有响应。哪个是与大型Oracle数据库一起使用的最佳ORM工具?

4 个答案:

答案 0 :(得分:8)

我会认真看看ibatis(对于Java和.Net)。我说这有几个原因:

首先,像NHibernate这样的ORM真正尝试抽象出数据库,我认为这可能适得其反,特别是在处理“遗留”数据库时。遗产并不意味着你认为它意味着什么。像Hibernate和JPA(Java)这样的工具几乎定义了任何不像遗留的“正确”方式那样做的事情,并且可以包括使用复合键(严肃地说,我读过一本名为复合键的“JPA”书籍“遗留”)。

另一方面,Ibatis为您提供了ORM的大部分功能(例如,Hibernate不能像groupBy一样执行某些操作),但仍然可以编写纯SQL。我想象一个数据库很大,你会有一些可疑的建模决策,如果不是不可能映射到许多ORM将是困难的。通过编写直接SQL,您可以根据定义在ibatis中满足这些情况。

在查询语言方面,非供应商特定的ORM也是最低的共同点。如果所有数据库都无法做到,那么你无法在任何地方进行。 Oracle拥有最复杂的SQL方言之一。你应该使用它。诸如CONNECT PRIOR之类的东西在许多其他SQL方言中都不存在(因此在抽象的ORM中没有以高效的方式建模)。

我在Using an ORM or plain SQL?

中写了更多相关信息

事实上,你的双手被现有设计束缚,这使得尽可能保持与SQL尽可能接近。

答案 1 :(得分:3)

如果你没有对象模型,我会考虑ORM。我认为在表和列,对象和属性之间进行1:1映射是错误的。如果对象只是结构,没有行为或规则的封装,那有什么意义呢?

在这种情况下,我更喜欢另一种方法:iBatis,直接JDBC,存储过程或其他允许你调优SQL而不依赖于ORM生成的东西。

更新:Oracle拥有TopLink。这会让我假设他们已经“优化”它以便与他们的数据库配合良好:

http://www.oracle.com/technetwork/middleware/toplink/overview/index.html

但事实是,如果您的架构做得不好(例如索引不佳,JOIN过多,缓存等等),ORM工具无法做任何事情。底层数据库会对您的感知性能产生很大影响。

答案 2 :(得分:1)

使用XAF产品DevExpress获取更多详细信息,请查看http://www.devexpress.com

答案 3 :(得分:0)

尝试EntityORM:http://entityorm.uuuq.com

EntityORM是.NET 2.0的完全类型的对象关系映射库。

EntityORM的主要优势在于易用性。大多数ORM库仍然需要编写大量的类型转换和其他管道,EntityORM旨在使程序员免于这些繁琐且容易出错的任务,使其非常直观易用。

主要特点是:

* DataBase independent
* Ease for build new drivers that are independent from the EntityORM core framework (for now there is Sql Server, Sql CE, MySql, Oracle, PostgreSQL and Access drivers)
* Automatic mark changed for changes entities (optional)
* Automatic lazy loading (optional)
* Automatic transactions (optional manual transaction for instance for two-phase commit)
* Ease to map for an existing database with minimal effort
* All relational types are supported (One-To-One, One-To-Many, Many-To-One, Many-To-Many)
* Flexible event framework
* Conditions para load filter data into entities
* Capability to map to different table names or field names
* Default values
* Rules validation
* Autonumber
* Guid
* Generic list to managed multiple entities hidden deleted entities
* Typed entities are lazy loading with caching reducing significantly the needed for reflection
* Entity views to faster load read-only data from one ore more tables into a single flat entity
* Join conditions to join several tables in to a sigle entity view
* Generic list to managed multiple entity views
* Distinct, automatic group and aggregate functions (count, sum, largest, average, smallest) supported in entity views