实验10Hibernate综合Word文档下载推荐.docx
- 文档编号:5109830
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:15
- 大小:19.22KB
实验10Hibernate综合Word文档下载推荐.docx
《实验10Hibernate综合Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验10Hibernate综合Word文档下载推荐.docx(15页珍藏版)》请在冰点文库上搜索。
班级名称
Tbl_student学生信息表
Stu_no
Varchar
20
学号
3
Stu_Name
姓名
Stu_sex
性别
1.请根据上述表结构编写建表sql语句并在数据库中执行
运行结果:
请提供建表sql语句
createtableTbl_class
(
Class_idintprimarykey,
Class_Namevarchar(80)
);
createtableTbl_student
Stu_novarchar(20)primarykey,
Class_idint,
Stu_Namevarchar(80),
Stu_sexvarchar
(2)
)
2.代码编写
1)建立一个新的java工程,完成Hibernate主配置文件的编写和HibernateUtil类的编写和测试
2)根据表结构建立班级和学生javabean,并编写hbm文件建立javabean和数据库表的映射,要求建立学生和班级之间的多对一关联(即在学生javabean中增加一个班级属性),在hibernate主配置文件中增加对该hbm文件的引用
3)通过HibernateUtil类进行测试,确保映射文件没有问题
4)建立Manager类,实现并测试如下方法。
(其中BeanClass为班级javabean,BeanStudent为学生javabean)
a)publicBeanClassaddClass(intclassId,StringclassName);
添加班级,如果班级编号或班级编号已经被占用,则抛出异常
b)publicBeanClassloadClass(intclassId);
提取班级基本信息。
c)publicvoidrenameClass(intclassId,StringclassName);
修改班级名称,如果班级不存在则抛出异常,如果新的班级名称已经被其他班级占用,则抛出异常
d)publicvoiddeleteClass(intclassId);
删除班级,如果班级下已经存在学生,则抛出异常
e)publicBeanStudentaddStudent(Stringsno,Stringname,intclassId);
添加学生,如果对应的班级不存在则抛出异常,如果学生学号被占用,则抛出异常
f)publicBeanStudentloadStudent(Stringsno);
提取学生信息
g)publicvoidchangeStudentClass(Stringsno,intnewClassId);
设置学生班级,如果学生不存在或班级不存在则抛出异常
h)publicList<
BeanStudent>
loadClassStudent(StringclassName);
根据班级名称提取学生。
i)publicList<
searchStudent(Stringkeyword);
根据学生姓名中的关键字提取学生信息
提供各方法的代码
<
?
xmlversion="
1.0"
encoding="
UTF-8"
>
!
DOCTYPEhibernate-configurationPUBLIC
"
-//Hibernate/HibernateConfigurationDTD3.0//EN"
http:
//www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"
hibernate-configuration>
<
session-factory>
--hibernate.connection.driver_class:
连接数据库的驱动-->
propertyname="
hibernate.connection.driver_class"
com.mysql.jdbc.Driver<
/property>
--hibernate.connection.username:
连接数据库的用户名-->
hibernate.connection.username"
root<
--hibernate.connection.password:
连接数据库的密码-->
hibernate.connection.password"
123456<
--hibernate.connection.url:
连接数据库的地址,路径-->
hibernate.connection.url"
jdbc:
mysql:
//localhost:
3306/student?
useUnicode=true&
amp;
characterEncoding=utf-8&
useSSL=false<
--show_sql:
操作数据库时,会向控制台打印sql语句-->
show_sql"
true<
--format_sql:
打印sql语句前,会将sql语句先格式化-->
format_sql"
--数据库方言配置org.hibernate.dialect.MySQLDialect(选择最短的)-->
hibernate.dialect"
org.hibernate.dialect.MySQLDialect<
--hibernate.connection.autocommit:
事务自动提交-->
hibernate.connection.autocommit"
--将Session与线程绑定=>
只有配置了该配置,才能使用getCurrentSession-->
hibernate.current_session_context_class"
thread<
--引入ORM映射文件填写src之后的路径-->
--<
mappingresource="
com/itheima/a_hello/User.hbm.xml"
/>
-->
cn/edu/zucc/booklib/model/booklib.hbm.xml"
model/booklib.hbm.xml"
/session-factory>
/hibernate-configuration>
DOCTYPEhibernate-mappingPUBLIC"
-//Hibernate/HibernateMappingDTD3.0//EN"
hibernate-mappingpackage="
model"
--标识一个类的xml映射,name为类名,table为表名-->
classname="
BeanClass"
table="
--主键的设置,generator标识主键生成方式,因为native便于数据库的移植所以.嘿嘿!
你懂的-->
idname="
Classid"
type="
int"
columnname="
generatorclass="
assigned"
/id>
--这里配了该类一个属性街道名称name属性字段,column,数据库对应列-->
ClassName"
string"
column="
/>
/class>
BeanStudent"
Stuno"
-->
StuName"
Stusex"
many-to-onename="
StuClass"
class="
/many-to-one>
/hibernate-mapping>
packagecontrol;
importjava.util.ArrayList;
importjava.util.List;
importmodel.BeanClass;
importmodel.BeanStudent;
importorg.hibernate.Session;
importorg.hibernate.SessionFactory;
importorg.hibernate.Transaction;
importorg.hibernate.cfg.Configuration;
publicclassManager{
privatestaticSessionFactorysessionFactory=newConfiguration().configure().buildSessionFactory();
publicstaticSessiongetSession()
{
Sessionsession=sessionFactory.openSession();
returnsession;
}
publicBeanClassaddClass(intclassId,StringclassName)//加班级,如果班级编号或班级编号已经被占用,则抛出异常
{
Sessionsession=getSession();
BeanClassresult=null;
if(session.get(BeanClass.class,classId)!
=null)
{
try{
thrownewException("
班级编号已经被占用"
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
else
Transactiontx=session.beginTransaction();
result=newBeanClass();
result.setClassid(classId);
result.setClassName(className);
session.save(result);
mit();
session.close();
returnresult;
}
publicBeanClassloadClass(intclassId)//提取班级基本信息。
Sessionsession=getSession();
BeanClassresult=(BeanClass)session.get(BeanClass.class,classId);
returnresult;
publicvoidrenameClass(intclassId,StringclassName)//修改班级名称,如果班级不存在则抛出异常,如果新的班级名称已经被其他班级占用,则抛出异常
if(session.get(BeanClass.class,classId)==null)
{
try{
thrownewException("
班级编号不存在"
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
else
Transactiontx=session.beginTransaction();
result=newBeanClass();
result=(BeanClass)session.get(BeanClass.class,classId);
result.setClassName(className);
//这种就能修改了。
mit();
session.close();
publicvoiddeleteClass(intclassId)//删除班级,如果班级下已经存在学生,则抛出异常
List<
a=newArrayList<
();
a=session.createQuery("
fromBeanStudentwhereClassid='
"
+classId+"
'
).list();
Booleanb=a.isEmpty();
if(b==false)
该班级还有学生存在"
result=newBeanClass();
result=(BeanClass)session.get(BeanClass.class,classId);
session.delete(result);
publicBeanStudentaddStudent(Stringsno,Stringname,intclassId)//添加学生,如果对应的班级不存在则抛出异常,如果学生学号被占用,则抛出异常
BeanStudentresult=null;
if(session.get(BeanStudent.class,sno)!
{
try{
thrownewException("
学生编号已经被占用"
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
elseif(session.get(BeanClass.class,classId)==null)
班级不存在"
else
Transactiontx=session.beginTransaction();
result=newBeanStudent();
result.setStuno(sno);
result.setStuName(name);
BeanClassc=newBeanClass();
c.setClassid(classId);
result.setStuClass(c);
session.save(result);
mit();
session.close();
publicBeanStudentloadStudent(Stringsno)//提取学生信息
BeanStudentresult=(BeanStudent)session.get(BeanStudent.class,sno);
publicvoidchangeStudentClass(Stringsno,intnewClassId)//设置学生班级,如果学生不存在或班级不存在则抛出异常
BeanStudentresult=null;
if(session.get(BeanStudent.class,sno)==null)
学生编号不存在"
elseif(session.get(BeanClass.class,newClassId)==null)
result=newBeanStudent();
result=(BeanStudent)session.get(BeanStudent.class,sno);
BeanClassc=newBeanClass();
c.setClassid(newClassId);
result.setStuClass(c);
publicList<
loadClassStudent(StringclassName)//根据班级名称提取学生。
result=newArrayList<
fromBeanStudent"
for(BeanStudentb:
a)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验10 Hibernate综合 实验 10 Hibernate 综合