封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、 Transaction、Query和Configuration。这5 个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。
Session接口:
Session接口负责执行被持久化对象的CRUD操作 (CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的 session不同于JSP应用中的HttpSession。这里当使用Session这个术语时,其实指的是Hibernate中的Session,而以后会将HttpSesion对象称为用户Session。
SessionFactory接口:
SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个 SessionFactory。
Configuration接口:
Configuration 接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。
Transaction接口:
Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。
Query和Criteria接口:
Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式[7] 。
- 7 -
第三节 业务流程及功能分析
首先是登陆页面,通过不同的账号区别不同身份的用户,对应不同身份用户的请求返回不同的管理页面。
学生通过自己对应的账号访问网站,进入页面后能够修改自己的资料,查看已选课程信息,包括班级人数,地点,老师,学院等信息,并且查看成绩。还能点击查看自己能够选择的课程,如果有需要选择的课程,可以点击进入并且选择课程。
教师则可以通过自己的账号登陆,查看自己所带班级的信息,与学生信息。并且给学生打分。
管理员则可以通过管理权限,按照需要创建学生资料,更改学生资料,或者删除学生账号,并且能够实现学生账号的找回等功能。
详细流程图如下:
- 8 -
学生管理登陆页面 学生管理页面 查查查更看看看改可已成资选选绩 料 课课程 程信息 查看并 选课 判定身份 用户不存在或输入错误错误 教管师理管员理页页面 面 查增查看加看班学学级生生信账资息 号 料 查给删修看指除改指定学学定学生 生班生资级打料 学分 生 图1.1系统流程图
- 9 -
第四节 数据库设计
一、数据库需求分析
学生管理系统的数据库功能主要体现对各种信息的提供,保存,查询和更新操作上,包括学生信息,管理员信息,教师信息,各个部分的数据有着内在的联系,通过前面对系统功能模块的分析,总结出该数据库需要满足以下信息需求:
学生信息包括数据项:学生姓名、密码、ID、地址、电话、学院等。 教师信息包括的数据项:员工名、密码、所属学院等。 管理员信息包括的数据项:管理员名和密码。
课程信息包括的数据项:教师ID、学生ID、最大人数、时间地点、课程ID等。 学生课程分数信息包括的数据项:学生ID、课程编号、课程名、打分时间、课程学分、课程分数。
二、 数据库结构设计
据以上对系统做的需求分析、模块设计,就可以作出能够满足用户需求的各种实体以及它们之间的关系,本关系根据上面的设计规划出的实体有管理员信息实体,教师实体,课程信息实体,学生实体。它们之间的大致关系如图:
学生实体 增删改查 教师实体 选课、退课、打分等 管理员实体 学生课程分数实体 课程实体
图2.2实体之间的E-R图
- 10 -
学生实体的属性应当包括学生的登录名、登录密码、学生学院、分数、地址、邮箱、电话等:
教师实体的属性应当包括教师的登录名、密码、学院。 管理员实体的属性应当包括管理员的登录名、密码。
课程实体的属性应当包括课程的教师编号(外键)、课程种类编号(外键)、课程现有人数、课程最大人数、时间、地点、所属学院、学分等。
学生课程分数信息实体的属性应当包括:学生ID、课程编号、课程名、打分时间、课程学分、课程分数。
三、 数据库逻辑结构的设计
数据库的概念结构设计以后,就可以将上面的数据库概念转化为某种数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。
本系统采用的数据库软件是Mysql。
首先打开Mysql,新建一个空的数据库,命名为StudentManager.mdb,然后通过表设计器创建本系统的几个表,下面分别介绍各个表的内容。
1. 学生表
表2.1 学生账号基本信息 类型 长度 Int 20 Varchar 20 Int 11 Varchar 20 double 15 表2.2 学生住址等信息 类型 长度 Int 11 Varchar 20 Varchar 20 int 20 名 id name Department_id Password score 允许为空 √ √ √ 名 id Address Email phone
允许为空 √ √ √ 2. 教师表
表2.3 教师账号等信息 类型 长度 int 11 - 11 -
名 Id 允许为空