hibernate实验报告.doc_第1页
hibernate实验报告.doc_第2页
hibernate实验报告.doc_第3页
hibernate实验报告.doc_第4页
hibernate实验报告.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验一 Hibernate框架结构实验目的:1、掌握java的反射技术2、掌握Hibernate体系架构3、熟练使用Hibernate进行简单应用实验内容1、将public class Student private int id;private String name;private int age;public int getId() return id;public void setId(int id) this.id = id;public String getName() return name;public void setName(String name) = name;public int getAge() return age;public void setAge(int age) this.age = age; 保存到数据库中。Model包Student.javaprivate Integer id;private String username;private String password;private Integer age;Student.hbm.xml Util包 HibernateUtil.javapackage util;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class HibernateUtilprivate static SessionFactory sessionFactory;statictry/ 获取sessionFactorysessionFactory=new Configuration().configure().buildSessionFactory(); catch (Exception e)System.err.println(构造sessionFactory出错: + e.getMessage();public static Session currentSession()/获取sessionSession session=sessionFactory.openSession();return session;/执行完后关闭sessionpublic static void closeSession(Session session)if (null!= session)session.close();Hibernate.cfg.xmljdbc:mysql:/localhost:3306/usercom.mysql.jdbc.Driverrootrootorg.hibernate.dialect.MySQLDialecttrueTest1.javapackage test;import model.Student;import org.hibernate.Session;import org.hibernate.Transaction;import util.HibernateUtil;public class Test1public static void main(String args)Session session=HibernateUtil.currentSession();Transaction tx=session.beginTransaction();Student stu1=new Student();Trystu1.setUsername(xiaoming);stu1.setPassword(5732);stu1.setAge(24);session.save(stu1);mit(); catch (Exception e)tx.rollback(); finallysession.close();实验结果:实验二 对象映射实验目的:1掌握OID用法2掌握一对一关联、一对多关联、多对多关联用法3掌握集合对象的映射用法4掌握继承的映射实验内容1、 一个学生拥有一张借书卡,现在学生类和借书卡的定义如下,请将它们配置成一对一的双向关联。public class Student private int id;private String name;private int age;private String sex;private StuIdCard bookCard;public class bookCard private int id;private String num;private Student student;配置:2、 一个顾客在网上商店购物时,可以有多份订单,而一份订单只属于一个顾客。其类的定义如下:public class Customer implements Serializable private int id; private String name; private Set orders=new HashSet(); private Double money;public class Order implements Serializable private Long id; private String orderNumber; private Double price; private Customer customer;请配置它们的xml。 3、 每个人都有当前住址,其定义如下:public class person private int id;private String name;private address address;public class address private String detail; private String street;请把address作为person的表字段进行配置,该如何配置?4、 如下类,public class Student private int id;private String name;private Set teachers = new HashSet();ublic class Teacher private int id;private String name;private Set students = new HashSet();请将其关系进行映射一、Com.hibernate.pojo包student.javaprivate Integer sid;private String name;private String password;private Integer age;private Set stuidcards = new HashSet();stuidcard.javaprivate Integer id;private Student student;private String num;Student.hbm.xml Stuidcard.hbm.xml 二、order.javaprivate Integer orderid;private Customer customer;private Integer number;private Integer price;customer.javaprivate Integer cid;private String name;private String money;private Set orders = new HashSet(0);Order.hbm.xml Customer.hbm.xml 3、 Address.hbm.xml Person.hbm.xml 四、Student.hbm.xml Teacher.hbm.xml 实验三 事务处理实验目的:1、 掌握事务的处理机制2、 掌握对象的三种状态3、 掌握并发访问方式4、 掌握数据持久层的设计方式实验内容:已知account类的定义如下:package mypack;import java.io.Serializable;import java.util.Set;public class Account implements Serializable private Long id; private String name; private double balance; public Account(String name, double balance) = name; this.balance = balance; public Account() public Long getId() return this.id; public void setId(Long id) this.id = id; public String getName() return ; public void setName(String name) = name; public double getBalance() return this.balance; public void setBalance(double balance) this.balance = balance; 1、(1)请以数据库系统的独占锁-悲观锁方式读取一个account账户实例(2)请将account改写,利用Hibernate的版本控制实现乐观锁1. 独占锁方式读取一个account账户实例测试类:public static void main(String args) SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); Account account=(Account)session.get(Account.class,1L,LockMode.NONE); System.out.println(account.getId() + + account.getName(); mit(); session.close(); sessionFactory.close(); Account.hbm.xml (2) 请将account改写,利用Hibernate的版本控制实现乐观锁数据库表:增加一个属性version;Pojo类: private Long id; private String name; private double balance; Private Long version; Account.hbm.xml 测试类:public static void main(String args)SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();Session session = sessionFactory.openSession();Transaction tx = session.beginTransaction();Account account = new Account();account.setName(james);account.setBalance(300);System.out.println(account.getName() + + account.getBalance() + + account.getVersion();session.save(account);mit();session.close();sessionFactory.close();2、元素的lazy和fetch属性的检索策略Lazy属性(默认值为true)Fetch属性(默认是select)检索策略True末显示设置(取默认值select)False末显示设置(取默认值select)Extra末显示设置(取默认值select)采用加强延迟检索策略。当第一次访问集合对象的size()、contains()、isEmpty()方法时,不会初始化集合对象。True、false或extraSelectLazy属性决定采用的检索策略。Select * from orders where order_id in(1,3,4,5)True、false或extraSubselectLazy属性决定采用的检索策略。Select * from orders where order_id in(select order_id from orders)末显示设置Join采用迫切左外连接检索策略3、的检索策略Lazy属性(默认值是proxy)Fetch属性(默认值是select)检索一个时策略Proxy末显示设置(取默认值select)No-proxy末显示设置(取默认值select)无代理延迟检索False末显示设置(取默认值select)末显示设置Join实验四 对象检索实验目的:1、掌握HQL查询用法实验内容:已知类定义如下:public class student private int id;private String name;private team team;private int agepublic class team private int id;private String name;1、 把所有姓“李”学生显示出来2、 统计参加了团队的学生总人数3、 显示年龄在18和20之间的学生4、定义一个方法,实现分页显示,指定oid的team所包含的学生,要求每页显示5名学生。前三小题public static void main(String args) SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction();/ 输出a开始的名字名字List stu =session.createQuery(from Student s where like a%).list();/ 显示年龄在18和20之间的学生 List stu =session.createQuery(from Student s where s.age between 18 and 20).list();select count(team_id) from Studentfor (int a = 0; a stu.size(); a+) Student student = (Student) stu.get(a); System.out.println(student.getId() + + student.getName(); / 统计参加了团队的学生总人数 List list = null; String hql = from Student as s where team_id is not null; Query query = session.createQuery(hql); list = (List) query.list(); System.out.println(list.size(); mit(); session.close(); sessionFactory.close(); 第四小题public static List findByPage(int pageNo, int pageSize)trySessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();Session session = sessionFactory.openSession();Transaction tx = session.beginTransaction();String hql = from Student where team_id=1;Query query = session.createQuery(hql);query.setFirstResult(pageNo - 1) * pageSize);query.setMaxResults(pageSize);return query.list(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论