您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > Hibernate基本用法
Hibernate基础目录•1Hibernate概述•2第一个Hibernate程序•3Hibernate的配置文件•4深入理解持久化对象•5Hibernate的映射文件•6JPAAnnotation介绍•7本讲小结Hibernate概述•Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。•Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用•最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。JDBC简介•JDBC(JavaDataBaseConnectivity)是一种用于执行SQL语句的JavaAPI•JDBC提供的主要接口:–DriverManager类–Connection类–Statement类–PreparedStatement类–ResultSet类使用JDBC访问数据库的步骤(1)加载JDBC驱动(2)实例化数据库连接驱动类(3)建立数据库连接,取得Connection对象(4)建立Statement对象或PreparedStatement对象.(5)执行SQL语句(6)访问结果记录集ResultSet对象(7)依次将ResultSet,Statement,PreparedStatement,Connection对象关闭,释放所占用的资源对直接使用JDBC的反思•直接使用JDBC操作数据库的步骤很繁琐•JDBC操作的是关系型数据库•用JAVA开发程序,则使用面向对象的思想•Hibernate正是在这两种不同的模型之间建立关联,Hibernate给我们提供了利用面向对象的思想来操作关系型数据的接口持久化和持久化层•在Java中将对象自动持久化到数据库中,我们需要了解两个概念。•持久化:就是对数据和程序状态的保持。大多数情况下特别是企业级开发应用时,数据持久化往往也就意味着将内存中的数据保存到磁盘上加以固化,而持久化的实现过程则大多通过各种关系型数据库来完成的。•持久化层:把数据库实现当作一个独立逻辑拿出来,即数据库程序是在内存中的,为了使程序运行结束后状态得以保存,就要保存到数据库。持久化层是在系统逻辑层面上,专注于实现数据持久化的一个相对独立的领域。关系型数据库和面向对象的冲突•面向对象是从软件工程基本原则(如耦合、聚合和封装)的基础上发展起来的•关系数据库则是从数学理论发展而来的,两套理论存在显著的区别•Java是完全面向对象的语言,这个冲突就表现的越发明显。ORM介绍•ORM的全称是Object/RelationMapping,即对象/关系映射。•ORM是一种规范、模型、思想•具体的ORM框架可作为应用程序和数据库的桥梁。•目前ORM的产品非常多,比如Apache组织下的OJB,Oracle的TopLink、JDO和JPA等,当然还包括本章介绍的Hibernate。ORM带来了什么•ORM并不是一种具体的产品,而是一类框架的总称,它概述了这类框架的基本特征:完成面向对象的程序设计语言到关系数据库的映射。•基于ORM框架完成映射后,既可利用面向对象程序设计语言的简单易用性,又可利用关系数据库的技术优势。流行的ORM框架•EnitiyEJB:EnitiyEJB实际上也是一种ORM技术,这是一直备受争议的组件技术。事实上,EJB为JavaEE的蓬勃发展赢得了极高的声誉,EJB作为一种重量级、高花费的ORM技术具有不可比拟的优势。就其他架构设计来讲,依然非常优秀。即使现在十分流行的轻量级JavaEE架构,其实质是对经典JavaEE架构的模仿——虽然存在些许的改进。EJB3.1也采取了低侵入式的设计,增加了Annotation,也具有极大的吸引力。•Hibernate:目前最流行的开源ORM框架,已经被选作JBoss的持久层解决方案。整个HIbernate项目也一并投入了Jboss的怀抱,而JBoss又加入了RedHat组织,所以现在Hibernate属于RedHat的一部分。Hibernate灵巧的设计、优秀的性能,还有其丰富的文档都是其风靡全球的重要因素。•iBatis:Apache软件基金组织的子项目。与其称它为一种ORM框架,不如称它为一中“SQLMapping”框架。曾经在J2EE的开发中扮演非常重要的角色,但因为不支持存粹的面向对象操作,因此现在逐渐地被取代。但是在一些公司,依然占有一席之地,特别是一些对数据访问特别灵活的地方,iBatis更加的灵活,它允许开发人员直接编写SQL语句。•TopLink:Oracle公司的产品,作为一个遵循OTN协议的商业产品,TopLink在开发过程中可以自由地下载和使用,但是一旦作为商业产品被使用,则需要收取费用。由于这一点,TopLink的市场占有率不高。•OBJ:Apache软件基金组织的子项目。另一个开源的ORM框架,可以说是Apache作为iBatis之后的取代产品,也是非常优秀的O/RMapping框架,但是由于Hibernate的广芒太盛,所以并未有广泛的使用,而且由于OJB的开发文档不是很多,这也影响了OJB的流行。Hibernate的优势•开源免费的License,方便需要时研究源代码,改写源代码,进行功能定制。•轻量级封装,避免引入过多复杂的问题,调试容易,减轻程序员的负担。•具有可扩展性,API开放。功能不够用时,自己进行编码扩展。•开发者活跃,有稳定的发展保障。Hibernate与O、R之间的关系HibernateSession接口(HibernateAPI)持久化实体对象(PersistentObjects)关系数据库应用程序(业务逻辑操作)目录•1Hibernate概述•2第一个Hibernate程序•3Hibernate的配置文件•4深入理解持久化对象•5Hibernate的映射文件•6JPAAnnotation介绍•7本讲小结学习Hibernate的步骤下载与安装HibernateHibernate3下载列表Hibernate4下载列表安装和配置MySql•下载MySQL数据库–•安装MySQL数据库•配置MySQL数据库–默认用户名root,密码123(自定义)•使用MySQL数据库–掌握常用命令–安装NativeLiteforMySql(前端工具)•下载MySQL的JDBC驱动第一个Hibernate程序•Hibernate实例演示•用Hibernate直接创建表–先创建数据库(手动完成)–再创建数据库表(可以通过程序完成)从代码生成数据库表在代码中操作数据库表//读取hibernate.cfg.xml文件Configurationcfg=newConfiguration().configure();//创建SessionFactorySessionFactoryfactory=cfg.buildSessionFactory();Sessionsession=null;try{session=factory.openSession();//开启事务session.beginTransaction();Useruser=newUser();user.setName(张三);user.setPassword(123);user.setCreateTime(newDate());user.setExpireTime(newDate());//保存数据session.save(user);//提交事务session.getTransaction().commit();}catch(Exceptione){e.printStackTrace();//回滚事务session.getTransaction().rollback();}finally{if(session!=null){if(session.isOpen()){session.close();}}}}Hibernate.cft.xml(范例)!DOCTYPEhibernate-configurationPUBLIC-//Hibernate/HibernateConfigurationDTD3.0//EN!--GeneratedbyMyEclipseHibernateTools.--hibernate-configurationsession-factorypropertyname=connection.usernameroot/propertypropertyname=connection.password123/propertypropertyname=connection.url“jdbc:mysql://127.0.0.1:3306/userdb/propertypropertyame=dialect“org.hibernate.dialect.MySQLDialect/propertypropertyname=myeclipse.connection.profilemmm/propertypropertyname=connection.driver_class“com.mysql.jdbc.Driver/propertypropertyname=show_sqltrue/propertypropertyname=connection.characterEncodinggbk/propertymappingresource=com/sh/model/User.hbm.xml//session-factory/hibernate-configuration其他•自动生成Hibernate映射文件–Hibernate自动生成配置文件–操作演示补充知识:Java的单元测试1.加载JUnit.jar包注意JUnit3和Junit4的区别JUnit3的测试类需要继承TestCaseJUnit4的方法前使用@TestJUnit4的@Before和@After2.建立一个独立的源代码包(可选)3.在子类中进行测试方法的编写方法必须是public类型的方法的返回值一般为void4.可以以方法为粒度进行测试目录•1Hibernate概述•2第一个Hibernate程序•3Hibernate的配置文件•4深入理解持久化对象•5Hibernate的映射文件•6JPAAnnotation介绍•7本讲小结Hibernate体系结构简要的Hibernate体系架构Hibernate全面解决方案体系架构Hibernate全面解决方案架构解释•SessionFactory:单个数据库映射关系经过编译后的内存镜像。•Session:它是应用程序和持久存储层之间交互操作的一个单线程对象•持久化对象:处于持久化状态的对象•瞬态对象和脱管对象:系统进行new关键字进行创建的Java实例,没有Session相关联,此时处于瞬态。•事务(Transaction):代表一次原子操作,它具有数据库事务的概念。•连接提供者(ConnectionProvider):它是生成JDBC的连接的工厂,同时具备连接池的作用。•事务工厂(TransactionFactory):他是生成Transaction对象实例的工厂。Hibernate的配置•Configuration对象–org.hibernate.cfg.Configuration实例代表一个应用程序到SQL数据库的映射配置,Configuration提供了一个buildSessionFactory()方法,该方法可以产生一个不可变的Ses
本文标题:Hibernate基本用法
链接地址:https://www.777doc.com/doc-4452264 .html