zoukankan      html  css  js  c++  java
  • 【Hibernate】03 配置文件 & API

    映射器文件:

    - 字段的Column属性可以不写缺省,这将表示和实体类的属性标识一样

    - type 属性用于声明表字段在Java中的类型,这个属性可不写缺省,自动匹配


    Hibernate 4个核心API

    Configuration 配置

    // 创建配置对象
    Configuration configuration = new Configuration();
    
    // 调用配置方法,这个方法会直接去找hibernate.cfg.xml 不需要按名字注入配置
    configuration.configure();

    我们查看源码发现这个方法他就是这么写的

    所以为什么才要求我们Hibernate的核心配置文件必须是这个名称

    或者使用这个重载方法,注入文件路径

    /config/hibernate.cfg.xml

    SesionFactory 会话工厂

    使用配置对象创建会话工厂

    读取配置JDBC参数,和映射文件信息,在数据库中创建数据表或者更新

    创建SessionFactory的过程中是特别消耗资源的

    最佳使用:

    工厂实例有且仅有唯一一个实例,并一直存留围绕整个项目的运行器

    不应该多次创建,所以即单例模式,写在静态代码块即可

    编写Hibernate工具类

    package cn.dai.util;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    
    /**
     * @author ArkD42
     * @file Hibernate
     * @create 2020 - 05 - 10 - 11:18
     */
    public class HibernateUtil {
        
        private HibernateUtil(){}
        
        private static SessionFactory sessionFactory;
        
        static {
            Configuration configuration = new Configuration();
            configuration.configure();
            sessionFactory = configuration.buildSessionFactory();
        }
        
        public static Session getSession(){
            return sessionFactory.openSession();
        }
    }

     

    Session SQL会话

    实现数据库的CRUD操作

    - 添加 SAVE

    - 修改 UPDATE

    - 删除 DELETE

    查询是一个特殊的场景:

    - 根据ID查询,GET

    Session是一个单线程的对象,不能被公用!!!

    最佳使用是在方法中,使用完毕立刻释放

    下次使用再到工厂获取

    Transaction

    - 通过会话对象获取实例,开启事务 

    Transaction transaction = session.beginTransaction();

    不要等到执行SQL之后再开启事务,建议获取到会话实例之后立刻开启事务

    - 提交事务

    // 提交事物
    transaction.commit();

    - 如果失败,应该进行回滚处理

    // 回滚事物
    transaction.rollback();

    使用工具类再简化的测试

        @Test
        public void letsGetThisWork2(){
            Session session = HibernateUtil.getSession();
            Transaction transaction = session.beginTransaction();
            session.save(new User(null,"阿伟","332244"));
            transaction.commit();
            session.close();
        }
  • 相关阅读:
    windows7系统笔记本设置成虚拟WiFi热点(即“无线路由器”)
    分布式事务03单体应用分库多数据源改造
    Spring5.2.x01导入idea
    图解CRM(客户关系管理)全流程
    分布式事务03XA, 2PC, 3PC 等理论知识
    分布式事务01课前知识
    tomcat9源码导入idea
    分布式事务02Springtx核心
    DEA Push rejected: Push to origin/master was rejected问题的解决方法
    Error:gradleresourcestest:thymeleafinaction.main: java.lang.NoClassDefFoundError: org/apache/tools/ant/util/ReaderInputStream
  • 原文地址:https://www.cnblogs.com/mindzone/p/12862628.html
Copyright © 2011-2022 走看看