zoukankan      html  css  js  c++  java
  • 什么是ORM

    一、ORM简介

    ORM:对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping)

    用于实现面向对象编程语言里不同类型系统的数据之间的转换

    • ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象与关系数据库相互映射
    • ORM可以解决数据库与程序间的异构性,比如:在Java中我们使用String表示字符串,而Oracle中可使用varchar2,MySQL中可使用varchar,SQLServer可使用nvarchar。

    没有ORM时我们是这样完成对象与关系数据库之间的映射的:

          //将执行的sql
                String sql = "SELECT name, id, age, password FROM users";
                //创建命令对象
                preparedStatement = connection.prepareStatement(sql);
                //执行并获得结果集
                resultSet = preparedStatement.executeQuery();
                //遍历结果集,将数据库中的数据转换成Java中的对象
                while(resultSet.next()){
                    String name = resultSet.getString("name");
                    int id = resultSet.getInt("id");
                    int age = resultSet.getInt("age");
                    String password = resultSet.getString("password");
                    User entity= new User(name,id,age,password);
                    Users.add(entity);
                }

    这种方案存在以下不足: 

    1. 持久化层缺乏弹性。一旦出现业务需求的变更,就必须修改持久化层的接口
    2. 持久化层同时与域模型与关系数据库模型绑定,不管域模型还是关系数据库模型发生变化,都要修改持久化曾的相关程序代码,增加了软件的维护难度。
    3. 将和数据库交互(CRUD)的代码硬编码到JDBC程序中
    4. 实现见状的持久化层需要高超的开发技巧,而且编程量很大
    5. 对象模型和关系模型的转换非常麻烦

    二、ORM(O/R Mapping:对象关系映射):

    • 它是一种将内存中的对象保存到关系型数据库中的技术
    • 主要负责实体域对象的持久化,封装数据库访问细节
    • 提供了实现持久化层的另一种模式,采用映射元数据(XML)来描述对象-关系的映射细节,使得ORM中间件能在任何一个Java应用的业务逻辑层和数据库之间充当桥梁。

    三、Java典型的ORM中有:

    hibernate:全自动的框架,强大、复杂、笨重、学习成本较高

    Mybatis:半自动的框架(懂数据库的人 才能操作) 必须要自己写sql

    JPA:JPA全称Java Persistence API、JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,是Java自带的框架

    四、ORM的方法论基于三个核心原则:

      · 简单:以最基本的形式建模数据。

      · 传达性:数据库结构被任何人都能理解的语言文档化。

      · 精确性:基于数据模型创建正确标准化了的结构。

  • 相关阅读:
    多线程02
    多线程01
    CSS
    Mybatis CRUD中万能Map的用法及优势
    Tomcat配置
    Node.js+Vue+Webpack
    Java的几种常见排序算法
    maven插件 mybatis逆向工程
    ssm依赖
    mybatis spring整合依赖配置
  • 原文地址:https://www.cnblogs.com/weibanggang/p/10167006.html
Copyright © 2011-2022 走看看