已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验五 Hibernate基础实验 Part one Hibernate对表的添加实验目的:掌握Hibernate的基本功能和基本用法实验要求:通过Hibernate将一个Java对象插入到数据库表中实验原理:(1) Hibernate是一个面向Java环境的对象/关系数据库映射工具,Hibernate不仅管理Java类型到数据库表的映射,还提供查询数据和操作数据的OO方法。(2) Hibernate对JDBC进行了轻量级的对象封装,使Java程序员可以随心所欲地使用OO编程思想来处理数据库。(3) Hibernate采用映射元数据来描述对象-关系的映射细节,元数据通常采用XML。(4) 关系数据库中的元组通过ORM转换成应用程序中的对象;反之,应用程序中的对象通过ORM持久化成关系数据库中的元组。(5) 可以利用Hibernate框架根据配置和类及映射文件生成数据库表结构,反过来,也可以根据数据库表结构生成持久化类和映射文件。实验准备: 安装SQL Server20XY(如果是Windows XP上的SQL Server2000版,需要加补丁程序SP3)。实验步骤:一 创建Java Project TestH3_2二 创建数据库及数据源1. 在test数据库中创建表NewsUse testCREATE TABLE news (id int IDENTITY (1, 1) primary key ,title varchar (20) NOT NULL ,content text ) Gocontext的长度在Hibernate中可能闲长,不能插入,需改成较短的类型!设计表结构的图形界面如图5-1所示。图5-1 设计News表结构的图形化界面2. 打开MyEclipse的Database Explore透视图,如图5-2所示。图5-2 打开Database Explore透视图3. 创建数据库连接驱动,如图5-3所示。找到jtds-1.2.jar包所在位置。点击Add JARS,把该包包含进去即可。注意:SQL Server的Driver template选Microsoft SQL Server(jTDS Driver)。图5-3 创建数据库连接三 添加Hibernate功能1 转到Java透视图,添加Hibernate使能功能,如果要用到连接池技术,则选择增加Hibernate Advanced Support Libraries。 图5-4 添加Hibernate能力,选择Hibernate3.3版本 图5-5 选择通过新建来创建Hiberntae配置文件 图5-6 选择创建会话工厂类2 设置反向工程的有关操转到数据库浏览透视图,选择相应的数据库/DBO中的表,进行反向工程。注意同一个数据源可以被多个工程共享,持久化映射的时候通过项目的src文件夹建立绑定关系。设置反向工程的有关操作,如图5-7所示。 图5-7 设置反向工程的操作3 生成映射文件配置类型映射和主键产生方式后,生成映射文件。 图5-8 配置类型映射和主键产生方式注意ID的生成方式为increment。四 创建测试程序import org.hibernate.*;import org.hibernate.cfg.Configuration;import com.dao.News;public class TestH3_2 public static void main(String args) Configuration conf = new Configuration().configure();SessionFactory sf = conf.buildSessionFactory();Session sess = sf.openSession();Transaction tx = sess.beginTransaction();News n = new News();n.setTitle(第3条消息);n.setContent(今天天晴了);sess.save(n);mit();sess.close(); 五 运行并观察运行结果 1运行后,在数据库表插入数据。sess.save(n)被转换成如下一条SQL语句insert into news_table (title, content) values (第一条消息, 今天天晴了),其主键由系统自动产生。 2注意观察系统产生的持久类和配置、映射文件。 Part 2 Hibernate对单表的各种操作技术实验目的:掌握通过Hibernate操作数据库的各种技术。实验要求:通过Hibernate的查询语言HQL对一个数据库表进行插入、检索、更新和删除操作,即CRUD操作。实验原理:Hibernate的核心接口类关系图如下:Transaction实例化 Hibernate的核心接口类关系图其中的Query和Criteria接口用于执行各种数据库查询。v Session的Query实例封装一个HQL(Hibernate Query Language)查询语句,查询语句与SQL查询语句有些相似,但HQL查询语句是面向对象的,它引用类名及类的属性名,而不是表名及表的字段名。v Session的Criteria接口完全封装了基于字符串形式的查询语句,比Query接口更加面向对象,Criteria接口擅长于执行动态查询。v Session接口自己的find()方法也具有数据查询功能,但它只是执行一些简单HQL查询语句的快捷方法,它的功能远没有Query接口强大。一. 通过Query实例进行查询实验步骤:1 先完成实验一,建立环境和数据库。2 使用Session的Query接口查询,将TestH3_2.java改为:import org.hibernate.*;import org.hibernate.cfg.Configuration;import java.util.*;import com.dao.News;public class TestH3_2 /* * param args */public static void main(String args) Configuration conf = new Configuration().configure();SessionFactory sf = conf.buildSessionFactory();Session sess = sf.openSession();Transaction tx = sess.beginTransaction();/*News n = new News();n.setTitle(第3条消息);n.setContent(今天天晴了);sess.save(n); */ Query query= sess.createQuery(from News); List l = query.list();for (Iterator it = l.iterator(); it.hasNext(); ) News n = (News)it.next(); System.out.println(n.getTitle(); mit();sess.close(); 带参数的查询 Hibernate采用参数绑定机制以保证安全: 非常安全,防止恶意的用户非法调用数据库系统的存储过程; 能够利用底层数据库的预编译SQL语句的功能(语句只被编译一次,然后被缓存) HQL有两种绑定参数的方式:(1) 按参数名字绑定如:下列的查询语句定义了以:开头的命名参数Query query= sess.createQuery(from News as n where n.title=:NewsTitle);调用Query的setXXX()方法绑定参数query.setString(NewsTitle,title); (2) 按参数位置绑定在HQL查询语句中用“?”定义参数位置,如Query query= sess.createQuery(from News as n where n.title=?);绑定方式: query.setString(0,title);二. 使用Session的Criteria接口查询将TestH3_2.java改为:/TestH3_2.javaimport org.hibernate.cfg.*;import org.hibernate.*;import java.util.*;import org.hibernate.criterion.*;import com.dao.News; public class TestH3_2 public static void main(String args) throws ExceptionConfiguration conf = new Configuration().configure();SessionFactory sf = conf.buildSessionFactory();Session sess = sf.openSession();Transaction tx = sess.beginTransaction();Criteria criteria= sess.createCriteria(News.class);criteria=criteria.add(Restrictions.lt(id , new Integer(30);List l =criteria.list();/遍历查询到的记录for (Iterator it = l.iterator(); it.hasNext(); ) News n = (News)it.next(); System.out.println(n.getTitle(); mit(); sess.close(); 可以通过如下方式增加条件为Criteria对象增加Criterion查询条件: Criterion criterion1=Expresion.like(”title”, ”第%”); criteria= criteria.add(criterion1); 三. 使用原生的SQL将TestH3_2.java改为:import org.hibernate.cfg.*;import org.hibernate.*;import com.dao.News;import java.util.*; public class TestH3_2public static void main(String args) throws ExceptionConfiguration conf = new Configuration().configure(); SessionFactory sf = conf.buildSessionFactory();Session sess = sf.openSession(); Transaction tx = sess.beginTransaction();Query query= sess.createSQLQuery(select n.* from news n);List l=query.list(); System.out.println(l.size(); mit();sess.close(); 四. 级联操作对象图(1) 创建部门表depaert和雇员表employeeCREATE TABLE dbo.depaert (id int IDENTITY (1, 1) primary key ,Dname varchar (20) NOT NULL ,man varchar (10), tele varchar (8) CREATE TABLE dbo.employee (id int IDENTITY (1, 1) primary key , Did int references depaert(id),Ename varchar (10) NOT NULL ,sex varchar (2), Email varchar (20) (2)建立映射文件 注意级联设置。(3) 插入数据 Depart depart =new Depart();depart.setDname(Manu);depart.setMan(Danel);depart.setTele(123458);sess.save(depart); Query query= sess.createQuery(from Depart as n where n.id=?);query.setInteger(0,new Integer(1);Depart depart=(Depart)query.uniqueResult();Employee employee=new Employee();employee.setDepart(depa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼小衔接百科知识大全
- 非职务犯罪警示教育心得体会三篇
- 高壁垒的成长赛道受益于自主可控与人形机器人未来发展
- 仓库巡查记录表
- 保定市建筑工程质量通病防治导则要点
- 吞咽障碍康复管理指南考核试题
- 安徽省合肥市百花中学等四校联考2025-2026学年高一上学期11月期中考试语文试卷
- 自身免疫性神经精神疾病2026
- 统计与概率测试题及答案
- 2025年电缆企业环保试题及答案
- 2025年甘肃省武威市凉州区金山镇选聘专业化管理大学生村文书考试笔试备考试题及答案解析
- 2025至2030中国养老地产行业项目调研及市场前景预测评估报告
- 2025年安康杯知识竞赛试题及答案
- 吊绳的施工方案
- 上海财经大学:低空+发展研究报告(2025年)
- (人教2024版)数学三年级上册第5单元《线和角》大单元教学设计(新教材)
- 2025年事业单位公共基础知识考试复习题库及答案
- 别墅设计平面介绍
- DB33-T 1455-2025 涉企增值服务工作指南
- 藏族简介课件
- GB/T 6071-2003超高真空法兰
评论
0/150
提交评论