Hibernate入门(一)之 hibernate的配置,运行流程以及优缺点解析

hibernate是什么

hibernate是一个ormapping框架
hibernate是一个操作数据库的操作框架

为什么要使用hibernate

jdbc的缺点

1、代码相当繁琐
2、从一个数据库移值到另外一个数据库,得改变很多内容,比较差
3、看下图:
Hibernate入门(一)之 hibernate的配置,运行流程以及优缺点解析_第1张图片
在进行请求的时候,直接从内存中提取数据就可以了,这样的过程称为数据缓存
Jdbc虽然提供了数据库连接池,但是没有提供数据缓存
4、jdbc技术是面向sql语句操作,而不是面向对象操作的

jdbc的优点:效率高

hibernate的优缺点:

优点:

      Hibdrnate的代码是比较简单的
      Hibernate是面向对象的操作
      Hibernate的移动植性很强
      Hibernate的缓存是世界级的

缺点:

    不能干预sql语句的生成(hibernate的sql语句是内部生成的,如果对sql语句的优化要求比较高就不适合用hibernate,因此也不适用于有千万级别表的数据量)

    表之间的结构复杂的话也不适合用hibernate,一般只适合于中小企业开发软件  

hibernate.cfg.xml配置文件解析

<hibernate-configuration>
    <session-factory>
        <!-- 要链接数据库的用户名 -->
        <property name="connection.username">root</property>
        <!-- 要链接数据库的密码 -->    
        <property name="connection.password">root</property>
        <!-- 链接数据库的url -->
        <property name="connection.url">
            jdbc:mysql://localhost:3306/itcastsh08_hibernate
        </property>
        <!-- 方言 告诉hibernate用什么样的数据库 -->
        <property name="dialect">
            org.hibernate.dialect.MySQLDialect
        </property>
     <!-- validate 默认值 根据持久化类和映射文件检查表的结构 update hibernate容器在启动的时候,会根据持久化类和映射文件检查表的结构 如果不存在,则创建,如果存在,则更新 create 每次启动hibernate容器,不管表是否存在,都会创建 create-drop 当启动hibernate容器时创建表,当hibernate容器销毁时,删除表 -->
        <property name="hbm2ddl.auto">update</property>
引入映射文件
    <mapping resource="cn/itcast/sh08/hibernate/domain/Person.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

其他配置:
这里写图片描述
show_sql表示在控制台输出sql语句
format_sql表示格式化输出的语句
方言如下:
Hibernate入门(一)之 hibernate的配置,运行流程以及优缺点解析_第2张图片
Hibernate支持的所有的方言

导入的jar解析

Hibernate入门(一)之 hibernate的配置,运行流程以及优缺点解析_第3张图片
antlr.jar利用它实现HQL到SQL的转换
util工具集
c3p0数据库连接池
dom4j-dom4j解析器
hibernate3-hibernate的核心包
javassist代码生成工具
jta-事务处理接口
log4j-日志系统

hibernate的执行流程

Hibernate入门(一)之 hibernate的配置,运行流程以及优缺点解析_第4张图片
文字解析:Hibernate容器-hibernate.cfg.xml-*.hbm.xml-class元素的name属性加在持久化类
具体的例子图解:
Hibernate入门(一)之 hibernate的配置,运行流程以及优缺点解析_第5张图片

2、关于sessionFactory

    1、sessionFactory是存放配置文件、映射文件、持久化类的信息的
    2、sessionFactory只有一个
    3、一个sessionFactory代表一个数据库的链接
    4、sessionFactory类本身是线程安全的

3、关于session

        1、一个session代表数据库的一个链接
        2、Crud操作是通过session来完成的

4、transaction是由session来创建的,因为先有链接,后有事务
5、完成操作以后,事务必须提交,session必须关闭

你可能感兴趣的:(数据库,框架,Hibernate,数据)