目录
摘要…………………………………………………………………………2
一、 系统分析……………………………………………………………………2
(一)传统系统分析…………………………………………………………2
(二)需求分析………………………………………………………………3
(1)学生管理…………………………………………………………3
(2)学生选课管理……………………………………………………3
(三)数据流图………………………………………………………………3
二、系统设计……………………………………………………………………4
(一)数据库设计……………………………………………………………4
(1)概念模型设计……………………………………………………4
(2)关系模式设计……………………………………………………4
(3)数据库的物理设计………………………………………………5
(二)前台程序设计…………………………………………………………5
(1)总体设计用例图…………………………………………………6
(2)部分运行实例图…………………………………………………7
三、系统实施……………………………………………………………………10
(1)数据库的建立…………………………………………………10
(2)显示页面程序源代码实例……………………………………11
参考文献…………………………………………………………………………32
学生选课管理系统
学生选课系统是一个学校学生管理中不可缺少的一部分,对于学校的决策者和管理者来说都至关重要,所以系统应该为用户提供充分的信息管理和方便的查询手段。但一直以来,人们使用人工的方式管理文件档案,这种管理方式存在着许多缺点:效率低,保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少困难。
本系统是采用jsp作为前台显示界面,Microsoft SQL Server 2000作为后台数据库平台,hibernate作为关系与对象模式的连接桥梁的基于B/S模式的学生选课系统。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。
本系统使用的Microsoft SQL Server2000作为后台的数据管理系统,而在前台使用J2EE组件。在这个组件中把所有和数据库有关的操作都封装了起来,提供了高效率的、海量数据的数据库操作方法,进一步提高了应用程序的性能。
本系统的功能操作针对不同用户角色分权限进行管理。
系统对学生角色提供的主要功能如下:个人信息管理(学号、姓名、性别、年龄、专业等)、选课管理。
本系统对管理员角色提供以下功能的操作:查看所有学生信息和课程的信息。
一、 系统分析
(一)传统系统分析
经过认真分析传统学生选课管理工作流程,可以发现管理模式存在如下问题:
1、由于信息比较多,人工操作加大了出错的几率,任何一个中间环节操作错误就会造成下游环节的不便。
2、工作效率低下,工作量很大。
3、对学生及选课信息的反复录入,造成大量的数据冗余及资源的浪费。
4、不利于信息的查询及错误的修改。
5、学生信息安全系数不高,容易出现信息的缺失。
(二)需求分析
学生选课管理的基本内容是:
1.学生信息管理 可进行学生信息的增加,学生信息的查询,学生信息修改和删除
(1) 学生信息的增加 对新生基本信息进行登记,包括学号、姓名、专业等信息。
(2) 学生信息的查询。管理员查询所有学生的基本信息
(3) 学生信息的修改。对学生信息可进行修改,学号不可以修改
(4) 学生信息的删除。管理员可以从学生列表进行删除
2. 学生选课信息管理
学生可以从课程列表中选择课程,删除已选课程
(三)数据流图
通过教师发布课程,学生增加选课
二、 系统设计
(一) 数据库设计
在细分析和系统总体设计的基础上,我们可以对整个学生选课管理系统进行详细设计。
(1)概念模型设计
最常用的表示概念性数据模型的方法是实体-联系方法。这种方法用E-R图描述现实世界中的实体。而不涉及这些实体在系统中的实现方法,该方法又称为E-R模型。
(2)关系描述的设计
根据以上各实体图和学生成绩管理的E-R图,经过转化,可以导出各个关系。
管理员信息(用户名,密码)
学生(学号,学生姓名,密码,性别,年龄,专业)
课程(课程编号,课程名,学分)
学生选课(学号,课程编号,成绩)
得出以上关系后,根据关系数据库的理论要求,需要对所有关系进行关系规范化,至少要求各个关系达到第三范式的要求。按照第三范式的要求对比以上各个关系,在所有关系中都不存在非主属性对关键字的部分依赖,又满足第三范式。
(3)数据库的物理设计
关系图
根据关系描述及其他数据库的逻辑设计可得到数据库关系图,如下
(二) 程序设计
前台显示界面采用jsp设计,数据库连接采用hibernate,总体采用struts2框架,java作为后台语言。
(1)总体设计用例图
接上图
(2)部分运行示例图
1、登陆界面,管理员和学生都可以输入进行登录,登陆界面如图1、图2
图1
(一) 图2
2、管理员(admin)登录成功后显示其他管理员的信息,可进行管理员的删除添加,如图3
图3
3、点击“删除”即可删除管理员信息,然后再返回本页面,在此模块还可选查询学生列表,查询课程列表,添加管理员,返回主页等功能,如图4
图4
4、点击”添加管理员”即可进入此界面,在此界面可以添加管理员信息,点击“提交”后系统将用户输入的信息录入数据库3,如图4
图5
5、在图3基础上点击“学生列表”即可进入此页面,显示所有学生的信息,如图6
图6
6、在图6基础上点击“删除”即可删除学生信息,如图7
图7
7、在图2基础上点击“课程列表”即可进入此页面,如图8
图8
三、 系统实施
(1)数据库的建立
数据库设计语句
--create database Data
--use Data
create table manger (id int ,username varchar(10) , password varchar(20))
create table student (sno char(10) , sname varchar(10) , password varchar(20) , ssex char(2) , sage int , sdept varchar(20) ,
constraint s1 primary key (sno) ,
constraint s2 check(ssex in ('男','女') ) )
create table course (cno char(4) , cname varchar(20) , credit int ,
constraint c1 primary key (cno))
create table studentcourse(sno char(10) , cno char(4) , score int ,
constraint cs1 primary key(sno , cno) ,
constraint cs2 foreign key(sno) references student(sno) ,
constraint cs3 foreign key(cno) references course(cno) )
存储过程:
CREATE PROC GetManger
--@username varchar(20) OUTPUT,
--@password varchar(20) OUTPUT -- 要输出的参数
AS
BEGIN
-- 将uName的值赋给 @ostrUserName 变量,即要输出的参数
SELECT username, password FROM manger where username <> 'admin'
END
GO
(2)程序源代码示例
(1)页面显示示例
mangerlogin.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'mangerlogin.jsp' starting pagetitle>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
head>
<body>
<a href="index.jsp">主页》a><hr>
<center>
<form action="mangerlogin.action" method="post">
管理员姓名:<input type="text" name="username" id="username">input><br/>
密 码:<input type="password" name="password" id="password">input><br/>
<input type="submit" name="submit" value="提交">input>
<input type="reset" name="reset" value="重置">input>
form>
center>
body>
html>
Mangerlist.jsp
<%@ page language="java" import="java.util.*,com.xg072.lele.help.*,com.xg072.lele.domain.*,com.xg072.lele.strutsaction.*,com.opensymphony.xwork2.ActionContext;" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'mangerlist.jsp' starting pagetitle>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
head>
<body>
<a>admin:a><br>
<a href="index.jsp">主页》a>
<a href="addmanger.jsp">添加管理员》a>
<a href="studentlist.jsp">学生列表》a>
<a href="courselist.jsp">课程列表》a>
管理员列表:<hr>
<center>
<table border="1">
<tr bgcolor="grey"><td>管理员姓名td><td>管理员密码td><td>删除td>tr>
<%
ListManger listManger = new ListManger();
listManger.list(request , out);
%>
table>
center>
body>
html>
Regist.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'regist.jsp' starting pagetitle>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
head>
<body>
<a href="index.jsp">主页》a>
<a href="studentlogin.jsp">学生登录》a><hr/>
<center>
<form action="regist.action" method="post">
姓名:<input type="text" name="sname">input><br/><br/>
学号:<input type="text" name="sno">input><br/><br/>
密码:<input type="password" name="password">input><br/><br/>
性别:<input type="text" name="ssex">input><br/><br/>
年龄:<input type="text" name="sage">input><br/><br/>
系名:<input type="text" name="sdept">input><br/><br/>
<input type="submit" name="submit" value="提交">
<input type="reset" name="reset" value="重置">
form>
center>
body>
html>
(2)hibernate数据库连接配置文件示例
hibernate.cfg.xml
xml version='1.0' encoding='UTF-8'?>
DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="dialect">
org.hibernate.dialect.SQLServerDialect
property>
<property name="connection.url">jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=Dataproperty>
<property name="connection.username">saproperty>
<property name="connection.password">saproperty>
<property name="connection.driver_class">
com.microsoft.jdbc.sqlserver.SQLServerDriver
property>
<property name="myeclipse.connection.profile">
com.microsoft.jdbc.sqlserver.SQLServerDriver
property>
<mapping resource="com/xg072/lele/domain/Studentcourse.hbm.xml" />
<mapping resource="com/xg072/lele/domain/Student.hbm.xml" />
<mapping resource="com/xg072/lele/domain/Manger.hbm.xml" />
<mapping resource="com/xg072/lele/domain/Course.hbm.xml" />
session-factory>
hibernate-configuration>
Student.hbm.xml
xml version="1.0" encoding="utf-8"?>
DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.xg072.lele.domain.Student" table="student" schema="dbo" catalog="Data">
<id name="sno" type="java.lang.String">
<column name="sno" length="10" />
<generator class="assigned" />
id>
<property name="sname" type="java.lang.String">
<column name="sname" length="10" />
property>
<property name="password" type="java.lang.String">
<column name="password" length="20" />
property>
<property name="ssex" type="java.lang.String">
<column name="ssex" length="2" />
property>
<property name="sage" type="java.lang.Integer">
<column name="sage" />
property>
<property name="sdept" type="java.lang.String">
<column name="sdept" length="20" />
property>
<set name="studentcourses" inverse="true" cascade="all">
<key>
<column name="sno" length="10" not-null="true" />
key>
<one-to-many class="com.xg072.lele.domain.Studentcourse" />
set>
class>
hibernate-mapping>
Studentcourse.hbm.xml
xml version="1.0" encoding="utf-8"?>
DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.xg072.lele.domain.Studentcourse" table="studentcourse" schema="dbo" catalog="Data">
<composite-id name="id" class="com.xg072.lele.domain.StudentcourseId">
<key-many-to-one name="student" class="com.xg072.lele.domain.Student">
<column name="sno" length="10" />
key-many-to-one>
<key-many-to-one name="course" class="com.xg072.lele.domain.Course">
<column name="cno" length="4" />
key-many-to-one>
composite-id>
<property name="score" type="java.lang.Integer">
<column name="score" />
property>
class>
hibernate-mapping>
(3)实体类示例
Mnger.Java
package com.xg072.lele.domain;
/**
* Manger entity. @author MyEclipse Persistence Tools
*/
@SuppressWarnings("serial")
public class Manger implements java.io.Serializable {
// Fields
private String username;
private String password;
// Constructors
/** default constructor */
public Manger() {
}
public Manger(String username, String password) {
super();
this.username = username;
this.password = password;
}
public String getUsername() {
return this.username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
Studentcourse.jsp
package com.xg072.lele.domain;
@SuppressWarnings("serial")
public class Studentcourse implements java.io.Serializable {
// Fields
private StudentcourseId id;
private Integer score;
// Constructors
/** default constructor */
public Studentcourse() {
}
/** minimal constructor */
public Studentcourse(StudentcourseId id) {
this.id = id;
}
/** full constructor */
public Studentcourse(StudentcourseId id, Integer score) {
this.id = id;
this.score = score;
}
// Property accessors
public StudentcourseId getId() {
return this.id;
}
public void setId(StudentcourseId id) {
this.id = id;
}
public Integer getScore() {
return this.score;
}
public void setScore(Integer score) {
this.score = score;
}
}
}
(4)程序接口类示例
DaoFactory.java
package com.xg072.lele.dao;
import com.xg072.lele.daoImpl.CourseDAOImpl;
import com.xg072.lele.daoImpl.MangerDAOImpl;
import com.xg072.lele.daoImpl.StudentDAOImlp;
import com.xg072.lele.daoImpl.StudentcourseDAOImpl;
public class DaoFactory {
private StudentDAO studentDao = null;
private MangerDAO mangerDao = null;
private CourseDAO courseDao = null;
private StudentcourseDAO studentcourseDao = null ;
private static DaoFactory instance = new DaoFactory();
private DaoFactory() {
this.studentDao = new StudentDAOImlp();
this.mangerDao = new MangerDAOImpl();
this.courseDao = new CourseDAOImpl();
this.studentcourseDao = new StudentcourseDAOImpl();
}
// 由于类加载时,立即创建了instance,故为线程安全
public static DaoFactory getInstance() {
return instance;
}
public StudentDAO getStudentDao() {
return studentDao;
}
public CourseDAO getCourseDao() {
return courseDao;
}
public StudentcourseDAO getStudentcourseDao(){
return studentcourseDao ;
}
public MangerDAO getMangerDAO(){
return mangerDao;
}
}
mangerDao.Java
package com.xg072.lele.dao;
import java.util.List;
import com.xg072.lele.domain.Manger;
public interface MangerDAO {
public Manger selectManger(String username);
public void addManger(Manger manger);
public void deleteManger(Manger manger);
public List
}
(5)程序接口的实现类示例
mangerDaoImpl.Java
package com.xg072.lele.daoImpl;
import java.util.List;
import org.hibernate.*;
import com.xg072.lele.dao.HibernateSessionFactory;
import com.xg072.lele.dao.MangerDAO;
import com.xg072.lele.domain.Manger;
public class MangerDAOImpl implements MangerDAO {
public void addManger(Manger manger) {
Session session = HibernateSessionFactory.getSession();
Transaction transaction = session.beginTransaction();
session.save(manger);
transaction.commit();
HibernateSessionFactory.closeSession();
}
public void deleteManger(Manger manger) {
Session session = HibernateSessionFactory.getSession();
Transaction transaction = session.beginTransaction();
session.delete(manger);
transaction.commit();
HibernateSessionFactory.closeSession();
}
public Manger selectManger(String username) {
Manger manger = null;
Session session = HibernateSessionFactory.getSession();
Transaction transaction = session.beginTransaction();
manger = (Manger) session.load(Manger.class, username);
//测试是否取得值,还有就是防止没有真正执行查询就关闭session
System.out.println("selectManger:"+manger);
transaction.commit();
HibernateSessionFactory.closeSession();
return manger;
}
public List
Session session = HibernateSessionFactory.getSession();
Transaction transaction = session.beginTransaction();
Query query = session.getNamedQuery("GetManger");
List
transaction.commit();
for (Manger manger : list){
System.out.println(manger.getUsername()+manger.getPassword());
}
HibernateSessionFactory.closeSession();
return list ;
}
}
(6)struts 2配置文件(struts.xml)
xml version="1.0" encoding="UTF-8" ?>
DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="com.xg072.lele.strutsaction" extends="struts-default">
<action name="studentlogin" class="com.xg072.lele.strutsaction.StudentLoginAction">
<result name="success">/studentcourse.jspresult>
<result name="fail">/studentlogin.jspresult>
<result name="input">/studentlogin.jspresult>
action>
<action name="chosecourse" class="com.xg072.lele.strutsaction.Chosecourse">
<result name="success">/studentcourse.jspresult>
<result name="input">/chosecourse.jspresult>
action>
<action name="deletestudentcourse" class="com.xg072.lele.strutsaction.DeleteStudentcourse">
<result name="success">/studentcourse.jspresult>
<result name="input">/studentcourse.jspresult>
action>
<action name="regist" class="com.xg072.lele.strutsaction.Regist">
<result name="success">/studentlogin.jspresult>
<result name="input">/regist.jspresult>
action>
<action name="mangerlogin" class="com.xg072.lele.strutsaction.MangerloginAction">
<result name="success">/mangerloginsuccess.jspresult>
<result name="mangerlist">/mangerlist.jspresult>
<result name="input">/mangerlogin.jspresult>
action>
<action name="deletemanger" class="com.xg072.lele.strutsaction.DeleteMangerAction">
<result name="success">/mangerlist.jspresult>
<result name="input">/mangerlist.jspresult>
action>
<action name="deletestudent" class="com.xg072.lele.strutsaction.DeleteStudentAction">
<result name="success">/studentlist.jspresult>
<result name="input">/studentlist.jspresult>
action>
<action name="deletecourse" class="com.xg072.lele.strutsaction.DeleteCourseAction">
<result name="success">/courselist.jspresult>
<result name="input">/courselist.jspresult>
action>
package>
struts>
(7)struts 2的action处理类示例(chosecourse.Java)
package com.xg072.lele.strutsaction;
import javax.servlet.http.HttpServletRequest;
import com.opensymphony.xwork2.ActionSupport;
import com.xg072.lele.dao.DaoFactory;
import com.xg072.lele.domain.Course;
import com.xg072.lele.domain.Student;
import com.xg072.lele.domain.Studentcourse;
import com.xg072.lele.domain.StudentcourseId;
public class Chosecourse extends ActionSupport{
private String cno ;
private String sno ;
private HttpServletRequest request ;
public HttpServletRequest getRequest() {
return request;
}
public void setRequest(HttpServletRequest request) {
this.request = request;
}
public String getCno() {
return cno;
}
public void setCno(String cno) {
this.cno = cno;
}
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String execute() throws Exception{
//测试获得cno和sno
// System.out.print("到这了Chosecourse:");
// System.out.print(cno);
// System.out.print(sno);
try {
Student student = DaoFactory.getInstance().getStudentDao().selectStudentBySno(this.getSno());
Course course = DaoFactory.getInstance().getCourseDao().selectCourseByCno(this.getCno());
StudentcourseId studentcourseId = new StudentcourseId(student , course);
//测试查询成功
// System.out.print(student);
// System.out.print(course);
Studentcourse studentcourse = DaoFactory.getInstance().getStudentcourseDao().selectStudentcourseByStudentcourseId(studentcourseId);
if(!(studentcourse.equals(null))){
studentcourse = new Studentcourse(studentcourseId,null);
DaoFactory.getInstance().getStudentcourseDao().addStudentcourse(studentcourse);
return SUCCESS ;
}else{
return INPUT;
}
} catch (Exception e) {
// TODO Auto-generated catch block
return INPUT ;
}
}
}
(8)分页显示的帮助类(Listmanger.Java)
package com.xg072.lele.help;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspWriter;
import com.xg072.lele.dao.DaoFactory;
import com.xg072.lele.dao.MangerDAO;
import com.xg072.lele.domain.Manger;
public class ListManger {
private MangerDAO mangerDao ;
public MangerDAO getDao(){
return DaoFactory.getInstance().getMangerDAO();
}
public void list(HttpServletRequest request , JspWriter out)throws Exception{
//page为从页面中取得的值
String tmp = (String) request.getParameter("page");
//首次打开page为空
if(tmp != null){
//调用listpage
listpage(request, out , Integer.parseInt(tmp));
}else{
listpage(request, out , 1);
}
}
@SuppressWarnings("unchecked")
private void listpage(HttpServletRequest request, JspWriter out,
int page) throws Exception {
String username = "" ,password = "";
mangerDao = this.getDao();
String sno = request.getParameter("sno");
//声明list对象,取得课程列表为其赋值
List list = (List) mangerDao.listManger();
if(list == null){
out.print("尚无管理员!");
return ;
}
int total = list.size();
int count = 0 ;
Iterator it = list.iterator();
Manger manger ;
//每页显示5条记录
while(count < (page - 1) * 5 && it.hasNext()){
it.next() ;
count++ ;
}
count = 0 ;
while(it.hasNext() && count < 5){
manger = (Manger) it.next();
username = manger.getUsername();
password = manger.getPassword();
//在页面输出信息
out.print(" out.print(" "); " + username + " " + password + " ");
删除
count++ ;
// //测试是否获得username值
// System.out.println("ListManger:"+username);
}
//添加翻页连接
out.print(" out.print(" if((page - 1) > 0){ //如果是首页,则不显示“上一页” out.print(" }else { out.print(" } for(int i = 0 ; i < 5 && page < total && page > 0 ;i++ ) out.print(" if((page + 1) < total){ //如果是末页,则不显示“下一页” out.print(" }else { out.print(" } out.print(" "); ");
");
");
上一页 ");
上一页 ");
下一页 下一页 ");
}
}
(9)hibernate帮助类()
package com.xg072.lele.domain;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
public class HibernateSessionFactory {
private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
private static final ThreadLocal
private static Configuration configuration = new Configuration();
private static org.hibernate.SessionFactory sessionFactory;
private static String configFile = CONFIG_FILE_LOCATION;
static {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err
.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
private HibernateSessionFactory() {
}
public static Session getSession() throws HibernateException {
Session session = (Session) threadLocal.get();
if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: null;
threadLocal.set(session);
}
return session;
}
public static void rebuildSessionFactory() {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err
.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);
if (session != null) {
session.close();
}
}
public static org.hibernate.SessionFactory getSessionFactory() {
return sessionFactory;
}
public static void setConfigFile(String configFile) {
HibernateSessionFactory.configFile = configFile;
sessionFactory = null;
}
public static Configuration getConfiguration() {
return configuration;
}
}
参考文献
1、萨师煊、王珊著《数据库系统概论》高等教育出版社 2003
2、汤志伟主编《信息系统开发与管理》 科学出版社2008
3、乔东亮 黄孝章 主编《管理信息系统》 高等教育出版社 2007
4、Diane Zak著《Programming with Microsoft Visual Studio 2005》电子工业出版社 2005