第13章 Hibernate配置和会话【首页】杜老师
0. 创建项目
(1) 创建项目01JavaWeb13, 01学号 web project, Java EE 5.0 复制mysql-connector-java-5.1.22-bin.jar共1个jar包到WEB-INF\lib
(2) 准备数据库javaweb13、数据表(student、tb_employee、vip)和数据,其中13表示第13章
(3) 创建首页index.jsp
Window --> Openerspective --> MyEclipse Database Explore,Window --> Show view --> DB Browse,右击 new
本章重点
作者心得
1. 配置Hibernate
1.1 使用XML文件配置Hibernate
知识点:文件名 src/hibernate.cfg.xml, 主要内容:根节点,根节点之子节点只有一个,主要内容定义如下。
操作:在src创建hibernate.cfg.xml
1.2 使用资源文件配置Hibernate
知识点:
(1) src/hibernate.properties资源文件只配置属性,不能配置orm映射文件;
(2) src/hibernate.cfg.xml和src/hibernate.properties可同时使用。当同时使用两种类型的配置文件时,XML配置文件中的设置会覆盖properties配置文件的相同的属性。
(3) 一般建议优先使用hibernate.cfg.xml配置文件,hibernate.cfg.xml可配置orm映射文件。
文件名:src/hibernate.properties的例题
1.3 代码动态配置Hibernate
需要运行时动态配置Hibernate时,可以下列java源程序动态配置Hibernate
1.4 手动创建数据库连接(备忘)
Window --> Open erspective --> MyEclipse Database Explore,Window --> Show view --> DB Browse,右击 new
1.5 手动创建Hibernate配置文件、Hibernate会话工厂类(备忘)
右击项目 --> MyEclipse --> Add Hibernate ...
1.6 手动反向创建数据表的.hbm.xml 映像文件(备忘)
在DB Browse,右击[数据表] --> Hibernate Reverse Engineeing ...
2. 配置映射文件
2.1 创建实体类及其映射配置文件
(1) 创建实体类: private属性及其set/get方法
在cn.duzhaojiang.model,创建Student01.java实体类,实体类文件夹:bean,model,po,entity
(2) ORM映射配置文件(.hbm.xml)
在cn.duzhaojiang.model, 创建Student01.java的映射配置文件 Student01.hbm.xml
(3) 查询数据测试类(含main方法)
创建cn.duzhaojiang.test,参照QueryTest.java创建QueryStudentTest01.java测试类,右键该文件-->Run As -->Java Application测试
(4) 添加数据测试
创建cn.duzhaojiang.test,参照InsertTest.java创建InsertStudentTest01.java测试类,右键该文件-->Run As -->Java Application测试
2.2 .映射配置文件知识点
(1) hibernate-mapping元素
(2) class元素
(3) id元素
(4) property元素
2.3 创建Employee实体类及其对象关系映射文件(备忘:训练完毕为下一练习要删除)
src\cn.duzhaojiang.model\Employee01.java
在cn.duzhaojiang.model, 创建Employee01.java的映射配置文件 Employee01.hbm.xml
3. 使用Annotations配置映射
3.1 在实体类中注解映射信息
(1) 在src\cn.duzhaojiang.model创建带映射注解信息的实体类Employee01.java,并在src\hibernate.cfg.xml增加<mapping class="cn.duzhaojiang.model.Employee01" />
(2) 在cn.duzhaojiang.hibernate,定义AnnotationSessionFactory.java类用来获得Session对象
(3) 测试Annotations注释是否成功完成映射
创建src\cn.duzhaojiang.test, TestAnnotation01.java,右键该文件-->Run As -->Java Application测试
(4) 创建[查询所有员工]页面文件WebRoot\ShowEmployeeList01.jsp
(5) 创建[添加员工信息]页面文件WebRoot\EmployeeForm01.jsp
(6) 创建[添加员工处理]页面文件WebRoot\AddEmployee01.jsp
(7) 创建[删除员工处理]页面文件WebRoot\DelEmployee01.jsp
3.2 在实体类中注解映射信息知识点
3.3 Annotation注解映射和.hbm.xml映射混合定义存在的问题
(1) 在cn.duzhaojiang.test,右击QueryStudentTest01.java测试类-->Run As -->Java Application测试将发生错误提示;将QueryStudentTest01.java复制粘贴为QueryStudentTest2_01.java,将QueryStudentTest2_01.java文件中HibernateSessionFactory --> AnnotationSessionFactory, 右键该文件-->Run As -->Java Application测试
(2) 在cn.duzhaojiang.test,右击InsertStudentTest01.java测试类-->Run As -->Java Application测试将发生错误提示;将InsertStudentTest01.java复制粘贴为InsertStudentTest2_01.java,将InsertStudentTest2_01.java文件中HibernateSessionFactory --> AnnotationSessionFactory, 右键该文件-->Run As -->Java Application测试
(3) 查询所有学生成绩信息,WebRoot/ShowStudentList01.jsp
(4) 添加学生成绩页面,WebRoot/StudentForm01.jsp
(5) 添加学生成绩处理,WebRoot/AddStudent01.jsp
(6) 查询分数80分以上的学生成绩,WebRoot/ShowStudentList2_01.jsp
4. 会话(Session)的应用
4.1 Hibernate对象状态
三种状态和Session方法:save, saveOrUpdate, delete, load, get, resresh, setFlushMode, isDirty、clear、flush、evict
4.2 使用save方法持久化对象
在cn.duzhaojiang.test包,创建[save方法持久化对象]测试类TestSave01.java,右键该文件-->Run As -->Java Application
4.3 使用saveOrUpdate方法持久化对象
4.4 使用load方法装载对象
在cn.duzhaojiang.test包,创建[load方法装载对象]测试类TestLoad01.java,右键该文件-->Run As -->Java Application
4.5 使用get方法装载对象
4.6 使用refresh方法刷新对象
在cn.duzhaojiang.test包,创建[refresh方法刷新对象]测试类TestRefresh01.java,右键该文件-->Run As -->Java Application
4.7 使用setFlushMode方法设置更新模式
4.8 使用isDirty方法判断数据是否一致
在cn.duzhaojiang.test包,创建[使用isDirty方法判断数据是否一致]测试类TestIsDirty01.java,右键该文件-->Run As -->Java Application
4.9 使用delete方法删除记录
在cn.duzhaojiang.test包,创建[使用delete方法删除记录]测试类TestDelete01.java,右键该文件-->Run As -->Java Application
实训 模拟商场VIP系统
(1) 创建实体类VIP01.java
在cn.duzhaojiang.model, 创建带映射注解的VIP01.java, 其中01代表学号
(2) 创建测试类VIPMain01.java
在cn.duzhaojiang.test, 创建带映射注解的VIP01.java, 其中01代表学号
(3) 查询所有vip信息,WebRoot/ShowVipList01.jsp
(4) 删除vip信息处理, WebRoot/DelVip01.jsp
(5) 更新vip页面, WebRoot/VipUpdateForm01.jsp
(6) 更新vip信息处理, WebRoot/VipUpdate01.jsp
(7) 添加Vip页面, WebRoot/VipAddForm01.jsp
(8) 添加Vip信息, WebRoot/VipAdd01.jsp
5. 上机题
(1) 知识点:src/hibernate.cfg.xml
(2) 知识点:src/hibernate.properties
(3) 创建[个人支出表]payout
在MySql中,创建[个人支出表]payout并添加测试数据,库名javaweb13、13表示第13章,表名payout,库名表名不变便于发布
(4) 创建实体类PayOut01.java
在cn.duzhaojiang.model, 创建PayOut01.java, 其中01代表学号
(5) 创建实体类PayOut01的的PayOut01.hbm.xml
在cn.duzhaojiang.model, 创建实体类PayOut01.java的hibernate的映射文件PayOut01.hbm.xml, 并在hibernate.cfg.xml中插入一条<mapping resource="cn/duzhaojiang/model/PayOut01.hbm.xml" />
(6) 插入[外出旅游]支出信息
在cn.duzhaojiang.test, 创建【插入[外出旅游]支出信息】文件InsertPayOut01.java, 右击该文件Run As --> Java Application执行, 出错...
在cn.duzhaojiang.test, 创建【插入[外出旅游]支出信息】文件InsertPayOut01.java, 右击该文件Run As --> Java Application执行
(7) 更新支出信息
在cn.duzhaojiang.test, 创建[更新支出信息]文件UpdatePayOut01.java, 右击该文件Run As --> Java Application执行,出错...
在cn.duzhaojiang.test, 创建[更新支出信息]文件UpdatePayOut01.java, 右击该文件Run As --> Java Application执行,出错..., 修改payout.setId(2) 为 payout.setId(7)
(8) 提取支出信息
在cn.duzhaojiang.test, 创建[提取支出信息]GetPayOut01.java, 右击该文件Run As --> Java Application执行
(9) 查询指定月份的支出总额
在cn.duzhaojiang.test, 创建[查询指定月份的支出总额]QueryPayOut01.java, 右击该文件Run As --> Java Application执行
(10) 实体类中注入映射信息(备忘知识点)
知识点:Annotation定义实体类PayOut的映射信息, 在cn.duzhaojiang.model创建PayOut.java
(11) 上机题web发布
(1) 查询所有支信息, ShowPayOutList01.jsp
(2) 添加指定内容的支出信息, InsertPayOut01.jsp
(3) 更新指定编号的支出信息, UpdatePayOut01.jsp
(4) 提取支出指定编号的支出信息, GetPayOut01.jsp
返回章节目录