`
窗户纸
  • 浏览: 18508 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

使用自己开发的ORM数据层的好处

 
阅读更多

使用了对象映射转换层确实可以大幅简化开发工作,但最近研究了各家数据层的有缺点后,我发现自己开发数据层可能更划算些:

1. 向Hibernate等著名ORM产品号称缓存的命中率达90%以上,但如果应用时分布到多台服务器上,甚至是客户端时,其缓存命中率会差得一塌糊涂, 于是乎大家都在说建立在其上建立应用缓存,但应用缓存会带来脏读、冲突等诸多问题。而自己编制数据层就可有选择的处理缓存问题,显著提高效率。

2. 面向对象编程一个很突出的特点就是其支持继承,而继承的实现在数据库设计中有两种方式:

1) 父子类使用同一张表,特点是效率较高,但多个对象数的据在一起会浪费部分空间

2) 父子类使用不同的表,并用相同的键值对(ID)关联,其转换的效率会低,且如果某一对象的各个子类都没有附加数据,反而会增加键值对的空间。

如果出现更加复杂的父子类之间的关联关系,处理不好可能造成循环引用,因此通用的ORM产品都干脆做了很多限制,也就是说其无法完全实现所设计的对象结构体系,而自己设计ORM就可以解决这类问题。

3. 更灵活的数据库操作,虽然某些轻型ORM支持对数据库的直接操作,但如果自定义的数据层设得当,实现起来会更加方便。

4. 更灵活的数据关联处理,在数据库中表间的关联有级联删除/置空等操作,而实际上对象间的删除及更新处理也相对复杂,有时需要级联删,有时需要置空,而有时又禁止删除,因此使用复杂的配置文件处理来处理去,可能还不如直接写在代码里更直观些。

其实,自己开发数据层耗时也不大,用Hibernate一周完成的事情,自己做可能2周也就出来了,而且后期对象的增减、功能增减可以做的更灵活。

分享到:
评论

相关推荐

    Java反射机制在数据持久层轻量级ORM框架中的应用研究.pdf

    Java反射机制在数据持久层轻量级ORM框架中的应用研究.pdf

    Asp.Net Core 3.1 MVC+EF Core +SqlSugar ORM框架实例 多层架构示例Demo

    Asp.Net Core 3.1 MVC+EF Core +SqlSugar ORM框架实例 多层架构示例Demo,与大家共同学习,加QQ532186511交流沟通更多.Net Core技术

    DELPHI_ORM

    一个不错的ORM持久层,DELPHI版的,在D7下测试通过。 并开放了接口,还蛮好用的。 希望在D7下像JAVA/C#一样的快速开发不错的一个利器。并且提供全部源码。如果有什么好的见意最好可以发一份给我。谢谢。

    StepbyStep-构建自己的ORM系列-数据访问层

    希望后面我能在 写设计模式系列的过程中,穿插讲解ORM系列,当然我的这个构建的系列,也只能说是很简易的,自己平时开发个小应用工具或者什么的,可能用他,因为是自己开发的嘛,毕竟使用起来还是比较顺手的!...

    支持多数据库的ORM框架ef-orm.zip

    最大限度利用编译器减少编码错误的可能性 API设计和元数据模型(meta-model)的使用,使得常规的数据库查询都可以直接通过Criteria API来完成,无需使用任何JPQL/HQL/SQL。可以让避免用户犯一些语法、拼写等错误。...

    分布式业务层数据层框架Albianj2.zip

    访问、并解决互联网开发中经常会碰到的数据海量增长问题,也一并解决 互联网开发团队 中,因开发人员的水平参差不齐而导致的代码质量不可控问题。它主要有简单小巧的IoC, ORM,数据路由,缓存集成,分布式唯一id...

    .net ORM 代码生成器 v1.1

    系统运用分层原理和组件原理,将所有的MIS管理系统划分为用户界面层,业务规则层,数据访问层和数据库层,每一下层为上层提供支持,一般不跨层访问;同时结合现在一些已经成熟的设计框架,设计模式和构件模式,将一个...

    FluentData微型ORM v2.3.0源码2012813

    它使ADO.NET开发的Power,一个方便简洁的ORM。 它有一个简单的API,很容易入手。 FluentData is a Micro ORM that makes it simple to select, insert, update and delete data in a database. It gives the ...

    模拟:模拟ORM:LaravelPHP的数据映射器ORM

    这是附带Laravel框架采用数据映射模式,而不是原来的Active Record方式雄辩的ORM的换位。 通过严格的关注点分离,它克服了Eloquent的一些体系结构限制; 例如,您可以使用Value Objects或Single-table-inheritance ...

    dotnetcoding ORM 代码生成器

    系统运用分层原理和组件原理,将所有的基于数据库访问的系统划分为用户界面层(UI),业务规则层(BLL), 数据访问层(DAL)和数据库层(DB). 每一下层为上层提供支持,一般不跨层访问,是一个真正意义上的多层架构; 同时结合...

    Hibernate数据持久层框架是一种Java语言下的对象关系映射解决方案.rar

    它的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来。无论是从设计草案还是从一个遗留数据库开始,开发人员都可以采用Hibernate。 Hibernate不仅负责从Java类到数据库表的映射(还包括从...

    Hibernate数据持久层框架.rar

    只要有一套程序能够做到建立对象与数据库的关联,操作对象就可以直接操作数据库数据,就可以说这套程序实现了ORM对象关系映射。也就是说ORM是建立了一个实体与数据库表的关系,使得开发者对实体的直接操作而不是对...

    快速学习-Spring Data JPA 之 ORM概述

    第1章 ORM概述[了解] ...当实现一个应用程序时(不使用O/R Mapping),我们可能会写特别多数据访问层的代码,从数据库保存数据、修改数据、删除数据,而这些代码都是重复的。而使用ORM则会大大减少

    hibernate-orm-5.6.3.rar

    它的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来。无论是从设计草案还是从一个遗留数据库开始,开发人员都可以采用Hibernate。 Hibernate不仅负责从Java类到数据库表的映射(还包括从...

    Rexdb是一款使用Java语言编写的,开放源代码的持久层框架 提供了查询、更新、批处理、调用、(JTA)事务、数据源管理等功能

    Rexdb是一款使用Java语言编写的,开放源代码的持久层框架。提供了查询、更新、批处理、调用、(JTA)事务、数据源管理等功能,可以取代...高性能的数据持久层(ORM)框架,查询性能是Hibernate的2.3倍,Mybatis的1.7倍。

    SpringBoot使用Spring-data-jpa简化数据访问层

    为了解决这些大量枯燥的数据操作语句,我们第一个想到的是使用ORM框架,比如:Hibernate。通过整合Hibernate之后,我们以操作Java实体的方式最终将数据改变映射到数据库表中。 为了解决抽象各个Java实体基本的“增...

    PDF.NET数据开发框架V3.0演示版

    * UI层(WinForm/Web)控件数据绑定、映射与查询; * BLL层实体对象查询(OQL) * DAL层SQL语句和.NET数据访问代码映射(查看 SQL-MAP 原理) 详细说来,框架还包含以下特色功能: * 类似LINQ的支持ORM实体类...

Global site tag (gtag.js) - Google Analytics