Hibernate框架学习第一天

学习内容来自于视频资源:https://space.bilibili.com/80018130

1. 什么是Hibernate框架

(1)hibernate框架是应用在web三层结构中 dao层的矿架;
(2)hibernate框架可以实现对数据库的crud操作,hibernate框架的底层代码就是jdbc;
(3)hibernate框架是一个开源的轻量级的框架;
(4)hibernate框架是基于orm思想开发的;

2. 什么是orm思想

(1)orm单词对应:object relational mapping,对象关系映射;
(2)文字描述:让实体类中的属性和数据库表中的字段进行一一对应;

3. 配置实体类和数据表的映射关系

(1)使用xml配置文件实现映射关系;

  • 第一步:创建xml格式的配置文件;
    • 映射配置文件名和位置关系没有特殊要求(在Maven中,该文件需要放到src/main/resources路径下);
    • 建议:在实体类所在包里面创建,实体类名称.hbm.xml;
  • 第二步:引入xml中关于hibernate的约束;

  • 第三步:配置映射关系;
    先上代码,在做解释(代码为User.hbm.xml文件中的代码):

    
        
            
        
        
        
    

上述代码中的class标签中的name的值为实体类的全路径,table对应着数据库中的表单名;
上述代码中很多标签中都有name和column属性,其中name为实体类的属性名、column为数据库表单中的字段名;
其中id标签需要注意一下,id标签对应着实体类和表单中的id,该属性(字段)有一个特点就是唯一性。并且在上述代码的id标签中包含了一个generator标签,其中class属性值为native,该属性代表着表单中的主键和自增长模式;

  • 第四步:创建hibernate的核心配置文件,该文件的位置固定(必须在src文件下),名称固定(hibernate.cfg.xml);
    • 约束:

    • 配置文件中的代码:

    
    

        com.mysql.jdbc.Driver
        jdbc:mysql://localhost/test
        root
        Woaizhangjing123
        

        
        true
        
        true
        
        update
        
        org.hibernate.dialect.MySQLDialect
        

        
    

4. 测试,实现添加操作

(1)加载核心配置文件;

(2)创建sessionFactory对象

(3)使用SessionFactory创建session对象

(4)开启事务

(5)写具体逻辑crud操作

(6)提交事务

(7)关闭资源

代码如下:

import com.hibernate_study.modul.User;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

public class HibernateTest {

    @Test
    public void testAdd(){
        //1.加载hibernate核心配置文件
        Configuration cfg = new Configuration();
        cfg.configure();
        //2.创建SessionFactory对象
            //读取hibernate核心配置文件内容,创建sessionFactory,
            //在读取过程中,根据映射关系,在配置的数据库里边把表创建
        SessionFactory sessionFactory = cfg.buildSessionFactory();
        //3.使用SessionFactory创建session对象
        Session session = sessionFactory.openSession();
        //4.开启事务
        Transaction tx = session.beginTransaction();
        //5.写具体逻辑crud操作
        User user = new User("小王","123123");
        session.save(user);
        //6.提交事务
        tx.commit();
        //7.关闭资源
        session.close();
        sessionFactory.close();

    }
}

5. Hibernate配置文件详解

(1)普通工程构建时映射配置文件的名称和位置没有固定要求,但是Maven构建项目时映射配置文件需要放到src/main/resources路径下;
(2)映射配置文件中name属性中放的都是实体类中的属性名,column写的都是数据库表单相关的属性,column可以省略,默认和name的值一样;
(3)property标签中还有一个type属性,该属性用来设置生成表单的类型,但是一般不用,会自动对应类型;
(4)核心配置文件的名称和位置是固定的;但是Maven中的路径还是在src/main/resources路径下;

6. 核心API讲解

(1)Configuration:

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

(2)SessionFactory:

  1. 使用cinfiguration对象创建sessionFactroy对象,并在创建该对象时,会根据核心配置文件中,有数据库配置,有映射文件部分,到数据库里面根据映射关系把表创建;
  2. 创建该对象时非常耗费资源,因此一个项目中之创建一个这个对象,可以利用静态代码块来处理,代码如下:
package com.hibernate_study.modul;

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

public class HibernateUtils {
    static private Configuration configuration;
    static private SessionFactory sessionFactory;
    static {
        configuration = new Configuration();
        configuration.configure();
        sessionFactory = configuration.buildSessionFactory();
    }

    public static SessionFactory getSessionFactory(){
        return sessionFactory;
    }
}

(3)Session:

  1. session类似于jdbc中的connection的连接,可以调用session中的方法来进行crud操作;
  2. session对象是单线程对象,session不能共用;

(4)Transaction:

  1. 事务的对象中有commit()提交和rollback()回滚操作;
  2. 事务的概念:原子性、一致性、隔离性、持久性;
    知识共享许可协议
    本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。

你可能感兴趣的:(java框架)