hibernate简单入门阶段一

hibernate简单入门1

什么是框架?
  1. 架是为了提高开发效率,将一些功能进行封装,使用的时候只需要调用即可。
  2. 框架主要是实现的是dao层的功能的封装,帮我们简化并完成数据库的相关操作。
  3. 什么是框架?
    这里写图片描述

  4. hibernate:操作数据库的时候,可以使用面向对象的方式来实现,从而省略了sql语句的书写。hibernate属于一种orm(对象关系型映射object-relation-mapping)框架,hibernate操作数据库的过程可以理解为:这里写图片描述

搭建hibernate框架
  1. 导入所需jar包 和数据库的驱动包
    这里写图片描述

  2. 创建数据库表以及操作的实体
    这里写图片描述
    实体类

  3. 书写orm元数据(对象和表的配置文件)这里写图片描述
  4. 书写主配置文件这里写图片描述
  5. 测试这里写图片描述
    这里写图片描述
hibernate框架配置文件详解
  • orm元数据配置文件:

    • 根元素:配置表和实体对象的关系,package属性填写包名,即实体所在类,配置后在里面可以直接使用简单类名
    <hibernate-mapping package="com.linchong.entity">
    
    </hibernate-mapping>
    • class属性:配置实体和表的对应关系,name表示完整类名,table表示数据库的表名
    <class name="com.linchong.entity.Client" table="client">
    </class>
    <!--如果配置了完整包名>
    <class name="Client" table="client"></class>
    • id属性:id用来配置主键的映射属性,name用来指定主键对应的属性名,column用来填写表中对应的主键列名,其中的generator用来主键的生成策略
    <id name="u_id" column="u_id">
      <generator class="native"></generator>
    </id>
    • property属性:配置除了id以外的普通属性映射,
      name:属性名;
      column(可选):列名,默认使用属性名;
      type(可选):填写列的属性的类型,默认hibernate会自动检测实体的属性类型,每个类型有三种填法:java类型|hibernate类型|数据库类型;
      not-null(可选):配置该属性(列)是否为空,默认为false
      length(可选):配置数据库中列的长度,默认值:使用数据库类型的最大长度,这里是取varchar(255最大)
    <property name="name" column="name"></property>
    <property name="age" column="age"></property>
    <property name="addr" column="addr"></property>
    • 整个元数据配置文件的结构:
    <!-- 配置表和实体对象的关系 -->
    <hibernate-mapping package="">
       <class name="" table="">
          <id name="" column="">
            <generator class=""></generator>
          </id>
          <!-- property元素:配置除id以外的普通属性映射-->
          <property name="" column=""></property>
       </class>
    </hibernate-mapping>
  • hibernate主配置文件详解:

    • 5个必选属性这里写图片描述
    • 3个可选属性:这里写图片描述
    • 元数据引入配置这里写图片描述
hibernateAPI详解
  • Configuration:用来配置加载类,加载主配置以及管理映射,orm数据加载即

    Hibernate 运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类;

    数据库Dialect,数据库连接池等(对应 hibernate.cfg.xml 文件);

    持久化类与数据表的映射关系(*.hbm.xml 文件)

    • 创建:
    //空参构造,它默认加载src目录下的hibernate.cfg.xml文件
    Configuration conf = new Configuration();
    //指定加载的配置文件
    File file = new File("xml文件位置");
    Configuration cfg = new Configuration().configure(file); 
    

    这里写图片描述

这里写图片描述
加载元数据,如果主配置文件中已经引入了映射文件位置就不需要加载

  conf.addReource("映射文件位置");
 //第二种方式:加载.properties格式的文件
  Configuration conf = new Configuration();
  conf.addResource("映射文件位置");
  • SessionFactory:

    功能:

    SessionFaction对象

    • SessionFaction功能:用于创建操作数据库核心对象session对象的工厂,简单说就是创建session对象

    • 注意:

      1.sessionFaction负责保存和使用所有配置信息,消耗内存资源大

      2.sessionFactory属于线程对象设计

    • 结论:保证在web项目中只创建一个sessionFactory

    • 使用:

      • 创建SessionFactory对象:
       //4.根据配置创建SessionFactory对象
       SessionFactory sf = conf.buildSessionFactory();
      • 打开一个新的session对象
      sf.getCurrentSession()
      • 获得线程对象
      sf.openSession();
  • Session:

    • 功能:

      • 表示hibernate框架与数据库之间的连接(会话),
      • session类似于JDBC年代的connection对象。
      • 还可以完成对数据库的增删改查操作,session是hibernate操作数据库的核心对象
    • 操作:

      //获得事务,session获得操作事务的Transation对象
      //Transaction tx = session.getTransaction();
      //开启事务并获得操作事务的tx对象
      Transaction tx = session.beginTransaction();
      //增
      Client c = new Client();
      c.setUsername("张三");
      session.save(c);
      //删
      Client c = session.get(Client.class,1);
      session.delete(c);
      //改
      Client c = session.get(Client.class,1);
      c.setUsername("李四");
      session.update(c);
      //查
      Client c = session.get(Client.class,1);
      System.out.println(customer);
    • Transaction:封装了事务的操作

      操作:

      //打开事务
      //方式1
          Transaction tx = session.getTransaction();
          tx.begin();
          //方式2
          //开启事务并获得操作事务的tx对象(建议)
          Transaction tx1 = session.beginTransaction();
      //提交事务  
          tx1.commit();
      //回滚事务
          tx1.rollback();
  • 封装工具类:

package com.linchong.utils;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtils {

    private static SessionFactory sf;
    static{
        //1.创建空参构造
         Configuration conf = new Configuration().configure();
         //2.根据配置创建SessionFactory对象,一个web项目要保证创建一个sessionfactory对象
          sf = conf.buildSessionFactory();
    }
    //获得session=>获得全新session
    public static Session openSession(){

     //3.获得session
     Session session = sf.openSession();
     return session;
    }
    //获得session=>获得与线程绑定的session
    public static Session getCurrentSession(){
     //3.获得session
     //打开一个新的session对象
     Session session = sf.getCurrentSession();
     return session;
    }

}

demo链接地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

罚站的孩子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值