zoukankan      html  css  js  c++  java
  • Hibernate介绍与简单使用示例代码

    1 技术介绍

    1.1、Hibernate

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架。hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
    Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JaveEE架构中取代CMP,完成数据持久化的重任。

    什么是ORM?
    所谓的ORM,对象关系映射(Object Relation Mapping),指的是将一个Java中的对象与关系型数据库中的表建立一种映射关系,从而操作对象就可以操作数据库中的表。可以把ORM理解为关系型数据和对象的一个纽带,开发人员只需要关注纽带一端映射的对象即可。

    1.2、作用

    1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
    2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作
    3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。
    4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。

    1.3.1、优势

    1. 对象化。
    2. 更好的移植性。
    3. 开发效率高。
    4. 缓存机制的使用。

    1.3.2、不足

    1. 灵活性和效率不如原生JDBC程序。
    2. 配置文件复杂。
    3. 不适于复杂关系的数据表维护。
    4. 批量操作上的弱势。

    1.4、与MyBatis的对比

    相同点

    1. Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。
    2. Hibernate和MyBatis都支持JDBC和JTA事务处理。

    不同点

    1. hibernate是全自动,mybatis是半自动
    2. hibernate数据库移植性远大于mybatis
    3. hibernate拥有完整的日志系统4、mybatis相比hibernate要关心很多细节
    4. sql直接优化上,mybatis要方便很多
    5. 缓存机制上,hibernate要更好一些

    2 使用示例

    2.1、基本配置

    这里讲的是XML配置,包括:
    (1)核心配置文件:hibernate.cfg.xml (放到src目录下)
    (2)映射配置文件:***.hbm.xml(与实体类放同一目录),主要是用于描述类与数据库中的表的映射关系
    核心配置文件:hibernate.cfg.xml

    1. 数据库连接配置

    2. 方言配置

    3. 映射文件配置

    映射配置文件:***.hbm.xml

    1. 建立类与表的映射

    2. 建立属性与主键的映射

    3. 建立普通属性和表中的字段相对应

    2.2、工作原理

    1. Configuration().configure()读取并解析hibernate.cfg.xml配置文件
    2. 由hibernate.cfg.xml中的<mapping resource=“**.hbm.xml"/>读取并解析映射信息
    3. config.buildSessionFactory();创建SessionFactory
    4. sessionFactory.openSession();打开Sesssion
    5. session.beginTransaction();创建事务Transation
    6. persistent operate持久化操作//一般指Save方法
    7. session.getTransaction().commit();提交事务
    8. 关闭Session
    9. 关闭SesstionFactory

    2.3、常用API

    org.hibernate.cfg.Configuration
    加载主配置文件以及映射文件,启动 hibernate。
    主配置文件中主要有:数据库连接四要素,方言,数据源…
    默认获取 hibernate.cfg.xml 配置文件
    SessionFactory接口
    用来获取和管理我们的seesion,它在hibernate中其实是相当于一个缓冲区的作用
    这个接口是hibernate的一个重量级对象,系统开销大(重要)。
    它是单例的,但是它是线程安全的
    Session接口
    应用程序和数据库的一次交互(会话),每次执行一个数据库的事务,都要创建新的session实例,用完以后需要关闭,不关闭,session 会不够用,内存会崩溃。
    一个轻量级的接口,它是多例的,但是它是线程不安全的。
    如果要保证一个线程一个session,所以需要在hibernate.cfg.xml里面配置

    2.4、例子一:Java中使用Hibernate(结尾附代码)

    1. 环境:Windows 10 + Eclipse Java 2019-09 + Mysql 8

    2. 创建数据库和表,这里使用的数据库是Mysql,可视化工具是Navicat

    3. 创建项目

    4. 导入jar包

    5. 创建实体类 Student.java

    6. 编写Hibernate的配置文件 Student.hbm.xml,在实体类同一个包下创建

    其中,主键字段必须加上

    否则会报错

    Repeated column in mapping for Student:(should be mapped with insert="false" update="false")
    
    1. 编写Hibernate的配置文件 hibernate.cfg.xml,在src下创建

    2. 创建单元测试类 StudentTest1.java

    3. 启动测试类

    1. 查看数据库,成功添加记录
    2. 整个工程的结构

    2.5、例子二:在Spring中整合Hibernate(结尾附代码)

    1. 环境:Windows 10 + Eclipse Java 2019-09 + Mysql 8

    2. 创建maven项目,添加依赖

    3. 添加配置文件applicationContext.xml文件,配置数据库的驱动连接和sessionFactory的初始化对象

    4. 工程代码目录结构

    5. 使用注解方式,实现实体类对应的数据库表

    6. 实体类 Student.java 主键属性需要加上@Id,否则会报错

    7. StudentDao.java 实现一个创建记录的方法

    8. StudentService.java

    9. 测试类 App.java

    10. 启动测试类

    11. 数据库实现记录创建

    代码链接

    链接
    提取码:qjqn

  • 相关阅读:
    ASP.NET MVC路由规则
    VS2013 修改TFS的本地映射路径
    新安装的VS的一些设置
    ASP.NET MVC验证标注的扩展-checkbox必选
    进入做Mvc项目的时候 返现某个文件夹下面css js png等静态文件都访问不了
    Mac入门 (二) 使用VMware Fusion虚拟机
    Mac入门(一)基本用法
    软件测试面试 (二) 如何测试网页的登录页面
    软件测试面试 (一) 如何测试一个杯子
    Python自动化测试 (二) ConfigParser模块读写配置文件
  • 原文地址:https://www.cnblogs.com/ahmao/p/13746178.html
Copyright © 2011-2022 走看看