zoukankan      html  css  js  c++  java
  • ORM&MySQL

    概念:

    ORM:对象关系映射 , 全拼 Object-Relation Mapping ,是一种为了解决面向对象与关系数据库存在的互不匹配现象的技术。主要实现模型对象到关系型数据库数据的映射.比如:把数据库表中每条记录映射为一个模型对象

    使用原因:

    若不使用ORM框架实现一个应用程序时,我们可能会写特别多数据访问层的代码,从数据库保存、删除、读取对象信息,而这些代码都是重复的。而使用ORM则会大大减少重复性代码。对象关系映射主要实现程序对象到关系数据库数据的映射。

    ORM的核心原则: 
      · 简单:以最基本的形式建模数据。比如将MySQL的一张表映射为一个python类,表中的字段就是此类的属性.
      · 传达性:将数据库结构转化成能够被任何人理解的语言文档化。比如MySQL的一张表就被ORM转化为了一个python程序员熟悉的python类
      · 精确性:ORM将所有的mysql数据表都统一映射成了标准的python类,保持在代码层面上的准确统一。

      · 易用:ORM将所有的对于持久化对象的CRUD操作全部都封装成了方法,通过这种封装避免了不规范、冗余、风格不一的SQL语句,方便编码风格的统一和后期维护。 


    ORM 作用 :
    1. 将定义数据库 `模型类 ` --->  数据库表
    2. 将定义数据库模型类中的 `属性`  --->  数据库表字段
    3. 将模型对象的操作(add,delete,commit)  --->  对应sql语句,并将执行结果提交到数据库


    优点 :
    0.只需要面向对象编程, 不需要面向数据库编写代码.
    1.实现了数据模型与数据库的解耦, 屏蔽了不同数据库操作上的差异.

    2.使得迁移数据库变得十分方便,可移植性高,如果项目需要更改数据库时,直接修改配置即可,无需考虑另一种数据库的语法差异.

    3.省时高效率开发,降低开发成本 ,不再需要写复杂冗长的SQL语句,仅仅关心具体的业务逻辑实现即可.


    缺点 :
    0.相比较于直接使用SQL语句操作数据库,有性能损失.
    1.根据对象的操作转换成SQL语句,根据查询的结果转化成对象, 在映射过程中有性能损失.

    2.持久化层缺乏弹性。一旦出现业务需求的变更,就必须修改持久化层的接口 
    3.持久化层同时与域模型与关系数据库模型绑定,不管域模型还是关系数据库模型发生变化,毒药修改持久化曾的相关程序代码,增加了软件的维护难度。 

    4.ORM的缺点是会牺牲程序的执行效率和会固定思维模式。 

    5.在对对象做持久化时,ORM一般会持久化所有的属性,但有时这是不被期望的
    6.在处理多表联查、where条件复杂之类的查询时,ORM的语法会变得复杂

    CURD :

    数据库基本操作中的Create(创建)、ReadRetrieve(读取)、Update(更新)、Delete(删除)。

    SQL结构化查询语言 :

    DQL: 数据查询语句/数据的查询(select)
    DML: 数据操作语句/数据的增删改(insert delete updata)
    DDL: 数据定义语句/库和表的操作(create drop)
    DCL: 数据控制语⾔, 进⾏授权与权限回收,(grant、 revoke)

    TPL: 事务处理语言,对事务进行处理,包括begin transaction、 commit、 rollback
    DCL: 数控制语言,进行授权与权限回收,如grant、 revoke

    MySQL数据完整性包括 :

    实体完整性,保证某一条记录的唯一性,主要有 主键约束[primary key]&唯一键约束,一张表仅能有一个null[unique key]
    域完整性,保证某一字段的类型或约束,主要有 非空[not null]&默认值[default xxx]
    参照完整性,限制表之间的规则,即外键,主要有 外键约束[foreign key]
    用户定义完整性,用户对某一字段的进一步控制范围,限定约束

    事务的特性(ACID) :
    原子性A,事务中的全部操作在数据库中是不可分割的,要么全部执行,要么均不执行
    一致性C,几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致
    隔离性I,事务的执行不受其他事务的干扰,事务的执行的中间结果必须对其他事务透明
    持久性D,对于任意已提交的事务,系统必须保证该事务对数据库的该表永不丢失,即使数据库出现故障

     

    数据库分类 :

    关系型数据库: Oracle , MySQL , SQLite,基于关系模型的数据库,是一个 二维表模型和表之间关系 的集合,适合于关系特别复杂的数据查询场景.
    非关系型数据库(nosql): mongDB , Redis,不基于关系模型,不是二维表模型,强调以 key - value 格式存储数据,比关系型数据库更加灵活和可扩展,基本不支持事务.

    MySQL & Redis :

  • 相关阅读:
    [贪心经典算法]Kruskal算法
    [经典贪心算法]Prim算法
    Java容器之List接口
    Java容器之Set接口
    JDK中的泛型
    Java中ArrayList与数组间相互转换
    Java中的增强for循环
    Java容器之Iterator接口
    Java之容器
    eg_4
  • 原文地址:https://www.cnblogs.com/hsmwlyl/p/10576148.html
Copyright © 2011-2022 走看看