第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


返回章节目录