基于MyBatis和Spring的JavaEE数据持久层的研究与应用
- 格式:pdf
- 大小:1.61 MB
- 文档页数:4
SpringMVC+Spring+Hibernate框架整合原理,作⽤及使⽤⽅法SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层使⽤spring MVC负责请求的转发和视图管理spring实现业务对象管理,mybatis作为数据对象的持久化引擎原理:SpringMVC:1.客户端发送请求到DispacherServlet(分发器)2.由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller3.Controller调⽤业务逻辑处理后,返回ModelAndView4.DispacherSerclet查询视图解析器,找到ModelAndView指定的视图5.视图负责将结果显⽰到客户端Spring:我们平时开发接触最多的估计就是IOC容器,它可以装载bean(也就是我们中的类,当然也包括service dao⾥⾯的),有了这个机制,我们就不⽤在每次使⽤这个类的时候为它初始化,很少看到关键字new。
另外spring的aop,事务管理等等都是我们经常⽤到的。
Mybatis:mybatis是对jdbc的封装,它让数据库底层操作变的透明。
mybatis的操作都是围绕⼀个sqlSessionFactory实例展开的。
mybatis通过配置⽂件关联到各实体类的Mapper⽂件,Mapper⽂件中配置了每个类对数据库所需进⾏的sql语句映射。
在每次与数据库交互时,通过sqlSessionFactory拿到⼀个sqlSession,再执⾏sql命令。
使⽤⽅法:要完成⼀个功能:1. 先写实体类entity,定义对象的属性,(可以参照数据库中表的字段来设置,数据库的设计应该在所有编码开始之前)。
2. 写Mapper.xml(Mybatis),其中定义你的功能,对应要对数据库进⾏的那些操作,⽐如 insert、selectAll、selectByKey、delete、update等。
计算机参考文献大全2015-20211.祁欣玥.陈雪洁.俞晓明.朱锦新.周峰.[J].福建电脑.2020,36(04).2.贾寒霜.黄军峰.浅析在线考试系统的发展现状与趋势研究.[J].电脑迷 2018,(11),2713.周黎.试分析在线考试系统的发展现状与研究.[J].计算机产品与流通 2017,(11),2224.杜博.基于java在线考试系统的设计与实现.[J].微型电脑应用20185.陈敏.面向java程序设计的在线考试与练习系统.[J]吉首大学学报.20206.郑智方.MySQL的重要性以及步入云的应用实例[J].计算机产品与流通,2020(01):151.7.韩寅莹.刘永齐,康月,任永强.基于三层架构与MVC设计模式的古文化展示保护系统的设计与实现[J].信息技术与信息化,2020(07):9-11.8.乔岚.基于MyBatis和Spring的JavaEE数据持久层的研究与应用[J].信息与电脑(理论版),2017(08):73-76.9.杨世文,侯超钧.基于SSM框架的学术论坛管理系统设计与实现[J].计算机时代,2021 (02):25-28+33.10.黄守涛.基于JAVA语言的异常处理探讨分析[J].自动化技术与应用,2020,39(02): 30-32+107.11.陆建平,张小龙,董晓冬,顾海云,杨斌.基于SSM框架的安全阀维修系统设计与实现[J].电脑编程技巧与维护,2021(02):52-54.12.邱泸谊,黄俊杰.Java报表功能的三种实现方法[J].电脑编程技巧与维护,2019(02):107-109.13.梁盼,许青林.基于JSP技术的计算机实验室管理系统[J].电脑编程技巧与维护,2016(12):27-28+54.14.任思颖,董振华. 任务驱动式网络教学平台的实现[J]. 科技资讯,2017,(07):176-177.15.石长宏. 教学应用平台的设计与实现[J]. 经营管理者,2017,(15):227-228.16.王晓萍. 基于VOD的思政网络教学系统的开发与设计[J]. 电子设计工程,2017,(03):49-52.17.祝朝映. 浅谈微课与翻转课堂教学[J]. 职业教育(中旬刊),2017,(04):9-11.18.林关成. 基于Web的教科研网络平台设计与实现[J]. 软件导刊(教育技术),2016,(04):89-90.19.刘婷.JSP技术优势分析[J].科技视界,2018(29):190-191.20.邓碧华.基于JSP技术的网页开发应用分析[J].电脑编程技巧与维护,2016(04):77-78.21.张卉.Java语言在计算机软件开发的应用[J].智库时代,2018(50):202-203.22.王魁祎,陈东方.java语言在web开发的知识初探[J].计算机产品与流通,2018(05):38.23.秦楷.JAVA语言特点及其在计算机软件开发中的运用[J].中国新通信,2019,21(01):91.24.李金萍,程满玲.Eclipse的应用发展[J].电脑编程技巧与维护,2016(16):31-32+58.25.苟文博,于强.基于MySQL的数据管理系统设计与实现[J].电子设计工程,2017,25(06):62-65.26.杨琳.MySQL数据库优化教学探讨[J].信息与电脑(理论版),2018(14):248-250.27.张鑫.网站管理系统中数据库设计的应用研究[J].电脑知识与技术,2016,12(06):9-11.28.付佳,李宝安.Web应用软件测试方法研究[J].计算机产品与流通,2019(04):22.29.范海燕.动态软件测试中的白盒测试和黑盒测试探讨[J].南方农机,2018,49(18):76.30.钟睿.浅析软件黑盒测试[J].数字通信世界,2018(05):145.31.张云健.计算机软件Java编程特点及其技术应用[J].信息与电脑(理论版),2019(13):97-9832.刘淑芳,陈跃龙,张佳乐.计算机软件开发中JAVA编程分析[J].中国新33.苟文博,于强.基于MySQL的数据管理系统设计与实现[J].电子设计工程,2017(6):62-6534.李丛.MySQL数据库安全配置[J].计算机与网络,2016(11):52-5535.王浩.基于Java开发平台的安全性措施[J].电子技术与软件工程,2017(2):48-4836.任嵬,孟庆峰.电子商务和客户关系管理系统的大数据应用研究与实现[J].石化技术,2019(6)37.余炀,曲毅,孙亦乐.基于ApacheTomcat的一站式Java应用服务器解决方案[J].中国金融电脑,2018(01):59-63.。
java框架调研报告Java框架调研报告一、引言随着Java语言的不断发展,各种Java框架也日益增多,开发人员可选择的框架越来越多,但这也对开发人员选择框架时提出了更高的要求。
本报告将对几种主流的Java框架进行调研,分析它们的特点、优缺点以及适用场景,以便开发人员能够根据具体需求选择合适的框架。
二、Java框架调研概述目前,Java开发常用的框架有Spring、Hibernate、Struts、MyBatis等,它们都有自己的特点和适用场景。
接下来,我们将对这几种框架进行详细介绍和比较。
三、Spring框架Spring框架是目前Java企业应用开发中最常用的框架之一。
它提供了一种轻量级的解决方案,通过依赖注入和面向切面编程等技术,简化了企业应用开发的复杂度。
Spring框架具有以下优点:1. 轻量级:Spring框架的核心容器非常轻巧,不需要依赖大量的第三方依赖,使得应用程序的部署和启动更加高效。
2. 面向切面编程:Spring框架提供了AOP(Aspect-Oriented Programming)的支持,可以在不修改原有业务逻辑的情况下,增加横切关注点,如事务管理、安全控制等。
3. 依赖注入:Spring框架支持依赖注入,可以将对象的创建和组装交给框架处理,大大提高了代码的可维护性和扩展性。
然而,Spring框架也存在一些缺点,例如配置文件繁琐、学习成本较高等,对于小型项目可能显得过于臃肿。
四、Hibernate框架Hibernate框架是一个开源的对象关系映射(ORM)框架。
它可以将Java类和数据库中的表进行映射,以面向对象的方式操作数据库。
Hibernate框架的优点如下:1. 数据库无关性:Hibernate框架可以适配多种主流数据库,使得应用程序在不同数据库之间的平滑切换和迁移成为可能。
2. 对象映射:Hibernate框架将数据库表中的记录转化为Java对象,提供了一种更面向对象的方式进行数据库操作。
基于Java的Mybaits生成持久层配置文件作者:管才路叶刚耿伟王立河来源:《电子技术与软件工程》2018年第22期摘要系统开发过程中,需要根据客户提出的需求对业务数据进行分析与统计。
数据库是用于存储数据的仓库,在系统的开发过程中,开发者往往会将数据以关系表形式存于关系数据库中,因此开发者会频繁的操作数据库。
在数据库框架还未成熟的早期,程序员经常是通过JDBC与数据库建立联系,此过程中会出现大量重复工作。
此种情况下,持久层框架(所谓持久层指的数据存于磁盘中,轻易不会丢失)应运而生,现在经常用的框架有Mybaits,iBatis,Hibernate等等,通过框架生成诸多的配置文件,避免了许许多多的重复工作。
本文主要针对Mvbaits持久层框架关于生成数据表的相关配置文件(如:mapper.xml,mapper.java以及关系表对应的实体类文件)这一操作通过Java后台实现。
【关键词】Mybaits mysql maven1 Mybatis-Generator工具在Web开发过程中我们经常会使用Mybatis持久层框架完整数据访问层(dao层)开发,此框架有一个配置文件生成工具Mybatis-Generator。
其可以通过命令与简单的配置,帮助开发者完成dao成相关文件的开发。
以下是使用方法以及对其进行轻微改造:(1)下载Mybatis-Generator代码生成工具(解压,解压后里面会有src、generatorConfig.xml. mybatis-generator-core-1.3.1 .jar文件或者文件夹);(2)在generatorConfig .xml配置参数:location(连接数据的jar),数据源,表名,dao 层文件路径等;(3)执行command命令:“java -jarmybatis-generator-core-l .3.1.j ar -configfilegeneratorConfig.xml -overwrite".通过上述步骤即可完成dao层文件的生成,在此为了方便可以在解压后的文件夹下对command命令做成服务,在此命名为generator.bat。
第一章【思考题】1、请简述Spring框架的优点。
2、请简述什么是Spring的IoC和DI。
【答案】1、Spring框架的优点如下:(1)非侵入式设计:Spring是一种非侵入式(non-invasive)框架,它可以使应用程序代码对框架的依赖最小化。
(2)方便解耦、简化开发:Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护工作都交给Spring容器管理,大大的降低了组件之间的耦合性。
(3)支持AOP:Spring提供了对AOP的支持,它允许将一些通用任务,如安全、事务、日志等进行集中式处理,从而提高了程序的复用性。
(4)支持声明式事务处理:只需要通过配置就可以完成对事务的管理,而无需手动编程。
(5)方便程序的测试:Spring提供了对Junit4的支持,可以通过注解方便的测试Spring 程序。
(6)方便集成各种优秀框架:Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持。
(7)降低了Java EE API的使用难度:Spring对Java EE开发中非常难用的一些API (如:JDBC、JavaMail等),都提供了封装,使这些API应用难度大大降低。
2、IoC的全称是Inversion of Control,中文名称为控制反转。
控制反转就是指在使用Spring框架之后,对象的实例不再由调用者来创建,而是由Spring容器来创建,Spring 容器会负责控制程序之间的关系,而不是由调用者的程序代码直接控制。
这样,控制权由应用代码转移到了Spring容器,控制权发生了反转。
DI的全称是Dependency Injection,中文称之为依赖注入。
它与控制反转(IoC)的含义相同,只不过这两个称呼是从两个角度描述的同一个概念。
从Spring容器的角度来看,Spring容器负责将被依赖对象赋值给调用者的成员变量,这相当于为调用者注入了它依赖的实例,这就是Spring的依赖注入。
基于Hibernate框架的数据持久层的研究及其应用学专指导教师:2014年9月基于Hibernate框架的数据持久层的研究及其应用摘要在开发J2EE项目的过程中,数据持久层的设计往往是一个关键的问题。
众所周知,对象只能存储在内存中,但内存不能永久保存数据,如果要永久保存对象的状态,需要进行对象的持久化,即把对象存储到专门的数据存储库中,这就需要进行对象-关系的映射(Object/Relation Mapping,简称ORM)。
Hibernate是一个开放源代码的对象关系ORM映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
它利用反射的机制实现持久化一个对象的各种操作,保证了源码的简练和完全的面向对象风格,将持久层中的数据源管理和数据操作进行有效的分离,提高了系统的稳定性,改善了系统的性能。
本课题探讨了目前流行的Hibernate映射框架,结合图书管理系统的开发,提出了基于Hibernate的数据持久层解决方案,并给出具体实现。
根据系统实施效果,分析了该方案的优缺点并总结了一些开发方面的建议。
关键词:数据持久层,ORM,Hibernate,图书管理系统Researching Data Persistence LayerAnd Its Application Based On HibernateAbstractDuring J2EE project development process, data persistence layer design is often a key issue. As we all know, the object only in memory, while memory can not store data permanently, if we want to save the state of an object permanently, the object needs to be persistent, that is stored in an object into specialized data repository, which requires an object - mapping (Object / Relation Mapping, referred to as the ORM).Hibernate is a powerful tool for open source ORM, it has carried on the lightweight object to the JDBC encapsulation, using of reflection mechanism to achieve a variety of an object persistence operations at runtime, which ensure that code is concise and object-oriented completely, data management and its operation on the persistence layer can separate effectively, Using hibernate can improve the stability and performance of the system.This paper researches Hibernate mapping framework, combined with the development of books management system, the paper is proposed an solution of data persistence based on Hibernate, and gives concrete realization steps. According to the result of system implementation, I was analyzed the advantages and disadvantages of the Hibernate and summarized some development suggestions.Keywords: data persistence layer, ORM, Hibernate, Books management system目录1 前言 (1)2 Java应用分层框架 (2)2.1 应用程序的分层体系结构 (2)2.2 Java应用的持久化层 (3)2.3 软件的模型 (4)2.3.1 域对象的分类 (5)2.3.2 域对象之间的关系 (6)3 Java对象持久化技术概述 (7)3.1 Java对象持久化概念 (7)3.2 直接通过JDBC API来持久化对象 (8)3.3 ORM简介 (12)3.3.1 对象-关系映射的概念 (15)3.3.2 ORM中间件的使用 (16)3.4 对象的其他持久化模式 (17)3.4.1 主动域对象模式 (17)3.4.2 JDO模式 (19)3.4.3 CMP模式 (19)3.5 Hibernate 持久化框架简介 (20)3.5.1 Hibernate简介 (20)3.5.2 Hibernate原理 (21)3.5.3 Hibernate接口 (22)4 Hibernate在图书管理系统中的应用 (24)4.1 系统需求分析 (24)4.1.1 设计的目的及意义 (24)4.1.2 系统功能分析 (24)4.1.3 系统数据流图 (24)4.1.4 数据字典 (27)4.1.5 设计平台 (29)4.1.6 数据库表间关系设计 (30)4.2 系统概念和逻辑结构设计 (30)4.3 系统详细设计 (32)4.3.1 Hibernate实现系统中数据持久化操作 (32)4.3.2 系统各功能详细设计实现 (38)5 结论 (44)参考文献 (45)致谢 (46)1 前言在现今的企业级应用开发环境中,面向对象开发已成为主流。
SpringData与MyBatis的比较和选择在Java开发领域,SpringData和MyBatis都是非常受欢迎的持久化框架。
它们都有自己独特的特点和优势,但也存在一些不同之处。
本文将对这两个框架进行比较,帮助开发者选择适合自己项目需求的框架。
1. 简介SpringData是由Spring框架提供的一个用于简化数据库访问的基础架构。
它整合了现有的持久化框架(如JPA、Hibernate、MyBatis等),为开发者提供了一种统一的方式来操作数据库。
而MyBatis则是一个持久化框架,它通过SQL映射文件将Java对象与数据库表进行映射。
2. 功能特点2.1 SpringDataSpringData提供了一套丰富的API,支持多种数据库访问方式,包括关系型数据库、NoSQL数据库以及搜索引擎。
它具有自动生成SQL语句、分页查询、事务管理等功能,并提供了一些常用查询方法的实现,减少了开发者的工作量。
2.2 MyBatisMyBatis是一个轻量级的持久化框架,它与数据库之间的交互主要通过手写的SQL语句。
MyBatis的主要特点是灵活性和可控性,开发者可以根据需求自由编写SQL,优化查询性能。
此外,MyBatis还支持一级、二级缓存,提高了查询的效率。
3. 使用场景3.1 SpringDataSpringData适用于对数据库操作较为简单的场景,对于增删改查等基本操作,SpringData提供了一些默认实现,可以快速完成开发。
同时,SpringData也支持动态查询、排序、分页等高级查询功能,能够满足大部分常见的需求。
3.2 MyBatisMyBatis适用于对数据库操作较为复杂、SQL定制化要求较高的场景。
由于MyBatis将SQL与Java代码分离,开发者完全可以根据需求优化SQL语句,提高查询效率。
此外,MyBatis的一级、二级缓存也适用于对查询性能有较高要求的场景。
4. 性能比较4.1 SpringData由于SpringData是一个整合了多种持久化框架的库,它的性能往往受到具体框架的影响。
ibatis in Spring与Hibernate类似,ibatis也是一个ORM解决方案,不同的是两者各有侧重。
Hibernate提供了Java对象到数据库表之间的直接映射,开发者无需直接涉及数据库操作的实现细节,实现了一站式的ORM解决方案。
而ibatis则采取了另一种方式,即提供Java对象到SQL(面向参数和结果集)的映射实现,实际的数据库操作需要通过手动编写SQL实现。
在Java ORM世界中,很幸运,我们拥有了这两个互补的解决方案,从而使得开发过程更加轻松自如。
关于两者的对比,请参见笔者另一份文档:《ibatis开发指南》/ibatis_Guide.rar与Hibernate in Spring一节类似,这里我们重点探讨Spring框架下的ibatis应用,特别是在容器事务管理模式下的ibatis应用开发。
针对ibatis,Spring配置文件如下:Ibatis-Context.xml:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN""/dtd/spring-beans.dtd"><beans><bean id="dataSource"class="mons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName"><value>net.sourceforge.jtds.jdbc.Driver</value></property><property name="url"><value>jdbc:jtds:sqlserver://127.0.0.1:1433/Sample</value></property><property name="username"><value>test</value></property><property name="password"><value>changeit</value></property></bean><bean id="sqlMapClient"class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> SpringFrameWork Developer’s Guide Version 0.6October 8, 2004 So many open source projects. Why not Open your Documents? <property name="configLocation"><value>SqlMapConfig.xml</value></property></bean><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactio nManager"><property name="dataSource"><reflocal="dataSource"/></property></bean><bean id="userDAO" class="erDAO"><property name="dataSource"><ref local="dataSource" /></property><property name="sqlMapClient"><ref local="sqlMapClient" /></property></bean><bean id="userDAOProxy"class="org.springframework.transaction.interceptor.TransactionPro xyFactoryBean"><property name="transactionManager"><ref bean="transactionManager" /></property><property name="target"><ref local="userDAO" /></property><property name="transactionAttributes"><props><prop key="insert*">PROPAGATION_REQUIRED</prop><prop key="get*">PROPAGATION_REQUIRED,readOnly</prop></props></property></bean></beans>对比之前的JDBC和Hibernate配置,可以看到:1.sqlMapClient节点SpringFrameWork Developer’s Guide Version 0.6October 8, 2004 So many open source projects. Why not Open your Documents? 类似SessionFactory之与Hibernate,这里我们引入了针对ibatis SqlMap的SqlMapClientFactoryBean配置。
关于Mybatis持久层框架的应用研究作者:荣艳冬来源:《信息安全与技术》2015年第12期【摘要】数据库访问是软件开发中必不可少的技术环节,Java语言之所以能够在企业中占领非常重要的地位,这与其方便快捷和高可扩展性的数据库操作有很大关系。
论文主要讨论如何使用Mybatis建立持久层。
文中首先阐述了什么是持久层框架,然后从架构和应用流程两方面详细论述了Mybatis技术,最后分析了Mybatis存在的优势和劣势。
通过论述可以得出结论:Mybatis完全可以满足企业需求,企业需要在它的基础之上进行再次的封装,从而提高数据库访问编程效率和持久层的成熟度。
【关键词】 Mybatis;持久层;实体关系映射;框架Application Research of Mybatis Persistence Layer FrameworkRong Yan-dong(Inner Mongolia Business & Trade Vocational Colleage Inner MongoliaHohhot 010070)【 Abstract 】 Database access is an essential technical link of software development, Java language is able to occupy a very important position in the enterprise, which is convenient and highly scalable database operation has a great relationship. This paper mainly discusses how to use Mybatis to establish a persistent layer. This paper first describes what is persistence layer framework, and then discussed Mybatis technology from both architecture and application process in detail, and finally the advantages and disadvantages of Mybatis are analyzed. By discussing the following conclusions: Mybatis can meet the needs of the enterprise, the enterprise needs to carry on the repackaging based on it, so as to improve the efficiency of database access programming and the maturity of the persistence layer.【 Keywords 】 mybatis; persistence layer; object relational mapping; framework1 引言在企业项目开发中,数据库技术是最为基础的一项技术,Java之所以被企业广泛的应用,与其方便快捷的数据库操作技术有直接关系。
基于MyBatis和Spring的JavaEE数据持久层的研究与应用乔 岚(宁夏财经职业技术学院,宁夏 银川 750021)摘 要:在信息管理系统的设计初期,繁杂的增删查改操作占据了系统设计的大部分时间,使系统的开发周期延长。
笔者针对这一问题,设计了一种基于MyBatis、Sping和JAVA注解的数据统一提交组件,并介绍了其在企业办公OA系统中的应用。
框架使用了主流的MyBatis和Spring框架,大大简化了数据的增删查改操作,缩短了系统的开发周期,增加了系统的灵活性和可扩展性。
关键词:MyBatis;Spring;JAVA注解;数据持久层框架;ORM中图分类号:TP311.52 文献标识码:A 文章编号:1003-9767(2017)08-073-04Research and Application of JavaEE Data Persistence Layer based on MyBatisand SpringQiao Lan(Ningxia Finance & Economics Vocational College, Yinchuan Ningxia 750021, China) Abstract: In the early stage of design information management system, complex CRUD operations occupy most of the time the system design, the system development cycle of growth. Aiming at this problem, a design based on MyBatis, Sping and JAVA unified data annotation to components, and introduced its application in enterprise OA system. The framework uses the mainstream MyBatis and Spring framework, greatly simplifying the data additions and deletions, checking and modifying operations, shortening the development cycle of the system, and increasing the flexibility and scalability of the system.Key words: MyBatis; Spring; JAVA annotation; data persistence layer framework; ORM目前,基于B/S模式的三层或者多层的开发模式已成为了Web开发的主流方法,在系统的开发和使用过程中应用系统需要频繁对关系数据库中的记录进行增删改查操作,由于面向对象方法的普遍适用,在应用系统中数据表现为对象,在关系数据库中数据表现为带有关系的一条条记录,所以在插入时必须将对象转换为关系数据通过SQL插入到关系数据库中,而对于查询又必须将关系数据组装成对象供程序使用,如何避免这一繁琐的操作呢?关系-对象映射(ORM)的出现解决了这一问题,ORM在系统应用层和数据存储层之间建立一个一一对应的关系,把对关系数据的操作直接转化为对对象方法和属性的操作。
目前主流的ORM框架主要有TopLink、Hibernate、Apache OJB、EJB、MyBatis等。
但由于MyBatis自由灵活,因此,受到了很多用户的喜爱。
本文就基于MyBatis提出了一种数据统一提交组件。
1 MyBatis和Spring简介MyBatis是一个半自动化的ORM框架,主要作用是将POJO与数据库中的表对应,在应用开发中采用面向对象的方法操作数据库记录。
Mybatis的核心思想主要是在XML文件中配置好对关系数据库的所有操作的SQL语句,同时为每一条SQL语句配置一个ID,用来作为操作的标识符,此外还需要配置参数值以及返回值。
所以MyBatis是一种半自动化的ORM框架,对于熟练使用面向对象编程的程序开发人员来说,通过MyBatis来操作对象就可以对关系数据库进行操作,这一点和Hibernate等是一样的,但是MyBatis并不会在运行期自动生成SQL执行,具体的SQL需要开发人员自己编写,然后在程序中指定每个操作的操作标识符ID,接着通过操作ID在XML配置文件中找到相应的SQL语句,同时将需要执行的SQL语句中的所需的操作参数、返回的结作者简介:乔岚(1982-),女,宁夏银川人,本科,讲师。
研究方向:计算机应用。
果值或者结果字段通过配置文件一一映射到指定POJO中。
实际上,使用MyBatis作为项目的ORM框架,SQL语句的实际操作的控制权还是在程序开发人员手中,这样依赖系统的灵活性得到很大的提升,性能也得到了提高,但是却需要开发人员熟悉SQL语句,进行大量的配置,同时在数据库的移植上会比其他ORM框架复杂得多,尽管如此MyBatis 以其灵活的使用方式吸引了一大批使用者,使用MyBatis做ORM映射的系统有着更大的灵活性和自由空间。
Spring是一个轻量级的企业开源框架,主要是为了降低企业级应用程序设计的复杂性,Spring不针对某个层的解决方案,主要提供JAVA企业开发的各层解决方案。
传统的J2EE应用开发效率低,没有一个统一的技术来支撑各厂商的应用服务器,使得J2EE程序没有真正实现“一处开发,处处运行”的目的,而Spring作为一个应用中间件,其独立于各应用服务器之上,在某些情况下甚至可以脱离应用服务器而独立工作,因此,它成为了企业级应用开发的一站式解决方案,但是Spring并不能取代其他框架,它是其他框架的粘合剂,能让其他框架在一起很好地工作。
Spring框架轻量,最小可以打包在不到1 M的JAR包中发布,它具有控制反转(Ioc)、面向切面、可以当作容器使用等特点,还具有MVC、事务控制等功能,这些功能完全独立,开发者可以在使用过程中按需引入,使用十分灵活简单[1]。
2 MyBatis现存缺陷MyBatis灵活方便,SQL Maps组件让开发人员在脱离了JDBC API、JAVA代码以及SQL语句的情况下直接对对象和关系数据库进行读写操作。
但是,MyBatis也有自己的缺陷,具体如下。
(1)MyBatis以XML作为对象与数据库的中间配置文件,虽然可以提高系统的灵活性、降低程序的耦合性,但是随着对象数量的不断增长,程序员将编写大量的XML配置文件,尤其是开发大型商业系统时,如大型ERP系统,系统中包含的数据表达到几百张,如果手工为每一张表都编写相应的配置文件,其工作量可想而知[2]。
(2)在如今的系统开发中都采用分层思想,把系统分为DAO(数据访问)层、Service(业务逻辑)层、View(表示)层,而DAO层的大部分工作是对实体进行增删查改操作,由于MyBatise是将所有操作存放在XML配置文件中,于是在DAO层中操作每个实体时必须手工指定操作的ID,这样程序才能找到相应的SQL语句并执行,所以在系统实体较多的情况下DAO层的实现非常繁杂和重复,并且在使用Spring的情况下,Spring中DAO层Bean的配置文件也将变得繁琐复杂。
第一个缺陷的解决方法相对简单,可以自制相应的配置工具,每一个对象生成其相应的XML配置文件。
下面主要介绍对第二个缺陷的解决方案,并基于该方案设计一个数据统一提交组件。
3 组件设计鉴于以上的缺陷,本文提出了一种基于Spring和JAVA 注解方法的解决方案,首先看一下MyBatis的执行原理。
3.1 MyBatis执行原理如图1所示,使用更改时序图来形象说明MyBatis的工作原理,具体执行过程如下。
(1)应用程序调用相对应函数(一般和操作ID相同),传入指定参数。
(2)读取XML配置文件,被调用的程序通过通过Sq1Map-Config.xml以及操作对象名称找到对应的XML配置文件。
(3)程序将对象和配置文件载入内存中。
(4)查找到对应ID的SQL语句。
(5)带入参数,程序根据映射文件映射的关系将传入对象的属性替换成相对应的SQL所需要的参数值。
(6)执行SQL语句,将替换完参数的SQL语句通过驱动程序传入数据库管理系统中执行。
(7)返回结果,根据XML文件中对应操作ID配置的返回类型,将执行SQL语句后的结果返回给应用程序。
具体Update的执行过程如图1所示:图1 MyBatis基本执行原理3.2 设计思路了解了执行原理后,可以发现只要能让程序在运行中自动找到相对应的XML配置文件而不需要程序员手工指定就可以弥补上文中提到的第二个缺陷。
为了让JAVA应用程序在运行的过程中动态获取到这个对象实体在XML映射文件中配置的SQL语句,可以使用JAVA的反射功能和JAVA的注解功能来实现[3]。
事先需要在每个POJO对象类上增加一个自定义注解,注解上标明该对象所对应的XML映射文件名称、主键名称、不需要查询的列名称以及其他需要的信息,然后使用JAVA的反射功能,让应用程序在JAVA虚拟机运行的过程中获得该对象对应的XML文件名称,通过查找文件内容找到某次操作对应的SQL语句。
J2EE企业级应用程序开发一般都采取三层结构,即持久层、业务逻辑层、展现层,在应用程序中一般都会有持久层对应的数据接口DAO 和实现数据接口的DaoImpl ,业务逻辑层的接口Service 和实现该接口的ServiceImpl 以及展示层的Action 或者Servlet [4]。
应用系统中的每个业务模块几乎都需要这五个结构。
如果该应用系统比较大,或者每个业务模块之间存在着调用引用等耦合现象的话,在各层就需要进行大量的配置工作,尤其是在Action 和Service 层。
为了解决配置复杂的难题,在开发应用程序之前,就需要设计一个公用的底层数据接口Dao ,Dao 中几乎包含了对单表实体操作的所有功能,然后根据该Dao 配置好对应的XML 文件,接着设计一个Service 接口,该接口中使用Dao 完成绝大多数增删改查等工作。
然后在引用系统的展现层Action 中就只需要申明一个Service 就可以完成对单表的操作。
由于系统集成了MyBatis 和Spring ,所以Dao 的实现一般都要继承SqlMapClientDaoSupport [5]。
具体设计类图如图2所示:图2 组件类图(1)CommonDao :该接口中定义了一系列通用的操作实体类的方法,如Save 、Delete 、Update 、Get 、Find 、分页查询,通过SQL 语句查询或使用存储过程查询等。