ORM知多少

来源:互联网 发布:淘宝卖家不可以更新 编辑:程序博客网 时间:2024/05/17 01:12

前言

  公司的项目中都涉及到ORM(Object Relational Mapping)框架,EF映射、Hibernate、Mybatis、JPA……不断涌现的新鲜词语,面试的时候面试官还在说EFframework(有木有很奇怪),那就来一探究竟吧。

一、ORM的由来

  采用ORM之前,程序员采用JDBC作为数据访问层,虽然JDBC是跨平台的,但是在使用中仍然存在一些问题:

  • 代码繁琐,容易出错
        程序员需要耗费大量的时间、精力去编写具体的数据库访问语句,还要担心大量重复的代码中是否有遗漏,并不能集中精力于业务逻辑开发上面。
  • 可维护性低
        关系数据对象之间,存在各种关系,包括1对1、1对多、多对1、多对多、级联等,在数据库对象更新时,如果采用JDBC编程,程序员必须十分小心处理这些关系,在后期维护的时候也是很痛苦的。
  • 层次划分不明确
        使用JDBC编程时,程序员必须知道后台用的是什么数据库、要操作哪些表、表中都有哪些字段、字段类型、表间的关系等,每个程序员除了关注业务逻辑的同时还在兼职DBA的工作。
  • 性能低
    But—
    ORM通常更容易开发跨平台的应用程序。
    ORM是对JDBC的封装,解决了使用JDBC出现的上述问题。

二、什么是ORM

  ORM是Object Relation Mapping ,即对象关系映射,是对象持久化的核心,为了解决面向对象与关系数据存在的互不匹配的技术,通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。
  简单的说,ORM在关系型数据库和业务实体对象之间做了一个映射,程序员将对数据库的操作转化成对对象的操作,避免了直接和复杂的sql语句打交道,只需操作业务对象即可实现对数据库的操作。
这里写图片描述
  ORM的组成:
    一个对持久类对象进行CURD操作的API;
    一个语言或API用来规定与类和类属性相关的查询;
    一个规定mapping metadata的工具;
    一种技术可以让ORM的实现同事务对象一起进行dirty checking,lazy association fetching以及其他的优化操作。
  常见的ORM框架:
    .NET —— entity framework 、Linq to Sql
    Java —— Hibernate、Mybatis、TopLink

三、项目中ORM的应用

1、声明一个上下文StudentManagerEntities DBcontext = new StudentManagerEntities2、声明一个实体Student st = new Stuendent();st.name="Tracy";st.tel="8888888";st.email="888888@126.com";st.id="13070141070";3、通过上下文对实体操作,比如CRUD//添加操作DBcontext.Student.Add(st);4、将实例的变化保存在数据库中DB.context.SaveChanges();

四、ORM与数据持久化的关系

  数据持久化:将内存中的数据模型转换成存储模型,以及将存储模型转换为内存中的数据魔性的统称。数据模型可以是任何数据结构或对象模型,存储模型可以是关系模型、XML、二进制流等。
  ORM是一个数据持久化框架,实现了JPA接口。

五、ORM的应用场景

  1、对性能要求不是很高的时候
  2、开发时间紧迫
  3、数据库有迁移需求的时候

总结

    学习的过程是从陌生到熟悉的过程,在做项目的过程中虽然自己也接触过EF映射的东西,只是停留在会用的基础上,总结和思考的时候对它的发展及应用有了更进一步的认识,继续加油!