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. 原子性、一致性、隔离性、持久性

摘自黑马视频

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值