您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > Hibernate3x-01基础
Hibernate开源O/R映射框架课程目标课程目标:理解O/RMapping原理掌握Hibernate开发的相关知识能使用Hibernate进行实际项目开发Hibernate高手进级:性能优化策略什么是Hibernate快速体验Hibernate的开发步骤认识Hibernate基本核心接口Hibernate的对象关系映射Hibernate查询语句(HQL)为什么使用Hibernate?直接使用JDBC操作数据库的步骤很繁琐JDBC操作的是关系型数据库我们用JAVA开发程序,则使用面向对象的思想Hibernate正是在这两种不同的模型之间建立关联,Hibernate给我们提供了利用面向对象的思想来操作关系型数据的接口什么是关系模型(RelationalModel)?关系模型把世界看作是由实体(Entity)和联系(Relationship)构成的。所谓实体就是指现实世界中具有区分与其它事物的特征或属性并与其它实体有联系的对象。在关系模型中实体通常是以表的形式来表现的。表的每一行描述实体的一个实例,表的每一列描述实体的一个特征或属性。所谓联系就是指实体之间的关系,即实体之间的对应关系。1:11:nm:n关系数据库表字段主键外键什么是面向对象?面向对象三大特征:封装、继承(一般与特殊)、多态(覆盖与重载)类对象属性关系一般与特殊关系(isa)组成(hasa)关联及其多重性•1:1•1:n•m:n双向关联与单向关联对象关系映射(ObjectRelationalMapping,简称ORM)ORM是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将java程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。WhyORM?面向对象的开发方法是当今企业级应用开发环境中的主流开发方法关系数据库是企业级应用环境中永久存放数据的主流数据存储系统字母O起源于“对象”(Object),而R则来自于“关系”(Relational)。几乎所有的程序里面,都存在对象和关系数据库。在业务逻辑层和呈现层中,我们是面向对象的。当对象信息发生变化的时候,我们需要把对象的信息保存在关系数据库中。当你开发一个应用程序的时候(不使用O/RMapping),你可能会写不少数据访问层的代码,用来从数据库保存,删除,读取对象信息,等等。而这些代码写起来总是重复的。对象-关系映射模式属性映射类映射关联映射一对一一对多多对多什么是Hibernate?对象/关系映射一直都是数据库技术中的难点,尽管人们提出了许多方案解决这个问题,但都不能完全做到即便利又高效。EJB的推出让人们看到了希望,但实践证明实体Bean的效率并不高,并且还十分难于为初学者理解。由GavinKing创建的Hibernate框架,从某种程序上正在朝着正确的方向迈走,并且得到越来越多IT从业人员的认可。就像当年的Struts框架一样,Hibernate也已经在许多项目中得到广泛应用。Hibernate由于投注了更多的精力在提升效率上,使用起来又十分方便,新版的EJB规范正在向Hibernate方向靠拢。正是由于得到广泛的认可,Hibernate已经成为程序员必须掌握的技术之一。Hibernate能做什么?Hibernate能帮助我们利用面向对象的思想,开发基于关系型数据库的应用程序第一:将对象数据保存到数据库第二:将数据库数据读入对象中基于B/S的典型三层架构快速体验Hibernate–安装以及创建新的项目下载Hibernate,并解压缩使用Eclipse创建新的项目引入Hibernate及其依赖库(jar包)引入mysql数据库驱动包打开mysql控制台,创建测试数据库”hibernate”创建Hibernate配置文件–hibernate.cfg.xml?xmlversion=1.0encoding=utf-8?!DOCTYPEhibernate-configurationPUBLIC-//Hibernate/HibernateConfigurationDTD//EN=hibernate.connection.urljdbc:mysql://127.0.0.1/hibernate/propertypropertyname=hibernate.connection.driver_classcom.mysql.jdbc.Driver/propertypropertyname=hibernate.connection.usernameroot/propertypropertyname=hibernate.connection.passwordmysql/propertypropertyname=dialectorg.hibernate.dialect.MySQLDialect/property/session-factory/hibernate-configuration创建持久化类User.javapublicclassUser{privateStringid;privateStringname;privateStringpassword;privateDatecreateTime;privateDateexpireTime;…..getters/setters}创建类的映射文件–User.hbm.xml?xmlversion=1.0?!DOCTYPEhibernate-mappingPUBLIC-//Hibernate/HibernateMappingDTD3.0//EN=com.cn.hibernate.Useridname=idgeneratorclass=uuid//idpropertyname=name/propertyname=password/propertyname=createTime/propertyname=expireTime//class/hibernate-mapping将类的映射文件加入Hibernate为了让Hibernate能够处理User对象的持久化,需要将它的映射信息加入到Hibernate中加入的方法很简单,在Hibernate配置文件中加入:mappingresource=com/domain/User.hbm.xml/即可resource属性指定了映射文件的位置和名称创建数据库表–利用SchemaExport工具类利用Hibernate提供的工具类来创建数据库表创建ExportToDB类publicclassExportToDB{publicstaticvoidmain(String[]args)throwsException{//读取配置文件Configurationcfg=newConfiguration().configure();//创建SchemaExport对象SchemaExportexport=newSchemaExport(cfg);//创建数据库表export.create(true,true);}}将对象保存到数据库–UserTest1.javapublicstaticvoidmain(String[]args)throwsException{Configurationcfg=newConfiguration().configure();SessionFactoryfactory=cfg.buildSessionFactory();Sessionsession=factory.openSession();session.beginTransaction();Useruser=newUser();user.setName(管理员);user.setPassword(admin);user.setCreateTime(newDate());user.setExpireTime(newDate());session.save(user);session.getTransaction().commit();if(session.isOpen()){session.close();}}认识Hibernate的基本组件实体类实体类映射文件重点学习的部分Hibernate配置文件辅助工具Hibernate核心接口ConfigurationSessionFactorySessionTransactionQueryConfiguration概述:Configuration类负责管理Hibernate的配置信息。它包括如下内容:Hibernate运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect,数据库连接池等。Hibernate映射文件(*.hbm.xml)。SessionFactory概述:应用程序从SessionFactory(会话工厂)里获得Session(会话)实例。它在多个应用线程间进行共享。通常情况下,整个应用只有唯一的一个会话工厂——例如在应用初始化时被创建。然而,如果你使用Hibernate访问多个数据库,你需要对每一个数据库使用一个会话工厂。会话工厂缓存了生成的SQL语句和Hibernate在运行时使用的映射元数据。调用代码:SessionFactorysessionFactory=cfg.buildSessionFactory();Session概述:Session不是线程安全的,它代表与数据库之间的一次操作,它的概念介于Connection和Transaction之间。Session也称为持久化管理器,因为它是与持久化有关的操作接口。Session通过SessionFactory打开,在所有的工作完成后,需要关闭。调用代码Sessionsession=sessionFactory.openSession();Transaction概述:。它将应用代码从底层的事务实现中抽象出来——这可能是一个JDBC事务,一个JTA用户事务或者甚至是一个公共对象请求代理结构(CORBA)——允许应用通过一组一致的API控制事务边界。这有助于保持Hibernate应用在不同类型的执行环境或容器中的可移植性调用代码:Transactiontx=session.beginTransaction();从代码中体会Session和TransactionSessionsession=factory.openSession();session.beginTransaction();Useruser=newUser();user.setName(管理员);user.setPassword(admin);user.setCreateTime(newDate());user.setExpireTime(newDate());session.save(user);session.getTransaction().commit();session.beginTransaction();Useruser1=newUser();user1.setName(jjj);session.save(user1);session.getTransaction().commit();if(
本文标题:Hibernate3x-01基础
链接地址:https://www.777doc.com/doc-2876287 .html