Struts+Spring+Hibernate开发实例Word格式.docx
- 文档编号:3649119
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:34
- 大小:228.36KB
Struts+Spring+Hibernate开发实例Word格式.docx
《Struts+Spring+Hibernate开发实例Word格式.docx》由会员分享,可在线阅读,更多相关《Struts+Spring+Hibernate开发实例Word格式.docx(34页珍藏版)》请在冰点文库上搜索。
系统以班级为核心,一门课程可以对应多个班级,一名教师也可以带不同的班级,学生可以选报不同课程所对应的班级,班级自身有目前人数,和最大人数,以及上课时间,上课地点的属性。
学生在选报班级之后,班级的人数会自动加一,直到等于最大人数时,其他学生将会有人数已满的错误提示。
同理如果学生选择了同一课程的不同班级,也将收到错误提示。
学生有密码,系别,学分,地址,电话等属性。
教师在系统中主要负责成绩发布,教师可以对其所带的班级的学生的成绩修改,系统会以成绩是否大于等于60来判断学生是否通过考试,如果通过会将该课程的学分累加到学生学分,同样如果教师二次修改了成绩,而且小于60,系统会在学生学分上扣掉该课程的分数。
课程在系统中具体体现为班级,自身带有学分属性。
<
/S<
body>
系有编号,名称的属性,同时可以作为联系教师,课程,学生的桥梁。
功能模块
●
身份验证模块:
根据用户名,密码,用户类别转发用户到不同的模块。
学生模块:
查看课程,查看班级,选报课程,查看己选课程,成绩查询。
教师模块:
录入成绩
管理员模块:
对学生,教师,课程,班级,系增,删,查,改。
三具体实践
代码下载
1对象关系映射:
首先,将库表映射为数据模型(SQL在源码中查看),转换后的数据模型如下图:
由此我们可以看出一下关联关系:
1Students和Contact(联系方式)一对一关系。
2Students和History(选课历史)一对多关系
3Students和Classes多对多关系。
4Classes和Classes_info一对多关系。
5Classes和Teachers多对一关系。
6Classes和Courses多对一关系。
7Course和Department(系)多对一关系。
8Teachers和Department多对一关系。
9Students和Department多对一关系。
在Hibernate中将以上关系一一映射,如Students和History一对多关系
Students.cfg.xm.:
1
set
name="
history"
2
table="
3
cascade="
all"
4
inverse="
true"
5
lazy="
>
6
key
column="
student_id"
/>
7
one-to-many
class="
limq.hibernate.vo.History"
8
9
/<
SPAN>
set>
10
同样在History.cfg.xml中加入:
many-to-one
student"
limq.hibernate.vo.Students"
many-to-one>
用过MyEclipse开发Hibernate的就知道,MyEclipse会帮助我们生成持久对象和抽象对象,我们要在Students.java中加入对History的引用
privateSethistory=newHashSet();
publicSetgetHistory(){
returnhistory;
}
publicvoidsetHistory(Sethistory){
this.history=history;
}
同时,在AbstractHistory.java中删除student_id以及对应的get,set方法,History.java中加入
privateStudentsstudent;
publicStudentsgetStudent(){
returnstudent;
publicvoidsetStudent(Studentsstudent){
this.student=student;
具体内容请查看源代码。
2DAO数据访问层
首先,编写IBaseDao与BaseDao,其中IBaseDao代码如下:
package
limq.hibernate.dao;
import
java.util.Collection;
java.util.List;
net.sf.hibernate.Criteria;
net.sf.hibernate.Query;
net.sf.hibernate.Session;
limq.exception.DaoException;
public
interface
IBaseDao
{
11
12
Session
openSession();
13
14
int
getTotalCount(
String
hql)
throws
Exception;
15
16
Query
getQuery(String
sql)
17
18
Criteria
getCriteria(Class
clazz)
19
20
getTotalPage(int
totalCount,int
pageSize);
21
22
void
create(Object
entity);
23
24
update(Object
25
26
delete(Object
entity)
DaoException;
27
28
deleteAll(Class
29
30
deleteAll(Collection
entities)
31
32
Object
loadByKey(Class
clazz,
keyName,
keyValue);
33
34
List
find(String
queryString)
35
36
queryString,
param)
37
38
Object[]
params)
39
40
41
BaseDao继承org.springframework.orm.hibernate.support.HibernateDaoSupport
实现以上的定义的方法
如:
{
try
getHibernateTemplate().save(entity);
}
catch
(Exception
e)
log.error("
保存
"
+
entity.getClass().getName()
实例到数据库失败"
e);
/**
*
获得session
*/
openSession()
return
SessionFactoryUtils.getSession(getSessionFactory(),
false);
获得Query对象
Exception{
session
=
this.openSession();
query
session.createQuery(sql);
query;
获得Criteria对象
*/
session=this.openSession();
criteria
session.createCriteria(clazz);
criteria;
可以看到,这里即充分利用了Spring对Hibernate的支持,还弥补了Spring的不足。
最后分别为每个持久对象建立Interface,以及DAO,使其分别继承IBaseDao与BaseDao。
如IDepartment,DepartmentDao
IDepartment
extends
{}
class
DepartmentDao
BaseDao
implements
3Service层
在这里需要认真思考每个业务逻辑所能用到的持久层对象和DAO,还要完成配置Spring框架,首先我一起看看applications-service.xml
?
xml
version="
1.0"
encoding="
UTF-8"
DOCTYPE
beans
PUBLIC
-//SPRING//DTD
BEAN//EN"
http:
//www.springframework.org/dtd/spring-beans.dtd"
beans>
bean
id="
dataSource"
mons.dbcp.BasicDataSource"
destroy-method="
close"
property
driverClassName"
value>
com.mysql.jdbc.Driver<
property>
url"
jdbc:
mysql:
//localhost:
3306/Student<
username"
root<
password"
bean>
sessionFactory"
org.springframework.orm.hibernate.LocalSessionFactoryBean"
ref
local="
mappingResources"
list>
limq/hibernate/vo/Admins.hbm.xml<
limq/hibernate/vo/Classes.hbm.xml<
limq/hibernate/vo/Courses.hbm.xml<
limq/hibernate/vo/Students.hbm.xml<
limq/hibernate/vo/ClassesInfo.hbm.xml<
limq/hibernate/vo/Contact.hbm.xml<
limq/hibernate/vo/Department.hbm.xml<
limq/hibernate/vo/History.hbm.xml<
limq/hibernate/vo/Teachers.hbm.xml<
hibernateProperties"
props>
prop
key="
hibernate.dialect"
net.sf.hibernate.dialect.MySQLDialect<
prop>
hibernate.show_sql"
true<
42
43
myTransactionManager"
org.springframework.orm.hibernate.HibernateTransactionManager"
44
45
46
47
48
49
hibernateInterceptor"
org.springframework.orm.hibernate.HibernateInterceptor"
50
51
bean="
52
53
54
studentDaoTarget"
limq.hibernate.dao.StudentsDao"
55
56
57
58
59
teacherDaoTarget"
limq.hibernate.dao.TeachersDao"
60
61
62
63
64
courseDaoTarget"
limq.hibernate.dao.CoursesDao"
65
66
67
68
69
classDaoTarget"
limq.hibernate.dao.ClassesDao"
70
71
72
73
74
departmentDaoTarget"
limq.hibernate.dao.DepartmentDao"
75
nam
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Struts Spring Hibernate 开发 实例