Hibernate

一、什么是 Hibernate? Hibernate 是一个基于元数据的轻量级的 ORM 框架: 1、元数据(Meta Data):data about data(数据的数据),也就是说描述一个对象数据,相当于这个对象的上下文环境。 2、轻量级:占用资源少,没有侵入性。(其实我认为这只是相对而言,如果和 Ibatis 相比,它到成重量级的了)。 3、ORM:(Object Relation Mapping)对象关系数据库的映射这是 Hibernate 框架的重点,也就是说将我们程序中的实体(bean,这里也叫 POJO)和数据库中的表进行映射。java 类型和 sql类型映射,面向对象设计和关系型数据库设计的映射,从而我们只需要将更多的精力放到业务中,而不是 sql 数据库方面。 4、POJO:(Plain Ordinary Java Object),无格式的普通 java 对象,也就是上边说的实体,和数据库做映射的简单类。只是在这里提出了一个新的名词而已。 总而言之,Hibernate 就是将我们的数据库表和程序的 POJO 类进行映射,数据的操作进行了封装,使我们不用把数据库弄得非常精通,我们会面向对象编程就可以了,这样大大提高了我们的编程效率,而且对个人的知识要求也降低了。 二、Hibernate 基础 ----- 数据库操作 在 Hibernate 出现之前,对数据库操作是基于 JDBC,这中间经历了操作 JDBC、封装 JDBC、ORM 三个阶段。 1、操作 JDBC 阶段: 本阶段即在调用 JDBC 连接数据库的包时,需要自己进行编写的进行数据库用户登录验证的那段代码。在这段代码中可以执行 SQL 语句进行数据查询、插入、删除等。 2、封装 JDBC 阶段: 由于仅仅只是操作 JDBC,使得在实现不同逻辑功能时,都要重新编写进行数据库用户登陆验证的那段代码,使得代码重复很严重。为此,引入了 JavaBean的技术,书写一个 DBAccess.java 类进行数据库用户登陆验证和数据库操作,并把其中进行数据库操作部分封装成不同的函数,那么实现后续的逻辑功能时只需调用这些函数即可实现。 3、ORM 阶段: 在对 JDBC 进行封装之后,能够方便的实现数据库的操作。但是,在面向对象的编程开发中,数据库的操作与普通的面向对象的 Java 代码,显然是两种不同的开发思路。于是就产生了 ORM 阶段——使原来直接操作数据库变成了直接操作普通的 Java 类来实现相应的数据库操作。 三、Hibernate 理论基础 是ORM 对象关系映射 ORM 是 Object Relational Mapping 的简称,即对象关系映射。它是一种为了解决面向对象与关系数据库存在的互不匹配技术。简单地说,ORM 是通过使用描述对象和数据库之间映射的元数据,将 Java 程序中的对象持久化到关系数据库中。下面请看一个用户实体(建立数据表时,要描述的现实世界中的实现)、数据表(实体建立完后,抽象分析完成数据表建立)、Java 类(此处就是 ORM要完成的任务而抽象生成的 Java 类):

ORM 实现了数据表到 Java 对象的映射,这正是 ORM 的作用

四、持久层概念 ORM 是通过使用描述对象和数据库之间映射的元数据,将 Java 程序中的对象自动持久化到关系数据库中。由此便引入了以下两个新概念: (1)持久化:就是对数据和程序状态的保持。大多数情况下特别是企业级应用,数据持久化往往也就意味将内存中的数据保存到磁盘上加以固化,而持久化的实现过程则大多通过各种关系数据库来完成。 (2)持久层:把数据库实现当做一个独立逻辑拿出来,即数据库程序是在内存中的,为了使程序运行结束后状态得以保存,就要保存到数据库。持久层是在系统逻辑层面上,专致于实现数据持久化的一个相对独立的领域。持久层的目的是通过持久层的框架将数据库存储服务从服务层中分离出来,而 Hibernate 是目前最流行的持久层框架。

五、具体开发步骤: 1、在Eclipse中配置开发环境: (1)安装Hibernate插件: A、下载Hibernate插件,采用link方式安装 (2)添加XML约束文件 2、新建Maven工程,导入Hibernate的核心jar包、支持C3P0数据库连接池的jar包: c3p0-0.9.5.2.jar hibernate-c3p0-5.2.17.Final.jar

org.hibernate hibernate-core 5.2.17.Final org.hibernate hibernate-c3p0 5.2.17.Final com.mchange c3p0 0.9.5.2 2、创建Hibernate配置文件:

    org.hibernate.connection.C3P0ConnectionProvider
    
    20
    5
    120
    
   
     org.hibernate.dialect.Oracle10gDialect
    
     oracle.jdbc.driver.OracleDriver
    
     jdbc:oracle:thin:@localhost:1521:orcl
    
     scott
     root
    
      true
    
      true
    
      update
   
    
    

      
 2、创建持久化类:
      public class Product {
         private Integer p_id;
         private String  p_name;
         private Double  p_price;
         private String  p_phone;
         private String  p_address;
         ......//省去set/get方法
    }

 3、创建对象-关系映射文件:

 

    
        
        
           TB_PRODUCT_SEQ

4、在Hibernate配置文件中加入映射文件:

 5、通过Hibernate API 编写访问数据库的代码:

           //1.创建Configuration对象,并调用configure()方法从默认路径加载hibernate.cfg.xml文件
             Configuration config = new Configuration().configure();
     //2.获取SessionFactory类实例(相当于JDBC中的工厂类)
       SessionFactory sessionFactory = config.buildSessionFactory();
     //3.获取Session实例(相当于JDBC中的Connection对象) 
      Session session = sessionFactory.openSession();
     //4.开启事务
      Transaction ts = session.beginTransaction();
      
     //5.封装数据
      Product pro = new Product();
      pro.setP_name("钢笔");
      pro.setP_price(12.55);
      pro.setP_phone("02985368888");
      pro.setP_address("咸阳");
      
          //6.执行保存操作
      session.save(pro);
      //7.提交事务
      ts.commit();
      session.close();

注意: 1)4.0以前的版本使用,现在已经废弃; sessionFactory = configuration.buildSessionFactory(); 2)创建一个ServiceRegistry对象:hibernate4.x以后新添加的对象,hibernate的任何配置对象和服务都必须在该对象中注册了才能使用

     //Hibernate4.2之前版本的写法:

ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()) .buildServiceRegistry(); //Hibernate4.3之后版本的写法: ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build(); sessionFactory = configuration.buildSessionFactory(serviceRegistry);

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Hibernate Annotation (Hibernate 注解)

    英文:http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/

    Hongten
  • java之hibernate之hibernate查询

    1.数据库操作中最重要的是查询,Hibernate提供了多种查询方式来帮助程序员快速实现查询功能。

    Vincent-yuan
  • java之hibernate之hibernate缓存

    3.Hibernate提供了缓存来提高效率。hibernate缓存分为:一级缓存,二级缓存,查询缓存。

    Vincent-yuan
  • Hibernate的入门(Hibernate的环境搭建、Hibernate的API)

    Hibernate第一天(Hibernate的环境搭建、Hibernate的API、Hibernate的CRUD)

    AlbertYang
  • Hibernate配置access Hibernate 连接 access

    用户1258909
  • Hibernate 的应用(Hibernate 的结构)?

    SessionFactory sessionFactory = new Configuration().configure().

    MickyInvQ
  • Hibernate EntityManager

    Java Persistence API(JPA)是EJB3.0规范之一,定义了对数据库数据进行持久化操作的接口。HIbernate

    Hongten
  • 【Hibernate那点事儿】—— Hibernate知识总结

    前言: 上一篇简单的讲解了下Hibernate的基础知识。这里对Hibernate比较重要的一些知识点,进行总结和归纳。 总结的知识点: 1 关于...

    用户1154259
  • hibernate-笔记

    什么是 hibernate 框架     1.hibernate 框架应用在 javaee 三次结构中 dao 层框架     2.在dao 层里面对数据库做c...

    用户1197315
  • Hibernate简介

    爱撒谎的男孩
  • 初识Hibernate

    用户1127987
  • Hibernate与autoCommit

    JDBC 的autoCommit属性 对于每一个 JDBC connection,都有一个autoCommit属性,只有执行commit后,该connectio...

    用户1221057
  • Hibernate入门

    Hibernate是什么     Hibernate是一个轻量级的ORMapping框架     ORMapping原理(Object Relational M...

    xiangzhihong
  • Hibernate框架

    Hibernate是一个开放源代码的对象关系映射框架,,对JDBC进行了非常轻量级的对象封装,所以任何可以使用JDBC的地方都可以用Hibernate来替代,实...

    用户2909867
  • Hibernate之HelloWorld

    qubianzhong
  • Hibernate之saveOrUpdate

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35512245/articl...

    大黄大黄大黄
  • Hibernate配置

    Hibernate核心配置文件传递的是连接数据库的必备信息,还有一些可选配置,所以在一个使用Hibernate的工程中需要去完成一个这样的配置文件

    木瓜煲鸡脚
  • Hibernate第三天:Hibernate的一对多配置、Hibernate的多对多的配置

    * * 前提:一对多的双方都设置cascade="save-update"

    AlbertYang
  • Spring全家桶之SpringData——Spring 整合Hibernate与Hibernate Jpa

    注意 1. sql语句 ,是通过对象查询的表 ,虽然可以出现select 但是却不能出现通配符 *,故可以省略 Select * 2 .区别 getCur...

    时间静止不是简史

扫码关注云+社区

领取腾讯云代金券