一、Hibernate的简介
    1、Hibernate是一个开放源代码的对象关系映射框架
    2、对象关系映射:ORM  Object Relation Mapping
        对象与数据表的映射
        对象的属性与数据表的字段的映射
        
        Customer实体            cust_customer表
          cust_name                    cust_name
          cust_phone                cust_phone
         
        只要操作实体---->ORM框架----->实体的属性映射到表的字段位置

二、Hibernate的快速入门
    开发步骤:
        1、导入hibernate的jar包
            hibernate-release-5.0.7.Final\lib\required\*.jar
            日志相关的jar
            数据库驱动
        2、创建实体和表
   
            表结构:
                  cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)',
                  `cust_name` varchar(32) NOT NULL COMMENT '客户名称(公司名称)',
                  `cust_source` varchar(32) DEFAULT NULL COMMENT '客户信息来源',
                  `cust_industry` varchar(32) DEFAULT NULL COMMENT '客户所属行业',
                  `cust_level` varchar(32) DEFAULT NULL COMMENT '客户级别',
                  `cust_phone` varchar(64) DEFAULT NULL COMMENT '固定电话',
                  `cust_mobile` varchar(16) DEFAULT NULL COMMENT '移动电话'
                  
            实体结构:
                    private Long cust_id;
                    private String cust_name;
                    private String cust_source;
                    private String cust_industry;
                    private String cust_level;
                    private String cust_phone;
                    private String cust_mobile;
            
        3、配置实体与表的关系
            创建xml文件 该文件的命名约定 实体名.hbm.xml
            
            约束:/org/hibernate/hibernate-mapping-3.0.dtd
            
            <hibernate-mapping>
                <!-- 配置实体与表的关系 -->
                <class name="com.itheima.domain.Customer" table="cst_customer">
                    <!-- 配置实体的属性和表的字段的关系 -->
                    <id name="cust_id" column="cust_id">
                        <generator class="native"></generator>
                    </id>
                    <property name="cust_name" column="cust_name"></property>
                    <property name="cust_source" column="cust_source"></property>
                    <property name="cust_industry" column="cust_industry"></property>
                    <property name="cust_level" column="cust_level"></property>
                    <property name="cust_phone" column="cust_phone"></property>
                    <property name="cust_mobile" column="cust_mobile"></property>
                </class>
            </hibernate-mapping>
           
        4、配置数据源的信息
            配置hibernate的核心文件  
            在src下创建 hibernate.cfg.xml文件
            
            约束:/org/hibernate/hibernate-configuration-3.0.dtd
            配置的name查看hibernate.properties  位置:hibernate-release-5.0.7.Final\project\etc\hiebernate.properties
            
            
            <hibernate-configuration>
                <session-factory>
                    <!-- 数据源信息 -->
                    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
                    <property name="hibernate.connection.url">jdbc:mysql:///ssh324</property>
                    <property name="hibernate.connection.username">root</property>
                    <property name="hibernate.connection.password">root</property>
                </session-factory>
            </hibernate-configuration>
        
        
        5、测试:操作实体
            Configuration configuration = new Configuration().configure();
            SessionFactory sessionFactory = configuration.buildSessionFactory();
            Session session = sessionFactory.openSession();
            Transaction transaction = session.beginTransaction();
            
            //实体操作
            Customer customer = new Customer();
            customer.setCust_name("百度");
            session.save(customer);
            
            transaction.commit();
            session.close();
            sessionFactory.close();

三、Hibernate的配置
    1、映射文件  mapping文件
        <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
        <hibernate-mapping>
            <!-- 配置实体与表的关系
                    name: 要映射的实体的全限定名
                    table: 要映射的表的名称
            -->
            <class name="com.itheima.domain.Customer" table="cst_customer">
                <!-- 配置实体的属性和表的字段的关系
                        在hibenrate中id具备特殊地位  修改、删除等默认都是根据id执行的
                        id标签
                            name:实体中的id的属性名称
                            column:表中的id的字段名称
                            
                        主语:不管是id还是普通属性  当实体的属性名称 与 表的字段名称 一致时 此时column可以省略
                -->
                <id name="cust_id">
                    <!-- 主键生成策略 -->
                    <generator class="native"></generator>
                </id>
                
                <!-- 配置普通属性
                        name:实体中的属性名称
                        column:表中的字段名称
                 -->
                <property name="xxx"></property>
                <property name="cust_name"></property>
                <property name="cust_source"></property>
                <property name="cust_industry" column="cust_industry"></property>
                <property name="cust_level" column="cust_level"></property>
                <property name="cust_phone" column="cust_phone"></property>
                <property name="cust_mobile" column="cust_mobile"></property>
            </class>
        </hibernate-mapping>
    
    2、核心配置文件
        <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
        <hibernate-configuration>

<!--
                session工厂:造session对象
                session对象:会话对象 hibernate与数据库的连接对象
                
                session工厂内部需要配置三部分内容
                    1、数据源信息
                    2、hibernate其他配置参数
                    3、加载映射关系    
             -->
            <session-factory>
                <!-- 1、数据源信息 -->
                <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
                <property name="hibernate.connection.url">jdbc:mysql:///ssh324</property>
                <property name="hibernate.connection.username">root</property>
                <property name="hibernate.connection.password">root</property>
                
                <!-- 2、hibernate的其他配置参数 -->
                <!-- 2.1  配置数据库方言 -->
                <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
                <!-- 2.2 控制台是否打印sql语句 -->
                <property name="hibernate.show_sql">true</property>
                <!-- 2.3 格式化sql语句 -->
                <property name="hibernate.format_sql">true</property>
                <!-- 2.4 ddl策略
                        PS:
                            ddl:数据定义语言:定义数据表和数据库
                            dml:数据操作语言:对数据的增删改操作
                            dql:数据查询语言:对数据的查询操作
                            dcl:数据控制语言:对数据库的权限 用户等操作
                        取值:
                            create-drop: 创建删除  用于测试
                            create:创建   用于测试
                            validate: 检测  必须存在表且映射关系与表的结构一致    可以用于生产环境
                            update: 更新  档映射关系与数据表结构只要不一致 自动更新表结构       可以用于生产环境(使用最多)
                -->
                <property name="hibernate.hbm2ddl.auto">update</property>
                <!-- 2.5 指定第三方的数据源 c3p0
                        导入hibernate-release-5.0.7.Final\lib\optional\c3p0\*.jar
                -->
                <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
                <!-- 2.6 配置session与当前线程绑定:了解
                        注意:后期集成spring之后 与线程绑定这件事情不需要我们操作  spring自动操作
                 -->
                <property name="hibernate.current_session_context_class">thread</property>
                
                <!-- 3、加载映射 -->
                <mapping resource="com/itheima/domain/Customer.hbm.xml"/>
                
            </session-factory>
        </hibernate-configuration>

四、Hibernate的相应API
    1、session获取相关API
        //创建配置对象
        //Configuration configuration = new Configuration();
        //加载类加载路径下(src)hibernate.cfg.xml文件
        //configuration.configure();
        //等同于
        Configuration configuration = new Configuration().configure();
        
        //通过配置对象 去构建session工厂(session工厂的创建下需要使用到hibernate的核心配置文件)
        //sessionFactory是一个重量级对象(对象创建与销毁很消耗资源) 线程安全的
        SessionFactory sessionFactory = configuration.buildSessionFactory();
        //会话对象,hibernate与数据库的连接会话,session是一个轻量级对象   线程不完全
        Session session = sessionFactory.openSession(); //通过工厂获得一个信息的session
        //Session session = sessionFactory.getCurrentSession(); //从当前线程上获得session
        
        //开启事务
        Transaction transaction = session.beginTransaction();
        
        //实体操作
        Customer customer = new Customer();
        customer.setCust_name("5555");
        session.save(customer);
        
        //事务回滚
        //transaction.rollback();
        //事务提交
        transaction.commit();
        
        //释放资源
        session.close();
        sessionFactory.close(); //从线程上获得session 那么不需要手动关闭

Hibernate知识点小结(一)--快速入门的更多相关文章

  1. Finecms模板标签调用小结 方便快速入门

    最近接了一个单子客户要求用finecms进行建站,由于也是php代码,也可以直接调用相关函数,所以上手相对比较快,ytkah总结了一些常用的函数方便您快速入门Finecms.一个网站一般由主页.栏目页 ...

  2. Hibernate知识点小结(四)--JPA

    一.jpa的简介和入门 JPA:Java Persistence API,接口规范    Hinernate内部为JPA规范提供实现        开发步骤(EntityManager):       ...

  3. Hibernate知识点小结(三)-->一对多与多对多配置

    一.多表关系与多表设计 1.多表关系        一对一:            表的设计原则(分表原则):                优化表的性能                基于语意化分表 ...

  4. Hibernate知识点小结汇总

    Hibernate部分 1.为什么要使用Hibernate开发你的项目呢?Hibernate的开发流程是怎么样的? 为什么要使用 ①.对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复 ...

  5. Hibernate知识点小结(二)

    一.持久化对象和标识符    1.持久化类        配置完关系后,操作的实体对应的类,成为持久化类 (Customer) 2.持久化类标识符(oid:object id)        3.持久 ...

  6. CUDA编程之快速入门

    CUDA(Compute Unified Device Architecture)的中文全称为计算统一设备架构.做图像视觉领域的同学多多少少都会接触到CUDA,毕竟要做性能速度优化,CUDA是个很重要 ...

  7. CUDA编程之快速入门【转】

    https://www.cnblogs.com/skyfsm/p/9673960.html CUDA(Compute Unified Device Architecture)的中文全称为计算统一设备架 ...

  8. Hibernate第一篇【介绍Hibernate,简述ORM,快速入门】

    前言 前面已经学过了Struts2框架了,紧接着就是学习Hibernate框架了-本博文主要讲解介绍Hibernate框架,ORM的概念和Hibernate入门 什么是Hibernate框架? Hib ...

  9. Kotlin新语言简介和快速入门知识点

    Kotlin新语言简介和快速入门知识点 简介:Kotlin是最近由JetBrains发布的一种基于JVM的编程语言,已经被Google宣布为开发Android App的一级语言Kotlin有着与Jav ...

随机推荐

  1. 今天研究Unity Ioc 框架

    今天研究Unity Ioc 框架,被自己坑了两个多小时. 运行就报错,反反复复检查了很多次,配置文件,代码都没有问题,也从新写了好几遍. 最后仔细看报错消息才知道,config文件没有生成到目录……… ...

  2. 【学习笔记】String进阶:StringBuffer类(线程安全)和StringBuilder类

    一.除了使用String类存储字符串之外,还可以使用StringBuffer类存储字符串.而且它是比String类更高效的存储字符串的一种引用数据类型. 优点: 对字符串进行连接操作时,使用Strin ...

  3. oracle学习篇十一:视图

    视图是存储的查询定义. 1. 创建视图的语法如下: Create [OR REPLACE] [FORCE | NOFORCE] VIEW view_name[(alias,alias,...)] AS ...

  4. stark——快速过滤list_filter

    一.获取过滤字段 1.给自定义配置类配置list_filter app01/stark.py: class BookConfig(ModelStark): list_display = [" ...

  5. 2018.10.23NOIP模拟赛解题报告

    心路历程 预计得分:\(100 + 50 + (10 \sim 50)\) 实际得分:\(100 + 10 + 50\) 这可能是我打的最懵逼的一场考试没有之一.. T1两个小时才做出来也是醉了. T ...

  6. js中的this问题

    this this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上 this的最终指向的是那个调用它的对象(这里其实并不完全对,this的指向有时候会很微妙,得 ...

  7. vue+mock.js+element-ui模拟数据搞定分页

    效果如图: 前提是搭好vue前端框架,npm install mockjs引入mock.js 当前页全部代码如下,其他有关element-ui的引入未提到,仅作参考用 <!-- 用户管理 --& ...

  8. angular怎么样注销事件

    angular怎么样注销事件 $scope.$on("$destroy", function() { //清除配置,不然scroll会重复请求 }) 在Controller中监听$ ...

  9. C++基础--malloc和new的区别

    (1)malloc在C和C++中都可以使用,用来申请一段内存:申请的内存一定要用free释放,然后把指针置为null: new只能在C++中使用,用于动态内存分配:new的对象要delete掉: (2 ...

  10. FragmentActivity的简单使用

    如图是效果图 当  点击下面 不同 的按钮 进入 不同的界面 其中 要一个 主布局当做容器 , 和3个不同的 布局来对应下面的3个按钮界面 主程序的 代码和布局如下 import android.su ...