基于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的数据持久层研究作者:陈小虎邓惠俊来源:《成都工业学院学报》2020年第02期摘要:为解决传统的Mybatis数据库持久层在灵活性,可扩展性上存在的问题,在深入研究mybatis的技术架构和应用流程的基础上,利用数据库连接池技术和基于映射表的设计方案提出了基于连接池的mybatis持久层优化技术,通过实验的方式证明了该优化方案的有效性和可行性。
在和c3p0、JDBC、tomcat-jdbc等中间件的性能对比实验证明,优化后的mybatis在持久层的读写性能有了10%以上的提升,有效地节约了服务器硬件成本,具有较高的实用性。
关键词:mybatis;持久层优化;高并发架构;读写性能中图分类号:TP311.1 文献标志码:A文章编号:2095-5383(2020)02-0032-04Abstract: ;In order to solve the problems of flexibility and extendibility of persistence layer of traditional mybatis database, the technical framework and application process of mybatis was studied in-depth, and on this basis, the mybatis persistence layer optimization technology based on connection pool technology was proposed by using the database connection pool technology and the design scheme based on mapping table. The effectiveness and feasibility of this optimization scheme have been proved through experiments. Compared with the performance of c3p0, JDBC, Tomcat JDBC and other middleware, it proves that the read-write performance of mybatis optimized in this paper has been improved by more than 10% in the persistence layer, which effectively saves the cost of server hardware and has high practicability.Keywords:mybatis; persistent layer optimization; high concurrency architecture; read and write performance在互联网企业级项目的開发中,数据库技术是最重要的一环,MySQL由于开源免费等优势,已经成为了企业项目的数据库首选,传统JAVA的企业框架通常采用基于JDBC的mybatis封装实现对数据库的优化。
关于Mybatis持久层框架的应用研究荣艳冬【摘要】数据库访问是软件开发中必不可少的技术环节,Java语言之所以能够在企业中占领非常重要的地位,这与其方便快捷和高可扩展性的数据库操作有很大关系.论文主要讨论如何使用Mybatis建立持久层.文中首先阐述了什么是持久层框架,然后从架构和应用流程两方面详细论述了Mybatis技术,最后分析了Mybatis存在的优势和劣势.通过论述可以得出结论:Mybatis完全可以满足企业需求,企业需要在它的基础之上进行再次的封装,从而提高数据库访问编程效率和持久层的成熟度.【期刊名称】《信息安全与技术》【年(卷),期】2015(006)012【总页数】3页(P86-88)【关键词】Mybatis;持久层;实体关系映射;框架【作者】荣艳冬【作者单位】内蒙古商贸职业学院内蒙古呼和浩特010070【正文语种】中文在企业项目开发中,数据库技术是最为基础的一项技术,Java之所以被企业广泛的应用,与其方便快捷的数据库操作技术有直接关系。
Java语言通过JDBC实现数据库连接和CRUD操作。
但是,如果直接通过JDBC技术进行数据库操作会产生大量重复的代码,降低编程效率,数据访问层维护困难等问题,所以在企业开发中经常将JDBC封装成操作方便的持久层框架,然后由程序进行调用。
本文主要讨论持久层框架Mybatis的具体应用。
2.1 什么是持久层数据持久化是指将数据永久的存储在计算机的硬盘中,而在软件开发中,通常这些数据被存储在数据库中。
持久层是专门负责数据持久化的逻辑层,提供对数据库的CRUD操作。
2.2 常见持久层框架很多企业为了简化数据库操作,将对数据库操作封装为软件框架,Java语言成熟的持久层框架非常多,而且这些框架大部分是开源的,其中非常典型的框架是Hibernate和Mybatis。
Hibernate框架无需用户编写SQL语句就可以实现ORM(实体关系映射),编程人员完全以面向对象的编程思想进行数据库操作,它提供较为完整的JDBC封装,但这也限制了用户灵活的运用SQL进行数据库的操作,如果用户需要进行复杂的查询操作,反而会给用户制造更大的麻烦,学习成本被大大提高。
JavaWeb开发中的最佳实践在当今日益发展的互联网世界,JavaWeb开发已经成为了开发者们不可或缺的技能之一。
作为一门广泛应用于企业级开发的编程语言,JavaWeb已经在企业应用开发中扮演着重要的角色。
在JavaWeb开发过程中,如何实现最佳实践成为了关注的焦点。
下面将从技术选型、代码实践、性能优化三个方面为大家分析JavaWeb开发中的最佳实践。
一、技术选型JavaWeb开发中,技术选型是至关重要的一个环节。
选择一些可靠、稳定的技术框架既可以提升开发效率,也可以保证系统的安全性和可扩展性。
以下是一些常用的JavaWeb技术框架:1. Spring框架:Spring是一个轻量级的Java开发框架,可以用来构建Web应用、RESTful API、企业级应用等。
它提供了IoC容器,用来管理对象之间的依赖关系,简化了代码。
Spring还提供了MVC框架,用于构建Web应用。
2. Hibernate框架:Hibernate是一个ORM框架,用于将Java对象映射到关系型数据库中。
它提供了一种简单的方式来执行增、删、改、查操作,减少了传统的JDBC编程的工作量。
3. MyBatis框架:MyBatis是一个持久层框架,也是一种ORM框架,用于将Java对象映射到关系型数据库中。
相比Hibernate,MyBatis更加灵活,支持自定义SQL语句和动态查询,可以更好地控制SQL执行。
4. Struts2框架:Struts2是一个MVC框架,用于构建Web应用。
它提供了分离前端和后端的解决方案,使开发人员可以专注于业务逻辑的实现,提高代码的可读性和可维护性。
二、代码实践在JavaWeb开发中,代码实践对于开发一个成功的Web应用来说是至关重要的。
以下提供一些代码实践的最佳实践:1. 符合MVC设计模式:MVC(Model-View-Controller)设计模式是一种常用的软件架构模式,用于分离应用程序的逻辑、数据和表示。
基于SSM框架的高校毕业论文管理系统的设计与实现一、本文概述随着信息技术的快速发展和普及,毕业论文作为高校教育的重要产出,其管理过程也日益复杂和繁重。
为了提高毕业论文管理的效率和质量,许多高校开始引入信息化管理系统。
本文旨在探讨基于SSM(Spring、SpringMVC、MyBatis)框架的高校毕业论文管理系统的设计与实现。
通过该系统,可以实现对毕业论文的选题、开题、中期检查、答辩、归档等全过程的有效管理,从而提高管理效率,保证毕业论文的质量。
本文将对毕业论文管理系统的需求进行分析,明确系统的功能和特点。
然后,基于SSM框架,对系统的整体架构进行设计,包括前后端分离的设计思想、数据库的设计等。
接着,详细阐述系统的各个功能模块的实现过程,包括用户管理、论文管理、流程管理、数据统计等。
在实现过程中,将介绍如何利用SSM框架的优势,提高系统的可扩展性、可维护性和性能。
本文还将对系统的安全性和稳定性进行详细的讨论,包括数据加密、权限控制、异常处理等方面的措施。
通过实际应用案例,展示系统的运行效果,并对系统的优缺点进行客观评价,为其他高校在毕业论文管理系统的建设提供参考和借鉴。
通过本文的研究和实践,旨在为高校毕业论文管理提供一种高效、便捷、安全的解决方案,推动高校教育信息化的发展。
二、相关技术介绍在本文中,我们将详细介绍实现高校毕业论文管理系统所依赖的主要技术,包括Spring框架、Spring MVC框架以及MyBatis框架,这三大框架的组合,我们称之为SSM(Spring+Spring MVC+MyBatis)框架。
Spring框架:Spring是一个开源的Java平台,提供了全面的编程和配置模型,用于现代Java应用程序的开发。
Spring框架的核心特性是依赖注入(DI)和面向切面编程(AOP),这两个特性使得应用程序的代码更加清晰、简洁,并且易于管理和维护。
在毕业论文管理系统中,Spring框架被用来管理各种Bean的生命周期,提供事务管理等功能。
JAVA EE 数据持久化含答案共179题,及格分324分您的姓名: [填空题] *_________________________________1. 开发Mybatis需要哪些环境添加Mybatis核心包(正确答案)配置mybatis配置文件mybatis-config.xml(正确答案)配置全局属性、数据源和实体包的别名(正确答案)导入Mapper.xml(正确答案)2. MyBatis对JDBC访问数据库的代码进行封装,从而大大简化了数据访问层的重复性代码,它是针对三层架构中()的解决方案 [单选题]表现层业务逻辑层持久化层(正确答案)数据库系统3. 关于log4j日志级别不包含以下那种 [单选题]update(正确答案)ERRORTRACEDEBUG4. 在MyBatis中,操作数据库的核心类是() [单选题]SqlSessionFactorySqlSession(正确答案)SessionSqlSessionFactoryBuilder5. 将以下划线命名的数据库列映射到Java对象的驼峰命名属性的配置是什么()[单选题]sqlSessionFactorypropertymapUnderscoreToCamelCase(正确答案)jdbcType6. 查询列前缀属性为 [单选题]propertyjavaTypeColumnPrefix(正确答案)ColumnBefore7. Mybaits的前身是() [单选题]IBATIS(正确答案)BeginClintonApache8. MyBatis中对结果集的配置使用的标签是以下() [单选题]<result><resultMap>(正确答案)<map><collection>9. 删除具有主从关系的主表记录时会出现删除异常,可以使用什么解决方式()设置从表的删除时规则为“置为NULL”(正确答案)设置主表的删除时规则为“置为NULL”设置从表的删除时规则为“置为级联”(正确答案)设置主表的删除时规则为“置为级联”10. 执行以下代码生成结果变量result代表的含义是什么intresult=userMapper.deleteUserById(id);() [单选题]删除消耗时间删除数据字段数量数据删除受影响的行数(正确答案)数据库剩余数据行数11. 在MyBatis数据库操作时,需要编写()和对应的xml文件,其中xml文件中编写的是对应Sql语句 [单选题]接口和抽象方法(正确答案)普通类和普通方法抽象类和抽象方法普通类和抽象方法12. @SelectKey(statement="select last_insert_id()",keyProperty="id",resultType=Long.class, before=false)注解的作用是什么() [单选题]返回值为最后一次插入数据的id值(正确答案)查询数据库中最大的id值查询当前数据库中id的数量查询数据库中是否存在相同id13. 以下哪项不属于xml映射文件标签 [单选题]selectresultmapparameter(正确答案)include14. MyBatis中用于表示返回结果类型的属性名称是 [单选题]resultType(正确答案)parameterTypecollectionreturnType15. MyBatis中用于表示输入类型的属性名称是 [单选题]resultTypeparameterType(正确答案)collectionreturnType16. 在 MyBatis 的配置文件中,通过()标签来设置实体类的别名 [单选题] propertiessettingstypeAliases(正确答案)dataSource17. 以下哪项不属于Mybatis全局配置文件中的标签 [单选题]propertiesdata(正确答案)pluginstypealiases18. 以下哪项不属于resultMap的自动映射级别 [单选题]NONEPARTIALFULLANY(正确答案)19. 以下说法错误的是 [单选题]Mapper接口方法名和mapper.xml中定义的每个sql的id可以不同(正确答案) Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType 的类型相同Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同Mapper.xml文件中的namespace即是mapper接口的类路径20. 用于取出由数据库内部生成主键的属性是() [单选题]keyPropertyuseGeneratedKeys(正确答案)keyColumndataBaseid21. 更新数据的Mapper.xml的标签是什么 [单选题]InsertSelectUpdate(正确答案)Delete22. 使用jdbc方式返回主键自增的值需要设置<insert>标签的什么属性() [单选题] idparameterTypekeyPropertyuseGeneratedKeys(正确答案)23. Mybatis实现DML操作的标签有哪些()<insert>(正确答案)<update>(正确答案)<delete>(正确答案)<provider>24. Mybatis接口方法中只有一个参数时,在映射器XML可用的参数是什么()[单选题]{param}{param0}{arg0}(正确答案){arg1}25. Mybatis接口绑定的方式有哪两种注解绑定(正确答案)直接绑定XML里面写SQL绑定(正确答案)XML里面写方法绑定26. 在mapper中如何传递多个参数使用占位符的思想(正确答案)使用数组传递使用map集合作为参数来装载(正确答案)无法实现27. 如何获取自动生成的(主)键值 [单选题]设置resultMap设置useGeneratedKeys设置keyProperty(正确答案)设置Property28. Mybatis中使用自动映射就是通过()让Mybatis自动将值匹配到对应字段上[单选题]类名属性名别名(正确答案)id29. Mapper接口的参数可以是简单类型(正确答案)pojo类型包装类型(正确答案)Map(正确答案)List集合(正确答案)30. 以下关于MyBatis集合类型参数的处理,说法错误的是() [单选题]当参数为Collection接口,转化为Map,Map的Key为collection当参数类型为List接口时,除了collection的值外,list作为key如果参数为数组,也会转化为Map,Map的key为array如果参数为数组,也会转化为Map,Map的key为list(正确答案)31. 以下哪项不属于MyBatis的API [单选题]SqlSessionFactoryBuilderSqlSessionFactoryExecutor(正确答案)SqlSession32. 在使用MyBatis的select标签查询客户(customer)的电话信息时,如果客户实体中电话的属性名为mobile,而客户表所对应的字段名为phone,则正确的写法是() [单选题]select phone from customerselect mobile from customerselect mobile as phone from customerselect phone as mobile from customer(正确答案)33. <collection>标签支持的属性值以及属性的作用和<association>标签完全相同,分别有哪些()resultType(正确答案)columnPrefix(正确答案)property(正确答案)javaType(正确答案)34. 子标签<association>配置已经有的结果集时使用哪个属性() [单选题] propertyjavaTyperesultType(正确答案)columnPrefix35. 以下不属于<association>标签嵌套查询常用属性的是() [单选题]property(正确答案)selectcolumnfetchType36. Mybatis中使用collection标签来解决一对多关联,哪项不属于其属性 [单选题] properties(正确答案)ofTypecolumnselect37. 在 MyBatis 中,配置结果映射时,使用()标签实现1对多的关联 [单选题] many-oneone-manyassociationcollection(正确答案)38. 在 MyBatis 中,配置结果映射时,使用()标签实现多对1的关联 [单选题] many-oneone-manyassociation(正确答案)collection39. .映射一对一使用的标签是 [单选题]many-oneone-manyassociation(正确答案)collection40. .映射一对多使用的标签是 [单选题]many-oneone-manyassociationcollection(正确答案)41. Mapper.xml中用于设置返回值类型和映射关系的是 [单选题]accociationselectresultMap(正确答案)constructor42. mybatis指定配置文件的根元素使用的是什么 [单选题]<sqlMapConfig><configration>(正确答案)<setting><environments>43. <foreach>标签可以实现对象遍历的用法,适用对象不包括下列哪一个() [单选题]数组MapListMath(正确答案)44. 以下属于choose标签内部标签的是when(正确答案)selectotherwise(正确答案)if45. 以下不属于Mybatis动态sql标签的是? [单选题]trimforeachsetthan(正确答案)46. XML映射文件中,除了常见的增删改查标签之外,还有哪些标签resultMap(正确答案)parameterMap(正确答案)include(正确答案)selectKey(正确答案)47. 以下哪个属性作用为:当trim元素包含内容时,会把内容中匹配的前缀字符串去掉 [单选题]prefixprefixOverrides(正确答案)suffixsuffixOverrides48. 以下哪项不属于Mybatis动态sql标签 [单选题]ifchoosewhenget(正确答案)49. 实现对象遍历标签是 [单选题]foreach(正确答案)ifchoosetrim50. 以下属于MyBatis动态标签的是foreach(正确答案)when(正确答案)set(正确答案)choose(正确答案)51. 在 MyBatis 动态 SQL 中,没有使用下列()标签 [单选题] for(正确答案)ifchoosewhere52. 在mybatis3动态SQL中,没有使用下列()标签 [单选题] for(正确答案)ifchoosewhere53. <foreach>标签包含以下哪些属性()collection(正确答案)item(正确答案)index(正确答案)separator(正确答案)54. 以下不属于foreach标签包含属性的是 [单选题] closeitemcollectionend(正确答案)55. 主要用于更新时的mybatis动态sql标签是 [单选题] Choose(when/otherwise)Set(正确答案)WhereForeach56. 想实现批量删除的动态sql的标记可选择 [单选题] Choose(when/otherwise)SetWhereForeach(正确答案)57. 动态SQL标签<choose>标签中最少可以有几个<when>标签() [单选题]1(正确答案)23以上都不对58. 动态SQL标签<choose>标签中关于<otherwise>标签描述正确的是() [单选题] <otherwise>标签可以有0个(正确答案)<otherwise>标签只能有1个<otherwise>标签可以有2个以上都不对59. 以下不属于Mybatis的动态标签的是() [单选题]<if><update>(正确答案)<choose><where>60. 动态SQL标签<if>判断String类型的字段是否为空字符串的正确用法是()[单选题]<if test="userName != null and userName != '' "></if>(正确答案)<if test="userName != null userName != '' "></if><if test="userName != null or userName != '' "></if><if test="userName != null || userName != '' "></if>61. 为实现批量输入和动态更新可以使用以下哪个动态SQL标签() [单选题]<foreach>(正确答案)<if><choose><set>62. 用foreach标签实现对象遍历,当有多个参数时,可使用如下哪个注解为参数进行指定名称 [单选题]@set@Map@Param(正确答案)@value63. 二级缓存的默认效果有哪些()映射语句文件中的所有select语句将会被缓存(正确答案)映射语句文件中所有的insert语句、update语句和delete语句会刷新缓存(正确答案)缓存永远不会被回收如果没有设置刷新时间间隔,缓存会随时刷新64. 在以下场景中,不推荐使用二级缓存的是() [单选题]以更新数据为主的应用中,查询业务较少(正确答案)以查询为主的应用中,尽可能少的更新操作查询业务绝大多数都是对单表进行操作的应用可以按业务划分对表进行分组时,关联表非常少65. 关于mybatis缓存的描述错误的是() [单选题]一般提到Mybatis缓存的时候,都是指二级缓存一级缓存默认会启用一级缓存不能控制二级缓存不能控制(正确答案)66. 一般提到Mybatis缓存的时候指的是() [单选题]二级缓存(正确答案)一级缓存本地缓存三级缓存67. 配置Mybatis Generator时,要求不会生成Examp相关的方法,需要设置targetRuntime为什么() [单选题]Mybatis3Simple(正确答案)Mybatis3Mybatis3x以上都不对68. 使用MyBatis Generator自动工具生成的文件不包含() [单选题] Entity(正确答案)DAO类SqlMap.xmlMapper XML69. 配置Mybatis Generator时,<table>标签可以配置几个() [单选题]0个1个或多个(正确答案)仅能设置1个必须设置多个70. MyBatis注解中怎么给参数一个名字() [单选题]@Param C11(正确答案)@SelectOptions@Results71. 配置Mybatis Generator时,要生成数据库内所有表<table>标签中的tableName 应该设置成什么() [单选题]!#%(正确答案)$72. 以下Mybatis核心接口中用于执行增删改查操作的是哪一个() [单选题] ParameterHandlerResultSetHandlerExecutor(正确答案)StatementHandler73. 创建日志插件时应该通过拦截哪一个接口来完成 [单选题] ParameterHandlerResultSetHandlerStatementHandlerExecutor(正确答案)74. Mybatis允许使用插件来拦截的核心接口有哪些()Executor(正确答案)ParameterHandler(正确答案)ResultSet75. 以下哪项是可能造成JavaBean中字段与数据库列无法映射的原因字段与数据库列名不一致(正确答案)没有对应的getter/setter方法(正确答案)未导入jar包项目搭建出错76. MyBatis中介绍了映射有哪些情况()自动映射(正确答案)简单映射(正确答案)嵌套子查询映射(正确答案)嵌套联合查询映射(正确答案)77. SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build (resourceAsStream);这行代码代码主要做了哪些事呢,以下说法错误的是 [单选题]主要就涉及到了三个类SqlSessionFactoryBuilder、XMLConfigBuilder、XPathParserBuild方法首先都是用XML配置文件构建一个XMLConfigBuilder类,XMLConfigBuilder通过parse方法返回一个Configuration配置类Configuration设置到SqlSessionFactory默认实现DefaultSqlSessionFactory的configuration属性并返回创建SqlSessionFactory对象是通过SqlSessionFactoryBuilder的build方法,他会返回它的默认实现类SqlSessionFactory(正确答案)78. 在MyBatis中,使用select映射查询含有部门详细信息的员工信息,下列关于返回类型的说法,正确的是() [单选题]只能是resultType可以是resultType或resultMap以上说法都不正确79. 以下不属于Mybatis优秀特性的是() [单选题]支持自定义SQL查询支持存储过程支持高级映射支持XML注解(正确答案)80. JDBC编程有哪些不足之处,Mybatis是如何解决这些问题的,描述正确的是()在SQLMapConfig.xml中配置数据连接池,使用数据库连接池管理数据库连接(正确答案)将SQL语句配置在mapper.xml文件中与java代码分离(正确答案)Mybatis自动将java对象映射到sql语句(正确答案)Mbatis自动将SQL执行结果映射到java对象(正确答案)81. 事务的特性包括原子性(正确答案)一致性(正确答案)隔离性(正确答案)持久性(正确答案)82. 以下双方属于多对多关系的是 [单选题]用户-角色(正确答案)用户-银行卡用户-手机号学生-语文成绩83. 在使用MyBatis的时候,除了可以使用@Param注解来实现多参数不同类型入参,还可以用()传递多个参数值 [单选题]用Map对象可以实现传递多参数值(正确答案)用List对象可以实现传递多参数值用数组的方式传递用Set集合的方式传递84. 不属于MyBatis二级缓存默认效果有哪些 [单选题]映射语句文件中的所有select语句会被缓存映射语句文件中的所有insert、update、delete语句会刷新缓存缓存会使用LRU算法收回未设置缓存时间间隔,缓存会以任意时间顺序刷新(正确答案)85. 关于MyBatis映射器,说法错误的是() [单选题]映射器定义了数据访问接口映射器是接口映射器中的方法是抽象方法,需要实现(正确答案)映射器类似于DAO接口,但仅需声明其中的方法,编程人员无须编码实现86. 以下哪项不属于MyBatis框架的优点 [单选题]易于上手和掌握接触sql与程序代码的耦合不支持级联更新(正确答案)提供xml标签,支持编写动态sql87. 以下属于MyBatis缓存级别的是一级缓存(正确答案)二级缓存(正确答案)三级缓存无缓存88. Mybatis的表关联的映射描述错误的是() [单选题]一对一关联一对多关联多对多关联以上都不对(正确答案)89. mapper.xml的SQL语句中的占位符${}和#{}描述错误的是() [单选题]一般会采用#{},#{}在mybatis中,最后会被解析为?,其实就是Jdbc的PreparedStatement中的?占位符,它有预编译的过程,可以防止SQL注入#{}中的变量名可以任意,如果入参类型是pojo,比如是Student类那么#{name}表示取入参对象Student中的name属性${}取对象的属性使用的是OGNL(Object Graph Navigation Language)表达式${}不会做类型解析,但不存在SQL注入的风险(正确答案)90. MyBatis是那一层的框架 [单选题]业务逻辑层表示层持久层(正确答案)数据库层91. 关于MyBatis中传递多参数的情况,如果参数封装成Java Bean,应该怎么获取属性值 [单选题]通过#{参数名.属性名}通过#{arg0}来获得通过#{arg1}来获得通过#{成员属性}来获得(正确答案)92. 关于MyBatis中传递多参数的情况,如果参数封装成了Student类,那么在Mapper.xml中获取数据,应该怎么操作 [单选题]条件获取数据可以通过#{属性名}来获得(正确答案)条件获取数据可以通过#{arg0}来获得条件获取数据可以通过#{arg1}来获得条件获取数据可以通过#{属性名}或者#{arg0}来获得93. 以下对MyBatis主配置文件描述错误的是() [单选题]它主要提供数据库连接信息引用sql映射文件在其中定义具体的sql映射信息(正确答案)在其中定义了影响MyBatis行为的设置及其相关的属性信息94. 什么是DAO模式 [单选题]数据库访问对象(正确答案)关系对象对象持久化业务逻辑处理95. 持久层设计要考虑的范畴有哪些数据存储逻辑分离(正确答案)数据访问底层实现的分离(正确答案)资源管理和调度的分离(正确答案)数据抽象(正确答案)96. MyBatis如何执行批处理 [单选题]使用BatchExecutor完成批处理(正确答案)使用SimpleExecutor完成批处理任一executor均可实现无法进行批处理97. 不同的XML映射文件,id是否可以重复 [单选题]任何情况都不能重复不管陪不配置namespace,id均不可以重复如果配置namespace,id可以重复(正确答案)以上均不对98. 映射器是 MyBatis 中最重要、最复杂的组件,它由一个接口和对应的 XML 文件(或注解)组成。
基于Spring与Mybatis的电商管理系统技术需求分析发布时间:2021-07-13T05:35:52.381Z 来源:《中国科技人才》2021年第11期作者:刘宇豪[导读] 近几年来,我国的经济实力与以往有极大的改变,中国所在地人均的可支配资金大幅度上升了,交易的手段也越发增多,同时人们对商品质量以及生活品质的观念改变,使得人们对商品需求日渐升高,在当今时代商品的种类各式各样,同时目前在中国的销售市场又十分庞大,如果需要做到每个品牌在各个地方都有覆盖到实体店是有些困难的,并且有些顾客需要购买的商品距离相对远或者数量不足等因素可能会导致顾客减少购物欲而打消购物念头,这样会降低国内市场发展路程,影响相对较大。
成都师范学院四川省成都市 610081摘要:越来越多的传统企业开始进军电子商务,建立线上商城,是社会科技进步的自然选择,也是传统企业发展的重要目标。
如今,线下市场将全面向线上市场发展,逐步推向电商发展模式。
电子商务是基于互联网技术的进步以及中国社会经济发展,才使得在国内地位的逐渐上升,对消费者的消费方式有着很重要的革命性变更,巩固了市场在中国发展过程中的地位,本文研究的电商管理系统基于Spring框架与Mybatis框架,以Java作为该系统的编程语言,还有MySQL数据库,同时涉及JSP相关技术。
相对而言整个的系统总体操作简单上手,便于人员进行维护,可以对系统的功能灵活运用。
关键词:Spring; Mybatis;电商管理系统1开发背景近几年来,我国的经济实力与以往有极大的改变,中国所在地人均的可支配资金大幅度上升了,交易的手段也越发增多,同时人们对商品质量以及生活品质的观念改变,使得人们对商品需求日渐升高,在当今时代商品的种类各式各样,同时目前在中国的销售市场又十分庞大,如果需要做到每个品牌在各个地方都有覆盖到实体店是有些困难的,并且有些顾客需要购买的商品距离相对远或者数量不足等因素可能会导致顾客减少购物欲而打消购物念头,这样会降低国内市场发展路程,影响相对较大。
《基于Hibernate和Spring的数据持久层设计与开发》软件工程课程设计目录中文摘要Abstract第一章引言 (2)1.1 课题背景 (2)1.2 设计意图 (2)1.3 设计概述 (3)1.4 论文组织 (4)第二章基础概念 (5)2.1 ORM (5)2.1.1 ORM概念 (5)2.1.2 ORM的好处 (5)2.2 Hibernate (6)2.2.1 JDBC和Hibernate (6)2.2.2 新技术—Hibernate (8)2.2.3 Hibernate特性 (9)2.3 Spring框架 (9)2.3.1 Spring特性 (9)2.3.2 Spring中的IOC (10)2.4 本章小结 (11)第三章设计方案和实现 (12)3.1 设计方案概述 (12)3.2 IDE开发工具 (12)3.3 构建持久层对象 (14)3.4 映射描述 (17)3.5 Hibernate语义 (21)3.6 整合 (22)3.6.1整合配置 (22)3.6.2数据访问 (25)3.6.3 原型机系统 (26)3.7 本章小结 (28)第四章结论 (29)致谢语 ......................................... 错误!未定义书签。
参考文献 ..................................... 错误!未定义书签。
第一章引言1.1课题背景在现今软件世界里,由于功能和数据量的增长,数据库扮演了越来越重要的作用,可以说基本上任何一个软件都不可能脱离数据库单独存在。
数据库技术的发展,已经成为先进信息技术的重要组成部分,是现代计算机信息系统和计算机应用系统的基础和核心。
数据库技术最初产生于20世纪60年代中期,根据数据模型的发展,可以划分为三个阶段:第一代的网状、层次数据库系统;第二代的关系数据库系统;第三代的以面向对象模型为主要特征的数据库系统。
基于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 语句查询或使用存储过程查询等。