持久层

MyBatis持久层框架学习之01 MyBatis的起源和发展

柔情痞子 提交于 2020-03-23 05:47:04
一、MyBatis的简介    MyBatis 是支持定制化 SQL、存储过程以及 高级映射 的优秀的持久层框架。   MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 MyBatis可以使用简单的XML或注解用于配置和原始映射, 将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录 . 二、MyBatis的历史    原是apache的一个开源项目iBatis, 2010年6月这个项目由apache software foundation 迁移到了google code,随着开发团队转投Google Code旗下,ibatis3.x正式更名为Mybatis ,代码于2013年11月迁移到Github。   iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)    三、MyBatis的基本说明   (1)、MyBatis是一个工作在持久层的框架,它 不再是一个标准的ORM框架      我们先看看Hibernate是如何对数据库进行操作    我们再来看看Mybatis如何对数据库进行操作    因为它只管理了SQL语句和Java之间的关联和映射

Spring Data Jpa 详解 (配置篇)

删除回忆录丶 提交于 2020-03-15 02:07:35
前言:    JPA 全称 Java Persistence API ,即Java持久化API,它为Java开发人员提供了一种 对象/关系映射 工具来管理Java应用中的关系数据,结合其他ORM的使用,能达到简化开发流程的目的,使开发者能够专注于实现自己的业务逻辑上。   Spring Jpa 能够 简化创建 JPA 数据访问层和跨存储的持久层功能,用户的持久层Dao接口只需要继承他自己定义好的(仓库)接口, 无需再写实现类 ,就可以实现对象的CRUD操作,还有分页排序等功能。    写本章之前本来想写一个SpringMVC的,后来发现Jpa的配置可以大大简化MVC框架的配置,就先研究研究Spring Data Jpa。 准备工作:   jar包支持(不用说都知道,本章jar包待我会放在115网盘供下载) web.xml配置(监听Spring容器的装载) 本章采用的是阿里连接池(Druid),所以web.xml要有相关的配置 Spring容器的配置(主要为beans和jpa) Jpa的主要配置(实体类管理、数据源、连接池、事务等) 实体类、持久层接口、业务层的创建 测试放在下一章节中(因为采用了SpringJunit单元测试, 点击前往 ) 先来看一下本章节用到的 包结构--如下图 :    实例代码演示: ****************最后我会把本章的项目打包供下载******

记一次数据持久层的问题

霸气de小男生 提交于 2020-03-12 07:39:38
Mapper父类的方法: / ** * 根据表名和ID获取对象 * @param tableName 表名 * @param id ID * @ return 对象信息 * / @Select ( value = { "<script>" + " Select * from ${tableName} where id=#{id}" + " </script>" } ) Map getObjById ( @Param ( "tableName" ) String tableName , @Param ( "id" ) String id ) ; 实体的父类: @Data @Slf4j @MappedSuperclass @EqualsAndHashCode ( callSuper = false ) public class BaseBean implements Serializable { @Id @Column ( name = "id" , length = 36 ) // 主键i private String id ; @Column ( name = "name" , length = 255 ) // 名字 private String name ; @Column ( name = "data" , length = 5000 ) // 配置化参数 private

Spring 03 依赖注入

有些话、适合烂在心里 提交于 2020-03-10 11:35:55
依赖注入:Dependency Injection。它是 spring 框架核心 ioc 的具体实现。 我们的程序在编写时,通过控制反转,把对象的创建交给了 spring,但是代码中不可能出现没有依赖的情况。 ioc 解耦只是降低他们的依赖关系,但不会消除。例如:我们的业务层仍会调用持久层的方法。 那这种业务层和持久层的依赖关系,在使用 spring 之后,就让 spring 来维护了。 简单的说,就是坐等框架把持久层对象传入业务层,而不用我们自己去获取。 构造函数注入 使用类中的构造函数,给成员变量赋值。注意,赋值的操作不是我们自己做的,而是通过配置的方式,让 spring 框架来为我们注入。 /** */ public class AccountServiceImpl implements IAccountService { private String name ; private Integer age ; private Date birthday ; public AccountServiceImpl ( String name , Integer age , Date birthday ) { this . name = name ; this . age = age ; this . birthday = birthday ; } @Override public

mybatis持久层

为君一笑 提交于 2020-03-09 02:31:57
Mybayis介绍 Mybatis是由Apache的一个开源项目iBatis 2010年这个项目由 Apache software foundation迁移到 GoogleCode 并改名为Mybatis实质上Mybatis对ibatis进行了一些改进。 Mybatis作为优秀的持久层框架,它对jdbc操作数据库进行了封装,使开发者需要只关注Sql本身 不需要消耗多余经历去处理注册驱动关闭资源等等… 执行原理 (源码解读) 1.同Resources加载已配置好的mybatis-config.xml配置文件,Resouces是ibatis.io包下的一个类,用于读写文件,通过getResourcesAstream把指定的xml文件加载进来 将指定的xml解析为流的操作,可以见的Resources.getResourceAsStream返回值为Inputstream 输入流。 InputStream resourceAsStream = Resources . getResourceAsStream ( "mybatis-config.xml" ) ; 2 .将获取到的IO输入流放入SqlSessionFactoryBuilder().build(resourceAsStream

DDD及相关概念

心已入冬 提交于 2020-03-05 07:00:50
领域 :指一个具体的应用范围,比如电商、订票管理、会议管理等,实现某一领域的功能,与其对应的商业领域一致。譬如Contoso会议管理系统从两个方面来阐述(1)系统概览:销售会议座位、创建新会议【领域的活动是什么,核心内容】(2)非功能性需求:扩展性、灵活性【降低维护成本,延长生命周期】。 有界上下文 :引入本概念的目的是为大型、复杂系统的分解提供一种容易管理的方法。在这种分解方式下,一个大型系统由多个有界上下文构成,每个有界上下文所包含的是一个自包容的领域模型,且有自己本身的普适语言。可以将有界上下文看做是一个有着清晰一致性边界的自动化的商业组件。在通常情况下,一个有界上下文更另一个有界上下文进行通信的方法是发送事件。 上下文线路图 :描述不同模型之间的接触点,明确说明所有需要进行翻译的通信链接,并注明任何共享模块或对象。用户在进行这些活动后得出的结果就是一种“上下文线路图”。这种地图提供的是整个系统的概览,帮忙人民理解不同的有界上下文是如何相互交互的。 失血模型 :模型仅仅包含数据的定义和getter/setter方法,业务逻辑和应用逻辑都放到服务层中。这种类在java中叫POJO,在.NET中叫POCO。 贫血模型 :贫血模型中包含了一些业务逻辑,但 不包含依赖持久层的业务逻辑 。这部分依赖于持久层的业务逻辑将会放到服务层中。可以看出,贫血模型中的领域对象是不依赖于持久层的。

mybatis课堂笔记

二次信任 提交于 2020-03-03 05:07:16
mybatis第一章:基于知识 1.三层架构: 复习mvc: 做web开发常用的架构 m是数据–是通过service-访问dao-访问数据库获取数据。 v是视图–一般使用jsp,html显示m中的数据,用户可以看到视图 c是控制器–使用servlet, 控制器调用service,把数据选择一个视图显示 三层架构:做任何应用都可以使用。三层可以延伸为6层,9层。 把应用的类和功能在逻辑上分层不同的部分, 每个部分完成自己的功能,和其他部分关联小。 第一层:视图层,一般使用jsp,html表示的,作用是接收用户的请求,并显示处理结果数据 第二层:业务层,主要是service包中的类,处理业务逻辑的。 第三层:持久层(数据访问层),主要是dao包中的类,访问数据库的,处理数据的。 2.框架(framework) 概念1: 整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法; 另一种认为,框架是可被应用开发者定制的应用骨架、模板 注意:1)框架是可重用的,在多个不同的项目中使用框架 2)框架中有定义好的对象,以及对象之间的调用,可以完成一定的功能。 概念2:框架就是一个软件,软件里面写好了一些功能。这些功能是软件的一些类相互调用完成的。 我们的项目可以在框架之上加入自己的逻辑功能,就能利用框架提供的功能完成项目的开发。 用户发起请求---你的程序代码---访问了框架

SpringAOP声明式事务控制:xml配置(spring提供的事务管理器)

痞子三分冷 提交于 2020-03-03 04:00:29
文章目录 1. 创建 spring 的配置文件并导入约束 2. 编写业务层,持久层 3. 在配置文件中配置业务层和持久层对 4. spring中基于XML的声明式事务控制配置步骤 1. 创建 spring 的配置文件并导入约束 此处需要导入 aop 和 tx 两个名称空间 < ? xml version = "1.0" encoding = "UTF-8" ? > < beans xmlns = "http://www.springframework.org/schema/beans" xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns : aop = "http://www.springframework.org/schema/aop" xmlns : tx = "http://www.springframework.org/schema/tx" xsi : schemaLocation = "http : / / www . springframework . org / schema / beans http : / / www . springframework . org / schema / beans / spring - beans . xsd http : / / www .

Java三大框架的技术起源

巧了我就是萌 提交于 2020-02-29 05:57:32
struts、hibernate和spring是我们java开发中的常用关键,他们分别针对不同的应用场景给出最合适的解决方案。但你是否知道,这些知名 框架 最初是怎样产生的? 我们知道,传统的javaweb应用程序是采用jsp+servlet+javabean来实现的,这种模式实现了最基本的mvc分层,使的程序结构分为 几层,有负责前台展示的jsp、负责流程逻辑控制的servlet以及负责数据封装的javabean。但是这种结构仍然存在问题:如jsp页面中需要使 用符号嵌入很多的java代码,造成页面结构混乱,servlet和javabean负责了大量的跳转和运算工作,耦合紧密,程序复用度低等等。 struts 为了解决这些问题,出现了struts 框架 , 它是一个完美的mvc实现,它有一个中央控制类(一个servlet),针对不同的业务,我们需要一个action类负责页面跳转和后台逻辑运算,一个或 几个jsp页面负责数据的输入和输出显示,还有一个form类负责传递action和jsp中间的数据。jsp中可以使用struts 框架 提供的一组标签,就像使用html标签一样简单,但是可以完成非常复杂的逻辑。从此jsp页面中不需要出现一行包围的java代码了。 可是所有的运算逻辑都放在struts的action里将使得action类复用度低和逻辑混乱

Spring的起源和背景

邮差的信 提交于 2020-02-28 07:21:53
上图为Spring框架的组成结构 下面这几张也是的 Spring将大量实际开发中需要重复解决的步骤,抽象成了一个框架。 其中Spring Core Container是Spring框架的核心机制。 Spring框架就是实现了AOP功能的IOC(IOC是啥)容器。 Spring为企业级开发提供了一个轻量级解决方案,其中包括: 基于依赖注入的机制; 基于AOP的声明式事务管理; 与多种持久层技术整合; 优秀的Web MVC框架; Spring贯穿表现层、业务层、 持久层。 Spring具有如下优点: 低侵入式设计(啥叫低侵入式?),代码污染极低。 独立于各种应用服务器(啥叫应用服务器?),基于Spring框架的应用,可以实现真正的Write Once、Run Anywhere。 Spring的DI容器(啥叫DI容器)降低了业务对象替换(啥叫对象替换?)的复杂性,提高了组件之间的解耦。 Spring的AOP可将一些通用任务如安全、事务、日志等进行集中式处理,提高更好复用。 Spring的ORM和DAO提供了与第三方持久层框架(例如Hibernate)的良好整合,简化了底层数据库方法。 项目中可以使用全部或者部分的Spring框架。 Spring的核心要点是:支持不绑定到特定J2EE服务容器的可重用业务和数据访问对象。 AOP,Aspect Oriented Programming