欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

hibernate简单入门阶段一

程序员文章站 2024-03-23 12:58:28
...

hibernate简单入门1

什么是框架?

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

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

搭建hibernate框架

  1. 导入所需jar包 和数据库的驱动包
    hibernate简单入门阶段一

  2. 创建数据库表以及操作的实体
    hibernate简单入门阶段一
    hibernate简单入门阶段一

  3. 书写orm元数据(对象和表的配置文件)hibernate简单入门阶段一
  4. 书写主配置文件hibernate简单入门阶段一
  5. 测试hibernate简单入门阶段一
    hibernate简单入门阶段一

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个必选属性hibernate简单入门阶段一
    • 3个可选属性:hibernate简单入门阶段一
    • 元数据引入配置hibernate简单入门阶段一

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); 
    

    hibernate简单入门阶段一

hibernate简单入门阶段一
加载元数据,如果主配置文件中已经引入了映射文件位置就不需要加载

  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链接地址

相关标签: hibernate基础入门