1.什么是hibernate
Hibernate是轻量级javaee应用的持久层框架,它用于实现dao,它是一个关系型数据库(行和列组成的)orm(对象关系映射)框架

2.什么是orm
通过将java对象映射到数据库表(二维关系表),通过操作java对象,就可以完成对数据表的操作

3.使用Hibernate的好处
能够让程序员通过操作对象的方式来操作数据库表

4Hiberante5 jar包下载地址
http://sourceforge.net/projects/hibernate/files/hibernate-orm/5.0.7.Final/hibernate-release-5.0.7.Final.zip/download

5.Hiberante的日志环境
hibernate使用日志输出系统slf4j输出日志,SLF4J提供了同意的记录日志的接口,使用Log4j作为记录日志的实现

6.hiberante环境的搭建
6.1.根据数据库表编写javabean

  1. 2.编写javabean映射文件,通常一个表对应一个映射文件,并且和javabean在同一个目录下,xxx.hbm.xml

        
        
    
    
    
    
    
        
            
        
    
        
    
    
    

    6.3编写住配置文件,名称hibernate.cfg.xml为主配置文件,配置了hibernate运行的参数信息,在classpath下定义





    
            第一部分:数据库基本配置
        
            com.mysql.jdbc.Driver
        
        
                jdbc:mysql://localhost:3306/crm_hibernate_test
        
        数据库用户名
        数据库密码
        配置数据库方言
        
            org.hibernate.dialect.MySQLDialect
        
第二部分:hibernate基本配置
        true
        true
        自动生成DDL 
                根据映射产生表结构的类型:
                create-drop:没有表结构创建,下次启动时删除重新创建。适合学习阶段
                create:只做创建
                update:探测表结构够的变化,对于数据库没有的,进行更新操作。适合学习阶段
                validate:对比与数据库的结构
                none:什么都不会做
        数据库必须自己手动创建,hibernate不会创建
        none

第三部分:映射配置
        
    

6.4.java代码

@Test
public void test1(){
    实体类 实体类 = new 实体类();
    Configuration cfg = new Configuration();
    cfg.configure();
    SessionFactory factory = cfg.buildSessionFactory();
    Session session = factory.openSession();
    Transaction tx = session.beginTransaction();
    session.save(实体类);
    tx.commit();
    session.close();
    factory.close();
}

7Hibernate相关api-Configuration
作用:加载配置文件,它默认只会加载类的根路径下的配置文件
默认构造函数:
它默认只会加载类的根路径下的hibernate.properties配置文件。不会加载xml文件。
configure:
该方法会加载类的根路径下的hibernate.cfg.xml配置文件

8.Hibernate相关api-SessionFactory
作用:用于生产session对象,是由Configuration对象来创建的
说明:
1、该对象维护着应用中所有的映射文件信息。
2、它还维护类一些预定义的SQL语句。
(只包含每个实体都通用的:全字段插入,全字段更新,根据ID查询,查询所有)
3、维护着连接数据库的信息,hibernate的基本配置
4、还维护着hibernate的二级缓存
5、所有由该工厂生产的Session,共享工厂中的数据。
结论:SessionFactory是线程安全的。
SessionFactory的使用原则:
SessionFactorty是一个重量级对象,里面维护了很多信息。不应该随意的创建和销毁。
一个应用最好只有一个SessionFactory。
在web工程中,应该是随着应用的加载,而创建。随着应用的卸载而销毁

8.Hibernate相关api-Session
作用:对数据库进行增删改查操作,开启事物等等
说明:
1、Session是一个轻量级的对象。绝大多数信息都是由SessionFactory维护的。
2、它的创建和销毁不会消耗太多资源。
3、Session对象不是线程安全的。
4、Session维护着hibernate的一级缓存
Session的使用原则:
保证一个线程只有一个Session
常用方法:
save():保存一个对象
persist():JPA中提供方法.一般不使用.
update():更新一个对象
saveOrUpdate():保存或更新一个对象.看数据库中是否有对应的记录.
如果有对应的记录就执行更新的操作,如果没有就保存.
delete():删除对象
merge():合并两个对象
get()/load():根据主键查询
createQuery():HQL查询
createSQLQuery():数据库操作对象
createCriteria():条件查询
close():关闭连接
clear():清除一级缓存
evict(Object entity):清除一级缓存指定的实体
refresh(Object entity):使用数据库数据更新一级缓存中指定的实体
flush():清理一级缓存,使用缓存数据更新数据库的数据。
9.Hibernate相关api-Transaction
作用:针对事务的控制。
常用方法:
commit();提交事务
rollback();回滚事务;
Hibernate的事务默认是不自动提交的.
如果没有开启事务,那么每个Session的操作,都相当于一个独立的事务

10hibernate的执行流程

Hibernate_第1张图片

执行流程描述如下:
1、编写hibernate配置文件及pojo类,包括:hibernate.cfg.xml主配置文件、与数据库表对应的映射文件及pojo类。
2、应用程序调用hibernate的api加载hibernate配置文件、映射文件等。
3、通过configuration创建sessionFactory会话工厂
4、通过sessionFactory会话工厂创建session会话。
5、通过session操作数据库,session中定义了很多操作数据库的方法
6、对于增、删、改数据库操作需要transaction事务管理对象提交或回滚事务。
7、对于查询数据库操作通过query查询对象执行查询。
8、释放资源,一个操作结束后关闭session,应用程序结束后关闭sessionFactory