Hibernate的配置及使用

Hibernate配置文件的使用

创建映射配置文件

  • 创建xml格式的配置文件

  • 映射配置文件名称和位置没有固定要求

  • 建议:在实体类所在包里面创建,实体类名称hbm.xml

  • 配置文件是xml格式,在配置文件中首先引入xml约束

    • 一般是dtd约束
  • 配置映射文件

    <hibernate-mapping>
     <!--1 配置类和表对应  
    class标签
    name属性:实体类全路径
    table属性:数据库表名称
    --> 
    <class name="org.vector.User" table="t_user">
        <!--2 配置实体类id和表id对应
            hibernate要求实体类有一个属性唯一值
            hibernate要求表有字段作为唯一值
        -->
          <!--id标签
        name属性:实体类里面id属性名
        column属性:生成表字段名称
        -->
          <id name="uid" column="uid">
            <!-- 设置数据库表id增长策略 -->
              <!--
                native:生成表id值就是主键自动增长
            -->
              <generator class="native"></generator>
          </id>
          <!-- 配置其他属性和表字段对应
            name属性:实体类属性名称
            column属性:生成表中的字段名称
        -->
          <property name="username" column="username"></property>
          <property name="password" column="password"></property>
          <property name="address" column="address"></property>
      </class>
    </hibernate-mapping>

    创建hibernate核心配置文件

    需要自己创建数据库

    核心配置文件格式xml,但是核心配置文件名称和位置是固定的

    位置:必须src下面

    名称:必须hibernate.cfg.xml

    引入约束

    hibernate操作过程中,只会加载核心配置文件,其他配置文件不会加载

    第一部分:配置数据库信息

    第二部分:配置hibernate信息

    第三部分:把映射文件放到核心配置文件中

    <hibernate-configuration>
    <session-factory>
        <!-- 第一部分:配置数据库信息 必须的 -->
          <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
          <property name="hibernate.connection.url">jdbc:mysql:///数据库名</property>
          <property name="hibernate.connection.username">用户名</property>
          <property name="hibernate.connection.password">密码</property>
        <!-- 第二部分:配置hibernate信息 可选的 -->
          <!-- 输出底层sql语句 -->
          <property name="hibernate.show_sql">true</property>
          <!-- 输出底层sql语句格式 -->
          <property name="hibernate.format_sql">true</property>
          <!-- hibernate帮创建表,需要配置之后 
            update:如果已经有表,更新,如果没有,创建    
        -->
          <property name="hibernate.hbm2ddl.auto">update</property>
          <!-- 配置数据库方言 
            在mysql里面实现分页 关键字limit,只能在mysql里面使用
            在oracle数据库,实现分页rownum
            让hibernate框架识别不同数据库的自己特有的语句
        -->
          <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <!-- 第三部分:把映射文件放到核心配置文件中 必须的 -->
          <mapping resource="org/vector/domain/User.hbm.xml"/>
          <!---->
      </session-factory>
    </hibernate-configuration>

    实现添加操作

    第一步 加载hibernate核心配置文件

    第二步 创建SessionFactory对象

    第三步 使用SessionFactory创建session对象

    第四步 开启事务

    第五步 写具体逻辑crud操作

    第六步 提交事务

    第七步 关闭资源

    public class HibernateDemo {
      @Test
      public void testAdd() {
          // 到src下面找到名称时hibernate.cfg.xml
          // 在hibernate里面封装对象
          Configuration cfg = new Configuration();
          cfg.configure();
          // 读取hibernate核心配置文件内容,创建sessionFactory
          // 在过程中,根据映射关系,在配置数据库里面把表创建
          SessionFactory sessionFactory = cfg.buildSessionFactory();
          // 类似于连接
          Session session = sessionFactory.openSession();
          // 开启事务
          Transaction tx = session.beginTranaction();
            // 添加的功能
          User user = new User();
          user.setUsername("小王");
          user.setPassword("250");
          user.setAddress("日本");
          // 调用session的方法实现添加
          session.save(user);   
          // 提交事务
          tx.commit();
          // 关闭资源
          session.close();
          sessionFactory.close();
      }
    }

hibernate配置文件详解

hibernate映射配置文件

  1. 映射配置文件名称和位置没有固定要求
  2. 映射配置文件中,标签name属性值写实体类相关内容
    1. class标签name属性值实体类全路径
    2. id标签和property标签name属性值,实体类名称
  3. id标签和property标签,column属性可以省略
    1. 不写值和name属性值一样
  4. property标签type属性,设置生成表字段的类型,自动对应类型

hibernate核心配置文件

  1. 配置写位置要求
    • hibernate-configuration
    • session-factory
  2. 配置三部分要求
    1. 数据库部分必须的
    2. hibernate部分可选
    3. 映射文件必须
  3. 核心配置文件名称和位置是固定的
    1. 位置:src下面
    2. 名称:hibernate.cfg.xml

hibernate核心api使用

Configuration

  1. 到src下面找到hibernate.cfg.xml配置文件,创建对象,把配置文件放到对象里面(加载核心配置文件)

SessionFactory

  1. 使用Configuration对象可以创建SessionFactory对象

    1. 创建SessionFactory过程中做事情:
      1. 根据核心配置文件中,有数据库配置,有映射文件部分,到数据库里面根据映射关系创建表
  2. 创建SessionFactory过程中,这个过程特别耗资源(自动创建表)

    1. 在hibernate操作中,建议一个项目一般创建一个SessionFactory对象
  3. 具体实现

    1. 写工具类:写静态代码块实现
    static Configuration cfg = null;
    static SessionFactory sessionFactory = null;
    static {
     // 加载核心配置文件
       cfg = new Configuration();
       cfg.configure();
    
       //创建SessionFactory
       sessionactory = cfg.buildSessionFactory();
    }
    public static SessionFactory getSessionFactory() {
       return sessionFactory;
    }

Session

  1. 类似于jdbc中的connection
  2. 调用session里面不同的方法实现crud操作
    1. 添加save方法
    2. 修改update方法
    3. 删除delete方法
    4. 根据id查询get方法
  3. session对象单线程对象
    1. session对象不能共用,只能自己使用

Transaction

  1. 事务对象
  2. 事务提交和回滚
  3. 事务概念
    1. 事务四个特性
      1. 原子性、一致性、隔离性、持久性

摘自黑马视频

扫描二维码关注公众号,回复: 3415687 查看本文章

猜你喜欢

转载自blog.csdn.net/Night_X/article/details/79822337
今日推荐