ORM框架
对象关系映射—>数据库和对象之间的映射,这样就不需要用到SQL语句,直接操作对象就可以了,封装之后,不需要管jdbc六部曲那些,直接操作
底层—-持久层框架 替代原有的JDBC DAO—数据库交互用的
技术特点:是数据读写变为抽象接口,主要是为了实现Java与数据库的交互,最主要是动态代理 ========================================================
1.什么是ORM?
ORM的全称是object-Relationl mapping,即对象关系映射,它的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作。因此它的目的是为了方便开发人员以面向对象的思想来实现对数据库的操作。
2.持久化
持久化就是把数据(如内存中的对象)保存到可以永久保存的存储设备中(如磁盘,硬盘)。主要应用是将内存中的数据存储到关系型数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。持久化顾名思义就是把缓存中的东西放到数据库中使之持久。
持久层是将数据使用者和数据实体相关联。
3.优点:
1>提高了开发效率。由于ORM可以自动对实体对象与数据库中的表进行字段与属性的映射,所以实际操作中已经不再需要一个专用的、庞大的数据访问层。
2>ORM提供了对数据库的映射能够像操作对象一样从数据库中获取数据,而不用直接进行SQL编码。
4.缺点:
1>牺牲程序的执行效率和会固定思维模式,降低了开发的灵活性。
2>系统结构方面,采用ORM的系统一般都是多层系统,层次多了效率就会降低。ORM是一种完全的面向对象的做法,而面向对象的做法也会对性能产生一定的影响。
3>性能方面,主要体现在对持久化对象的提取和对数据的加工处理上,采用ORM时,系统可能将全部数据提取到内存对象中,然后进行过滤和加工处理,这样会产生性能的问题。
4>对象持久化方面,ORM一般会持久化所有的属性,这对有些应用是不希望发生的。
5.产生原因:
MySQL数据库里面都是一行一行进行存储的,而程序他是一个个对象来进行运行的,而目前的大部分数据库驱动技术(JDBC等)均是以结果集一条一条进行处理,因为要解决这个问题,就有了这个ORM框架,它是一个对象和数据之间的映射技术。
6.高内聚低耦合**
1>简述:
在软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分模块的一个准则是高内聚低耦合。从模块粒度来看,高内聚:尽可能类的每个成员方法只完成一件事(最大限度的聚合); 低耦合:减少类内部,一个成员方法调用另一个成员方法。从类角度来看, 高内聚低耦合:减少类内部,对其他类的调用;从功能块来看 高内聚低耦合:减少模块之间的交互复杂度(接口数量,参数数据)即横向:类与类之间、模块与模块之间;纵向:层次之间;尽可能,内容内聚,数据耦合。
2>
在目前的企业应用系统设计中,MVC,即 Model(模型)- View(视图)- Control(控制)为主要的系统架构模式。MVC 中的 Model 包含了复杂的业务逻辑和数据逻辑,以及数据存取机制(如 JDBC的连接、SQL生成和Statement创建、还有ResultSet结果集的读取等)等。将这些复杂的业务逻辑和数据逻辑分离,以将系统的紧耦合关系转化为松耦合关系(即解耦合),是降低系统耦合度迫切要做的,也是持久化要做的工作。MVC 模式实现了架构上将表现层(即View)和数据处理层(即Model) 分离的解耦合,而持久化的设计则实现了数据处理层内部的业务逻辑和数据逻辑分离的解耦合。
将数据库处理数据的业务逻辑和数据存储的逻辑分开,让他们不要在一起,这样如果其中存储出现问题,只需要改那个存储的逻辑,而业务的逻辑就不需要改动。
(MVC就是将数据层分离的,就是解耦和,继续降低耦合度,不能让耦合度太高,太高就会出现牵一发而动全身)
持久化的设计,就是实现这个数据处理层内部的业务逻辑和数据逻辑,那分离的解耦合,持久化的设计在这个中间,就是实现这个数据处理层内部的业务逻辑。
7.ORM中的基本概念和映射关系:
ORM(Object/Relation Mapping)解决的主要问题是对象-关系的映射。域模型和关系模型,分别是建立在概念模型的基础上的,域模型是面向对象的,而关系模型是面向关系的,那一般情况下,一个持久化类和一个表对应。类的每个实例,对应表中的一条记录类的每个属性的对应表的每个字段。
ORM的主要目的是通过类和对象操作数据库,所以在ORM中必须解决编程语言中的类与对象和数据库中的表之间的映射。
(1)类与数据库中表的映射:数据库中的每一张表对应编程语言中的一个类,当用户对类进行基本操作(如创建实现,修改对象的属性,删除一个实例)时,ORM框架会自动对数据库中的表进行相应的CURD操作。
(2)对象与表中记录的映射:关系数据库中的一张表可能有多条记录,每条记录对应类的一个实例,当用户对一个对象进行修改时,ORM框架会自动对数据表中的相应记录进行修改。
(3)类的属性与数据库中表的字段的映射:数据库中表的字段的数据类型与类中的属性的类型也是一一对应的。
https://blog.csdn.net/u013539003/article/details/48293429—>关于映射详见这里哦
补充:
1>CURD简述
CURD是一个数据库技术中的缩写词,一般的项目开发的各种参数的基本功能都是CURD。作用是用于处理数据的基本原子操作。
中文名CURD含义数据库技术中的缩写词操作对象一般的项目开发的各种参数作用用于处理数据的基本原子操作。
它代表创建(Create)、更新(Update)、读取(Retrieve)和删除(Delete)操作。
CURD 定义了用于处理数据的基本原子操作。
之所以将CURD 提升到一个技术难题的高度是因为完成一个涉及在多个数据库系统中进行CURD操作的汇总相关的活动,其性能可能会随数据关系的变化而有非常大的差异。
CURD 操作通常是使用关系型数据库系统中的结构化查询语言(Structured Query Language,SQL)完成的。随着 Web 变得更加具有面向数据特性,因此需要从基于 SQL 的 CURD 操作转移到基于语义 Web 的 CURD 操作。
2>原子操作简述
所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另一个线程)
如果这个操作所处的层(layer)的更高层不能发现其内部实现与结构,那么这个操作是一个原子(atomic)操作。
原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱,也不可以被切割而只执行其中的一部分。
将整个操作视作一个整体是原子性的核心特征。
