Hibernate1实验报告.docx
- 文档编号:17599621
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:13
- 大小:18.75KB
Hibernate1实验报告.docx
《Hibernate1实验报告.docx》由会员分享,可在线阅读,更多相关《Hibernate1实验报告.docx(13页珍藏版)》请在冰点文库上搜索。
Hibernate1实验报告
Oracle应用开发
综合实验报告
题目:
综合实验Hibernate技术应用
指导教师:
王岩
姓名:
常智棋
班级学号:
10301125
成绩:
日期:
2012.12.09
实验题目:
综合实验Hibernate技术应用
1.预习内容
Hibernate是对JDBC的轻量级封装,因此在很多情况下Hibernate的性能比直接使用JDBC存取数据库要低。
然而,通过正确的方法和策略,在使用Hibernate的时候还是可以非常接近直接使用JDBC时的效率的,并且,在有些情况下还有可能高于使用JDBC时的执行效率。
在进行Hibernate性能优化时,需要从以下几个方面进行考虑:
数据库设计调整。
HQL优化。
API的正确使用(如根据不同的业务类型选用不同的集合及查询API)。
主配置参数(日志、查询缓存、fetch_size、batch_size等)。
映射文件优化(ID生成策略、二级缓存、延迟加载、关联优化)。
一级缓存的管理。
针对二级缓存,还有许多特有的策略。
事务控制策略。
数据的查询性能往往是影响一个应用系统性能的主要因素。
对查询性能的影响会涉及到系统软件开发的各个阶段,例如,良好的设计、正确的查询方法、适当的缓存都有利于系统性能的提升。
系统性能的提升设计到系统中的各个方面,是一个相互平衡的过程,需要在应用的各个阶段都要考虑。
并且在开发、运行的过程中要不断地调整和优化才能逐步提升系统的性能。
二.实验目的与要求
1.了解软件分层体系结构
2.理解持久化层
3.了解软件的模型
4.理解对象的关系
5.理解ORM及Hibernate原理
6.掌握Hibernate的基本配置及映射
7.掌握建立和使用Session执行持久化操作
8.理解Session的线程安全
9.Hibernate回调和拦截
1、建立表orders:
用于存储订单列表信息;表order_items:
用于存储单个订单的详细信息。
其结构分别为:
表1orders表结构
字段名
字段类型
字段宽度
说明
id
NUMBER
20
订单编号(主键)
order_date
Date
订单日期(非空)
user_name
VARCHAR2
10
客户名称(非空)
city
VARCHAR2
20
客户所在城市(默认沈阳)
表2order_items表结构
字段名
字段类型
字段宽度
说明
order_id
NUMBER
20
订单编号(主键)
product_NAME
VARCHAR2
20
产品名称(非空)
quantity
NUMBER
4
数量(大于0,小于100)
unit_price
NUMBER
(10,2)
产品单价
2、创建数据库连接程序,能够对表orders进行增、删、改和查。
(
创建oracle存储过程,并在程序中调用存储过程。
3、创建数据库连接程序,能够对表orders进行实现批处理。
(如:
增加)
4、创建事务处理程序。
5、创建断开连接结果集查询程序。
3.实验原理
开发Hibernater的参考基本步聚:
1.获取Hibernate相关的库文件
2.工程中引入Hibernate相关的Jar文件
3.建立Hibernate的初始化配置文件
4.根据概念模型建立系统的实体域类及它们关系
5.根据概念模型建立关系数据表
6.根据实体类与表之间的对应关系建立映射文件
7.建立Hibernate会话工厂及会话对象,通过会话对象执行持久化操作
四.实验设计及实现
4.1hibernate.cfg.xml
建立Hibernate的初始化配置文件
xmlversion='1.0'encoding='UTF-8'?
>
DOCTYPEhibernate-configurationPUBLIC
"-//Hibernate/HibernateConfigurationDTD3.0//EN"
"http:
//www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
--GeneratedbyMyEclipseHibernateTools.-->
org.hibernate.dialect.Oracle9Dialect
jdbc:
oracle:
thin:
@localhost:
1521:
orcl
oracle.jdbc.driver.OracleDriver
4.2Item.hbm.xml
建立PO与关系表的映射
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEhibernate-mapping
PUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"
"
--name(?
?
po?
?
?
)-->
--
type="string"length="8"> type="int"> type="int"> 4.3item.java 建立实体类 packagecom.hibernate; publicclassitem{ privateintid; privateStringname; privateintquantity; privateintprice; publicintgetId(){ returnid; } publicvoidsetId(intid){ this.id=id; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicintgetQuantity(){ returnquantity; } publicvoidsetQuantity(intquantity){ this.quantity=quantity; } publicintgetPrice(){ returnprice; } publicvoidsetPrice(intprice){ this.price=price; } } 4.4itemText.java publicclassitemText{ publicstaticvoidmain(String[]args){ Configurationcfg=newConfiguration(); SessionFactorysf=cfg.configure().buildSessionFactory(); Sessionsession=sf.openSession(); session.beginTransaction(); ///////////////////////////////////////////////////////// //? ? ? ? ? ? /*Listls=session.createQuery("fromitem").list(); for(inti=0;i { itemit=(item)ls.get(i); System.out.print(it.getId()+it.getName()+it.getPrice()+it.getQuantity()); }*/ //? ? ? ? ///////////////////////////////////////////////////////////////// //? ? ? ? 插入一条数据 itemit1=newitem(); it1.setId(511); it1.setName("sss"); it1.setPrice(2342); it1.setQuantity(12); session.save(it1); /////////////////////////////////////////////////////////////////// //? ? ? ? ? ? ? ? ? ,检索id号为511的数据的信息 //session? load? ? ? ? ? ? ? ? ? param2(id) //session.load(param1,param2)? ? ? ? ? ? ? param2(id)? ? ? ? ? ? ? ? ? ? ? ? ? param1? ? ? ? ? ? ? itemit2=(item)session.load(item.class,newInteger(511)); System.out.print(it2.getId()+it2.getName()+it2.getPrice()+it2.getQuantity()); //////////////////////////////////////////////////////// //? ? ? ? 修改id号为511的数据的信息 itemit3=(item)session.load(item.class,newInteger(511)); it3.setId(511); it3.setName("sssfffff"); it3.setPrice(2342); it3.setQuantity(132); session.update(it3); session.flush(); /////////////////////////////////////////////////////// //? ? 删除id为511的数据的信息 itemit4=(item)session.load(item.class,newInteger(511)); session.delete(it4); //////////////////////////////////////////////////////////////////////////// session.getTransaction().commit(); session.close(); sf.close(); } } 5.itemDAO.java 定义各种增删改查操作的执行方法 publicclassitemDAO{ privatestaticSessionFactorysf; privateSessionsesion; static{ try{ Configurationcfg=newConfiguration(); sf=cfg.configure().buildSessionFactory(); } catch(Throwablee){ e.printStackTrace(); } } publicstaticListselectAllitem(){ Sessionsession=sf.openSession(); session.beginTransaction(); Listls=session.createQuery("fromitem").list(); session.getTransaction().commit(); returnls; } publicstaticitemselectAllitembyid(intid){ Sessionsession=sf.openSession(); session.beginTransaction(); itemit=(item)session.load(item.class,id); session.getTransaction().commit(); returnit; } publicstaticvoidinsertitem(itemit){ Sessionsession=sf.openSession(); session.beginTransaction(); session.save(it); session.getTransaction().commit(); } publicstaticvoidupdateitem(itemit){ Sessionsession=sf.openSession(); session.beginTransaction(); session.update(it); session.getTransaction().commit(); } publicstaticvoiddeleteitem(intid){ Sessionsession=sf.openSession(); itemit=(item)session.load(item.class,id);; session.beginTransaction(); session.delete(it); session.getTransaction().commit(); } } 6.itemDaoTest.java publicclassitemDaoTest{ publicstaticvoidmain(String[]args){ //? ? ? ? Listlist=itemDAO.selectAllitem(); for(inti=0;i { itemit=(item)list.get(i); System.out.println(it.getId()+it.getName()+it.getPrice()); } //////////////////////////////////////////////////////////////////// //? ? 一条数据 /*itemit=newitem(); it.setId(2323); it.setName("tracy"); it.setPrice(3232); it.setQuantity(33); itemDAO.insertitem(it);*/ //////////////////////////////////////////////////////////////// //? ? id号为2323的数据的信息 /*itemDAO.deleteitem(2323);*/ ///////////////////////////////////////////////// //? ? id为2323的数据的信息 /*itemit1=newitem(); it1.setId(2323); it1.setName("tracyggggg"); it1.setPrice(323432); it1.setQuantity(33); itemDAO.updateitem(it1);*/ //////////////////////////////////////////////////////////////////////////////////// //? ? id? ? 查询id号为2323的数据的信息 /*itemit3=itemDAO.selectAllitembyid(2323); System.out.println(it3.getId()+it3.getName()+it3.getPrice());*/ } } 实验结果: (实验结果仅显示部分) //查询所有 1充电器2384 1充电器2384 1充电器2384 //插入数据后结果 1充电器2384 1充电器2384 1充电器2384 511sss234212 //修改数据 1充电器2384 1充电器2384 1充电器2384 511sssfffff2342132 //删除数据后结果 1充电器2384 1充电器2384 1充电器2384
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hibernate1 实验 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)