搜档网
当前位置:搜档网 › 基于Android手机应用开发程序设计

基于Android手机应用开发程序设计

成都理工大学工程技术学院毕业论文

基于Android手机应用开发程序设计----学生系统

作者姓名:彭应智

专业名称:11级通信工程

指导教师:李湘文讲师

基于Android手机应用开发程序设计

摘要

本文研究分析了Android平台的系统架构和组件模型,接着解析了Android新技术HTML5+。在此基础上,基于Android平台设计和开发手机快捷学生信息查询软件。本系统界面友好、操作便捷,具有良好的可扩展性和可维护性;系统经过测试,可以稳定运行,能够满足手机用户的基本需求。

本系统采用C/S架构,使用Java搭建服务器,其中使用hibernate 构建持久层,使用FastJSON把对象编译成JSON数据,利用Servlet向客户端发送,使用阿里云数据库作为网络数据库。

移动端是使用新兴技术HTML5+进行书写。该技术使用HTML5+CSS+JS进行书写,通过HTML5+SDK编译可以同时生成Android平台APP和IOS平台APP。

MyStudentSystem/download.html 下载地址:

https://www.sodocs.net/doc/1d4131691.html,/

关键词:学生系统Android HTML5+

Abstract

Intelligent mobile phone with a step by step into the lives of ordinary people, it will become the main device to obtain information. Therefore, services of mobile phone will have great development space, fast query mobile phone software is one of them. The Android platform offers users very convenient and quick query function, which will provide quick query design and implementation of service provides a better platform. In addition, Android platform is basically free, so can effectively reduce the cost of software, finally let each user will be free to get information, but also contribute to the popularity of mobile phone quick query service.

This paper analyzes the system architecture and the component model of Android platform, and then analyze the new technology of Android HTML5+. On this basis, based on the Android platform design and development of mobile phone quick student information query system. The system has friendly interface, convenient operation, has good scalability and maintainability; system has been tested, can stable operation, to meet the basic needs of mobile phone users.

Keywords: Student system,Android,HTML5+

目录

摘要 ----------------------------------------------------------------------------------------------------- I Abstract ---------------------------------------------------------------------------------------------- II 目录 --------------------------------------------------------------------------------------------------- III 前言 ------------------------------------------------------------------------------------------------- - 1 -1 简介 ---------------------------------------------------------------------------------------------- - 2 -

1.1 系统简介 ------------------------------------------------------------------------------- - 2 -

1.2 安卓简介 ------------------------------------------------------------------------------- - 3 -

2 技术概述 ---------------------------------------------------------------------------------------- - 6 -

2.1 安卓端开发技术 --------------------------------------------------------------------- - 6 -

2.1.1 HTML5+ ------------------------------------------------------------------------ - 6 -

2.1.2 Mui ------------------------------------------------------------------------------- - 7 -

2.1.3 Ajax ------------------------------------------------------------------------------ - 8 -

2.1.4 JS --------------------------------------------------------------------------------- - 8 -

2.1.5 JSON --------------------------------------------------------------------------- - 10 -

2.2 Web服务器端开发技术 ----------------------------------------------------------- - 11 -

2.2.1 Servlet ------------------------------------------------------------------------- - 11 -

2.2.2 Hibernate ---------------------------------------------------------------------- - 12 -

2.2.3 Fastjson ------------------------------------------------------------------------ - 14 -

2.3 数据库技术 -------------------------------------------------------------------------- - 14 -

2.3.1 MySQL数据库-------------------------------------------------------------- - 14 -

2.3.2 SQL ---------------------------------------------------------------------------- - 15 -

3 学生系统分析与设计 ---------------------------------------------------------------------- - 16 -

3.1 需求分析 ----------------------------------------------------------------------------- - 16 -

3.1.1 目标 ------------------------------------------------------------------------- - 16 -

3.1.2 需求陈述 ------------------------------------------------------------------- - 16 -

3.1.3 ER图------------------------------------------------------------------------ - 16 -

3.1.4 数据字典 --------------------------------------------------------------------- - 7 -

3.2 数据库设计 ---------------------------------------------------------------------------- - 7 -

3.2.1 数据库需求分析 ------------------------------------------------------------- - 7 -

3.2.2 数据库设计图----------------------------------------------------------------- - 7 -

3.2.3 数据库逻辑结构设计 ------------------------------------------------------- - 8 -

4 程序设计 -------------------------------------------------------------------------------------- - 11 -

4.1 服务端设计 -------------------------------------------------------------------------- - 11 -

4.1.1目录结构---------------------------------------------------------------------- - 11 -

4.1.2模块设计---------------------------------------------------------------------- - 14 -

4.2 移动端设计 -------------------------------------------------------------------------- - 17 -

4.2.1 目录结构--------------------------------------------------------------------- - 17 -

4.2.2 登录模块设计--------------------------------------------------------------- - 18 -

4.2.3 设置模块设计--------------------------------------------------------------- - 19 -

4.2.4 主界面设计------------------------------------------------------------------ - 20 -

4.2.5 公告详情设计--------------------------------------------------------------- - 20 -

4.2.6 成绩查询设计--------------------------------------------------------------- - 20 -

4.2.7 图书查询设计--------------------------------------------------------------- - 21 -

4.2.8 图书详情设计--------------------------------------------------------------- - 22 -

4.2.9 快递模块设计--------------------------------------------------------------- - 24 -

4.2.10 个人信息设计 ------------------------------------------------------------- - 27 -

5 系统测试 -------------------------------------------------------------------------------------- - 28 -

5.1 系统测试的目标 -------------------------------------------------------------------- - 28 -总结 ------------------------------------------------------------------------------------------------- - 3 -致谢 ------------------------------------------------------------------------------------------------- - 4 -参考文献 ------------------------------------------------------------------------------------------- - 5 -附件1 数据字典 ------------------------------------------------------------------------------- - 6 -附件2 数据库设计 -------------------------------------------------------------------------- - 12 -附件3 系统测试结果 ----------------------------------------------------------------------- - 20 -

前言

当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,使得手机操作系统也出现了不同各类,现在的市场上主要有三个手机操作系统,Windows mobile,symbian,以及谷歌的Android操作系统,其中占有开放源代码优势的Android系统有最大的发展前景。

在学校绝大多数学生均拥有自己的手机,故而如果我们拿出手机即可查询学校与我们有关各种信息岂不快乎。为此笔者在此为大家提供一款方便快捷的查询软件是具有不错的意义的。可方便学生随时随地查看学校相关的各种信息,如:课程信息,成绩信息,图书信息,个人信息,快递信息等。

本文是说明一个以MYSQL数据库与J2EE搭建的服务器和以HTML5+为开发技术的移动端的综合查询服务移动APP。使用稳健的java企业级开发搭建服务器,快捷、稳定、安全。使用hibernate加快数据库查询速度,方便快捷。使用阿里巴巴公司的FastJSON进行快速的JSON编译。使用新兴技术HTML5+作为移动端开发技术,方便、快捷、开发成本低。使用Mui前端框架,实现统一、快捷、美观的应用界面搭建。

- 1 -

- 2 -

1 简介

1.1 系统简介

在学校,教务管理系统是大家常逛的学校网站之一,因为在这里有大家关心的成绩、选修课等相关信息。其次是学校咯大的图书馆,要找寻自己心仪的书,是比较花费时间,故而图书馆系统也是相对爱逛的系统之一,最后是学校快递方面是比较空白的,除了常逛BBS 或没事去去快递室的人员之外,学校快递尤其是EMS 快递的通知是极其不到位的。

而今,本人的学生系统移动客户端,是一个以学生为核心,满足学生在校的各种需求。如:成绩查询,图书查询,课程表查询,邮件查询,公告查看等。也就是说,本人将以上三大块进行了融合,产生出该设计的灵感。

经过分析得知,本APP 是一个需要联网,多个客户端共享数据的模式,所以我们需要一个统一的服务器来处理他们的请求,给予他们需要的数据和服务。在这里笔者选择使用我们的J2EE 技术来开发服务器,将各种数据封装成为对象便于操作和处理。服务器与客户端使用当下主流数据传输格式JSON ,这种格式的传输速度快,具有跨平台性、可读性。

因为本系统是一个网络应用,要使用网络来请求我们的服务器,服务器再对数据库进行操作。既在服务端对数据的相关管理操作,在移动端主要进行相关的查询。故而本系统结构模式如图1.1所示

本论文重点为移动APP 的开发,故服务器对数据库的操作不为本文内容,但因本系统涉及对数据的查询操作,所以本系统需要说明如何对数据库访问,并整合数据使用JSON 向移动APP 提供数据。

移动终端 服务器

数据库

图1.1 模式结构

在移动端使用HTML5+技术为核心,mui为控件框架。为用户在各个界面搭建统一的界面风格,舒适的使用环境。HTML5+,这是一个新兴技术,该技术既有开发简易、跨平台性,笔者使用该技术进行我们的开发。界面的样式使用mui 框架,统一规范的进行界面设计。本系统界面主打清爽、干净、简约的风格。

1.2 安卓简介

Android基本上就是一种嵌入式Linux系统再加上一些重要的手机应用开发软件,如果深入研究其系统架构,其整体自底向上由4个主要层次构成,包括Linux Kernel(Linux内核层)、Library(函数库)和Android Runtime(Android运行时库)、Application Framework(应用软件架构)、Application(应用程序),如图1.1所示。

图1.1 Android系统架构

(1)Linux Kernel(Linux内核层):Android基于Linux2.6提供核心系统服务,负责硬件的驱动程序、网络堆栈、电源、系统安全机制、进程管理以及内存管理等功能。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务,分层的好处就

- 3 -

是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。特别的是,这个内核操作系统并非GUN/Linux的,所以其系统库、系统初始化和编程接口都喝标准的Linux系统有所不同。它没有采用虚拟内存文件系统,而是采用YAFFS2文件系统。

(2)Library(函数库)和Android Runtime(Andriod运行时库):Library(函数库)由大多数开放源代码的函数库组成,包含一个C/C++库的集合,供Android系统的各个组件使用。这些功能通过Android的应用程序框架(Application Framework)展示给开发者,例如准C函数库Libc、OpenSSL、SQLite等;网页函数库WebKit负责Android网页浏览器的运行;媒体库基于PacketVideo的OpenCORE,这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG;界面管理,管理访问显示子系统和无缝组合多个应用程序的二维和三维图像层;LibWebCore,新式的Web浏览器引擎,驱动Android浏览器和内嵌的Web视图;SGL,基本的2D图形引擎;3D库,基于OpenGL ES1.0 APIs 的实现。所有应用程序都可以使用的强大而轻量级的关系数据库引擎。

Android Runtime(Android运行时库)是和Library(函数库)并行的,在此提供的Android特有的Java内核函数库与可转换的Java运行码Bytecode,为Android专属的Dalvik Executable(.dex)文件格式的dalvik虚拟机,可以通过Java语言编写Android应用程序,并在Android 平台上同时运行多个Java应用程序。Dalvik虚拟机依赖于Linux内核提供的基本功能,如线程和底层内存管理。Dalvik虚拟机可执行文件格式是.dex,dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。大多数虚拟机包括JVM都是基于栈的,而Dalvik 虚拟机基于寄存器的。

(3)Application Framework(应用软件架构):它是所有Android 重点应用程序Framwork API的总集合,主要的目的是让程序开发者可以更方便地使用这些常用的应用程序进行设计架构,以便更快速地开发

- 4 -

Android应用程序。而这些常见的API有显示功能,如消息方块、条列消息、按钮、内嵌式浏览器等;消息提供功能,如访问信息、分享信息;资源管理功能,如图形、地方化字符串、布局文件等;提供消息功能,主要用来显示警告消息、特别是当使用者操作错误时,等其它功能。

所有的应用程序其实是一组服务和系统,包括视图,丰富的、可扩展的视图集合,可用于构建一个应用程序。包括列表、网格、文本框、按钮,甚至是内嵌的网页浏览器。内容提供者,使应用程序能访问其它应用程序的数据,或者共享自己的数据;资源管理器,提供访问非代码资源,如本地化字符串、图像和布局文件;通知管理器,使所有的应用程序能够在状态栏显示自定义警告;活动管理器,管理应用程序生命周期,提供通用的导航回退功能。

(4)Application(应用程序):最上层的应用程序都是用Java语言开发的应用程序,例如Google Maps、即时通信工具、E_mail、浏览器、计算机、MP3播放器、通讯本等。

- 5 -

2 技术概述

从系统的体系结构上看,本学生系统是采用公共数据库,学生客户端(安卓客户端)的一种客户端安卓软件。整个学生系统主要由数据库服务器、Web服务器和安卓客户端三个部分组成。

相应地,本系统的实现技术主要包括浏览器端开发技术、Web服务器端技术、数据库服务器技术和安卓端开发技术等。

2.1 安卓端开发技术

安卓端开发技术中,本系统使用最新的开发技术HTML5+、Mui 前端框架、Ajax异步通讯、JS动态控制等

2.1.1 HTML5+

通过HTML5 开发移动App 时,会发现HTML5 很多能力不具备。为弥补HTML5 能力的不足,在W3C 组织,推出HTML5+。

HTML5+扩展了JavaScript 对象plus,使得js 可以调用各种浏览器无法实现或实现不佳的系统能力,设备能力如摄像头、陀螺仪、文件系统等,业务能力如上传下载、二维码、地图、支付、语音输入、消息推送等。

使用HTML5+开发的移动App 并非mobile web 页面。这是新手最容易混淆的地方。mobile web 的文件存放在web 服务器上,而移动App 的文件存放在手机本地,编写移动App的html、js、css 文件被打包到ipa 或apk 等原生安装包,在手机客户端运行。

HTML5+ 应用架构

- 6 -

图1.2 HTML5+应用框架

2.1.2 Mui

MUI(Mobile User Interface)是一套基于Html5的,遵循Html5+规范的,中国团队开发的,开源的(遵循MIT 条款),用于手机端界面开发的一套框架。

性能和体验的差距,一直是mobile app开发者放弃HTML5的首要原因。浏览器天生的切页白屏、不忍直视的转页动画、浮动元素的抖动、无法流畅下拉刷新等问题,这些都让HTML5开发者倍感挫败,尤其拿到Android低端机运行,摔手机的心都有;另一方面,浏览器默认控件样式又少又丑,制作一个漂亮的控件非常麻烦,也有一些制作简单的ui框架但性能低下。mui框架有效的解决了这些问题,这是一个可以方便开发出高性能App的框架,也是目前最接近原生App效果的框

架。

- 7 -

2.1.3 Ajax

AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。

通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

传统的网页(不使用AJAX)如果需要更新内容,必须重载整个网页页面。

Ajax 的核心是JavaScript 对象XmlHttpRequest。该对象在Internet Explorer 5 中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest 使您可以使用JavaScript 向服务器提出请求并处理响应,而不阻塞用户。

2.1.4 JS

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

在1995年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。

为了取得技术优势,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript同样可在浏览器上运行。为了统一规格,因为JavaScript 兼容于ECMA标准,因此也称为ECMAScript。

JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。

- 8 -

是一种解释性脚本语言(代码不进行预编译)。

主要用来向HTML(标准通用标记语言下的一个应用)页面添加交互行为。可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如Windows、Linux、Mac、Android、iOS等)。Javascript 脚本语言同其他语言一样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架。Javascript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。而变量提供存放信息的地方,表达式则可以完成较复杂的信息处理。

其用途有:

1.嵌入动态文本于HTML页面。

2.对浏览器事件做出响应。

3.读写HTML元素。

4.在数据被提交到服务器之前验证数据。

5.检测访客的浏览器信息。

6.控制cookies,包括创建和修改等。

7.基于Node.js技术进行服务器端编程。

JavaScript脚本语言具有以下特点:

(1)脚本语言。JavaScript是一种解释型的脚本语言,C、C++等语言先编译后执行,而JavaScript是在程序的运行过程中逐行进行解释。

(2)基于对象。JavaScript是一种基于对象的脚本语言,它不仅可以创建对象,也能使用现有的对象。

(3)简单。JavaScript语言中采用的是弱类型的变量类型,对使用的数据类型未做出严格的要求,是基于Java基本语句和控制的脚本语言,其设计简单紧凑。

(4)动态性。JavaScript是一种采用事件驱动的脚本语言,它不需要经过Web服务器就可以对用户的输入做出响应。在访问一个网页时,鼠标在网页中进行鼠标点击或上下移、窗口移动等操作JavaScript都可直接对这些事件给出相应的响应。

(5)跨平台性。JavaScript脚本语言不依赖于操作系统,仅需要浏览器

- 9 -

的支持。因此一个JavaScript脚本在编写后可以带到任意机器上使用,前提上机器上的浏览器支持JavaScript脚本语言,目前JavaScript已被大多数的浏览器所支持。

不同于服务器端脚本语言,例如PHP与ASP,JavaScript主要被作为客户端脚本语言在用户的浏览器上运行,不需要服务器的支持。所以在早期程序员比较青睐于JavaScript以减少对服务器的负担,而与此同时也带来另一个问题:安全性。

而随着服务器的强壮,虽然程序员更喜欢运行于服务端的脚本以保证安全,但JavaScript仍然以其跨平台、容易上手等优势大行其道。同时,有些特殊功能(如AJAX)必须依赖Javascript在客户端进行支持。随着引擎如V8和框架如Node.js的发展,及其事件驱动及异步IO等特性,JavaScript逐渐被用来编写服务器端程序。

2.1.5 JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python 等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(网络传输速度)。

JSON 结构有两种结构

json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构

1、对象:对象在js中表示为“{}”括起来的内容,数据结构为{key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为对象.key 获取属性值,这个属性值的类型可以是数字、字符串、数组、对象几种。

- 10 -

2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是数字、字符串、数组、对象几种。

经过对象、数组2种结构就可以组合成复杂的数据结构了。

2.2 Web服务器端开发技术

Web服务器端开发技术中,最关键的是访问数据库的动态网页技术,包括CGI、ASP、PHP和JSP等。

2.2.1 Servlet

一个Servlet 是在服务器上运行的一个小程序。这个词是在Java applet的环境中被创造的,Java applet 是一种当作单独文件跟网页一起发送的小程序,它一般用于在客户端运行,得到为用户进行运算或者根据用户互作用定位图形等服务。

服务器上是需要一些程序,常常是根据用户的输入来访问数据库的程序。这些一般是使用公共网关接口(Common Gateway Interface,CGI)应用程序完成的。然而,在服务器上运行Java,这种程序可使用Java 编程语言实现。在通信量大的服务器上,JavaServlet 的优点在于它们的执行速度更快于CGI 程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,服务器端进行处理请求的系统开销将明显降低。

实现过程:

1) 客户端发送请求至服务器端;

2) 服务器将请求信息发送至Servlet;

3) Servlet 生成响应页面并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;

4) 服务器将响应返回给客户端。

一个Servlet 就是Java 编程语言中的一个类,它被用来扩展服务

- 11 -

器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问的应用程序。虽然Servlet 可以对任何类型的请求产生响应,但通常只用来扩展Web 服务器的应用程序。

目前最新版本为 3.1。

其生命周期为:

1.客户端请求该Servlet;

2.加载Servlet 类到内存;

3.实例化、初始化该Servlet;

4.init() 初始化参数;

5.service()(doGet() 或者doPost());

6.destroy()。

2.2.2 Hibernate

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

Hibernate的核心接口一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。这6个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这6个核心接口分别加以介绍。

1、Session

Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP 应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。

- 12 -

2、SessionFactory

SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。

3、Transaction

Transaction 接口是一个可选的API,可以选择不使用这个接口,取而代之的是Hibernate 的设计者自己写的底层事务处理代码。Transaction 接口是对实际事务实现的一个抽象,这些实现包括JDBC 的事务、JTA 中的UserTransaction、甚至可以是CORBA 事务。之所以这样设计是能让开发者能够使用一个统一事务的操作界面,使得自己的项目可以在不同的环境和容器之间方便地移植。

4、Query

Query接口让你方便地对数据库及持久对象进行查询,它可以有两种表达方式:HQL语言或本地数据库的SQL语句。Query经常被用来绑定查询参数、限制查询记录数量,并最终执行查询操作。

5、Criteria

Criteria接口与Query接口非常类似,允许创建并执行面向对象的标准化查询。值得注意的是Criteria接口也是轻量级的,它不能在Session 之外使用。

6、Configuration

Configuration 接口的作用是对Hibernate 进行配置,以及对它进行启动。在Hibernate 的启动过程中,Configuration 类的实例首先定位映射文档的位置,读取这些配置,然后创建一个SessionFactory对象。虽然Configuration 接口在整个Hibernate 项目中只扮演着一个很小的角色,但它是启动hibernate 时所遇到的每一个对象。

- 13 -

Hibernate 中提供了两级Cache(高速缓冲存储器),第一级别的缓存是Session级别的缓存,它是属于事务范围的缓存。这一级别的缓存由hibernate管理的,一般情况下无需进行干预;第二级别的缓存是SessionFactory级别的缓存,它是属于进程范围或群集范围的缓存。这一级别的缓存可以进行配置和更改,并且可以动态加载和卸载。Hibernate还为查询结果提供了一个查询缓存,它依赖于第二级缓存。

2.2.3 Fastjson

Fastjson是一个Java语言编写的高性能功能完善的JSON库。具有高性能,支持标准,功能强大,无依赖,支持范围广,开源等特点。

fastjson采用独创的算法,将parse的速度提升到极致,超过所有json 库,包括曾经号称最快的jackson。并且还超越了google的二进制协议protocol buf。

Fastjson完全支持https://www.sodocs.net/doc/1d4131691.html,的标准,也是官方网站收录的参考实现之一。

支持各种JDK类型。包括基本类型、JavaBean、Collection、Map、Enum、泛型等。支持循环引用。

不需要例外额外的jar,能够直接跑在JDK上。

支持JDK 5、JDK 6、Android、阿里云手机等环境。

Apache License 2.0

代码托管在https://www.sodocs.net/doc/1d4131691.html,上,项目地址是

https://https://www.sodocs.net/doc/1d4131691.html,/AlibabaTech/fastjson

2.3 数据库技术

2.3.1 MySQL数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司

- 14 -

开发,目前属于Oracle 公司。MySQL 是最流行的关系型数据库管理系统,在WEB 应用方面MySQL 是最好的RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 所使用的SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL 作为网站数据库。由于其社区版的性能卓越,搭配PHP 和Apache 可组成良好的开发环境。

与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL 自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQ L是开放源码软件,因此可以大大降低总体拥有成本。Linux作为操作系统,Apache和Nginx作为Web 服务器,MySQL 作为数据库,PHP/Perl/Python作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统,被业界称为“LAMP“或“LNMP”组合。

2.3.2 SQL

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

- 15 -

相关主题