• Hibernate CURL


      hibernate 是一个开放源码的对象映射框架,对JDBC进行了轻量级的封装。

      ORM    object Relation Mapping   对象关系映射。用于实现面向对象编程语言里不同类型系统数据之间的转换。

      CRM  客户关系管理。

      hibernate 优势:

            Hibernate 对JDBC访问数据库的代码进行了轻量级的封装,简化了DAO层 的重复代码,减少内存小号,提高性能。

            Hibernate 基于JDBC的持久化框架支持多种数据库 一对一和一对多 多对多  各种复杂关系。

            可扩展性强。

            Hibernate 要明确 操作实体类就相当于操作 数据库。

       hibernate 框架入门:

          1 导入jar包

          

          2 创建数据库 和实体类。提供set/get,tostring方法。

          3 编写映射配置文件(xml)

          

          导入约束

    <!DOCTYPE hibernate-configuration SYSTEM "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"
             PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN">

          

    <hibernate-configuration>
    
    <!-- 数据库的连接 -->
    
    <session-factory>
    
    <!-- session对象:连接数据库 操作数据库 -->
    
    <!-- 连接数据库 -->
    
    <!-- 数据库方言 -->
    
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    
    <!-- 驱动 -->
    
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    
    <!-- url -->
    
    <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/crm_hibernate?characterEncoding=UTF-8</property>
    
    <!-- 用户名 -->
    
    <property name="hibernate.connection.username">root</property>
    
    <!-- 密码 -->
    
    <property name="hibernate.connection.password">root</property>
    
    <!-- 显示执行的SQL语句 把你的SQL语句以一行的行输出到控制台 -->
    
    <property name="hibernate.show_sql">true</property>
    
    <!-- 格式化SQL语句 格式化后进行多行展示 -->
    
    <property name="hibernate.format_sql">true</property>
    
    <!-- 自动管理数据库表结构 -->
    
    <property name="hibernate.hbm2ddl.auto">update</property>
    
    <!-- 配置c3p0 -->
    
    <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
    
    <!-- 通知session对象现在有多个类与表进行映射 -->
    
    <mapping resource="实体类对应的hbm.xml"/>
    
    </session-factory>
    
    </hibernate-configuration>

        HIbernateUtils 封装了

        

    public class HibernateUtils {
        
        // Hibernate配置文件读取类
        private static Configuration conf;
        // session工厂类
        private static SessionFactory factory;
        private static ThreadLocal<Session> sessionTL = new ThreadLocal<Session>();
        
        static{
            conf = new Configuration();
            conf.configure();
            factory = conf.buildSessionFactory();
        }
        
        
        public static Session getSession(){
            // 创建方法返回值
            Session session = null;
            // 1. 放到线程里 2.C3P0
            // 当前线程先获取一下
            session = sessionTL.get();
            if(null == session){
                session = factory.openSession();
                // 把session放入当前线程
                sessionTL.set(session);
            }
            // 返回
            return session;
        }
        
        public static void main(String[] args) {
            Session session = getSession();
            session.doWork(new Work() {
                
                public void execute(Connection conn) throws SQLException {
                    System.out.println(conn);
                }
            });
        }
    
    }

        写个test测试一下:添加功能。

        

    public class Test1 {
    
        public static void main(String[] args) {
            // 获取数据库连接
            // 编写SQL
            // 占位符赋值
            // 执行获取影响行数
            // 判断添加是否成功
            
            
            // Hibernate操作
            // 获取数据库连接 session-->sessionFacotry-->hibernate-configuration
            // 创建configuration对象加载XML
            Configuration cfg = new Configuration();
            // 加载XML
            cfg.configure();
            
            // 创建session工厂类
            SessionFactory sf = cfg.buildSessionFactory();
            // 创建session对象=conn+ps
            Session session = sf.openSession();
            // 添加操作
            // 创建添加对象
            Customer cus = new Customer();
            cus.setIndustry("呵呵");
            cus.setLevel("紫色");
            cus.setMobile("1351245678");
            cus.setName("多多");
            cus.setPhone("010-12345678");
            cus.setSource("网络");
            // 开启事务
            Transaction tx = session.beginTransaction();
            try {
                session.save(cus);
                tx.commit();
                System.out.println("添加成功");
            } catch (Exception e) {
                tx.rollback();
                e.printStackTrace();
            }finally{
                // 关闭
                session.close();
            }
    
        }
    
    }

        

    
    更新数据库操作
    public class Test2 {
    
        public static void main(String[] args) {
            // 加载配置文件
            Configuration cfg = new Configuration();
            // 加载配置文件
            cfg.configure();
            // 创建工厂类
            SessionFactory factory = cfg.buildSessionFactory();
            // 创建Session
            Session session = factory.openSession();
            // 获取ID为2的数据(DBUtils)
            Customer cus = session.get(Customer.class, 2L);
            if(null != cus){
                // 进行修改
                cus.setName("嘟嘟嘟");
                // 事务
                Transaction tx = session.beginTransaction();
                try {
                    session.update(cus);
                    tx.commit();
                    System.out.println("更新成功");
                } catch (Exception e) {
                    tx.rollback();
                    e.printStackTrace();
                }
            }
        }
    
    }
    public class Test3 {
    
        public static void main(String[] args) {
            // 获取数据库连接
            Session session = HibernateUtils.getSession();
            // 获取ID为3的数据
            Customer cus = session.load(Customer.class, 3L);
            if(null != cus){
                Transaction tx = session.beginTransaction();
                try {
                    session.delete(cus);
                    tx.commit();
                    System.out.println("删除成功");
                } catch (Exception e) {
                    tx.rollback();
                    System.out.println("删除失败,原因:" + e.getMessage());
                    e.printStackTrace();
                }
            }
    
        }
    
    }
    public class Test4 {
    
        public static void main(String[] args) {
            Session session = HibernateUtils.getSession();
            // 数据库查询
            Customer cus = session.get(Customer.class, 10000L);
            // Customer cus = session.load(Customer.class, 1000L);
            System.out.println(cus);
    
        }
    
    }

     以上就是 简单的HIbrenate对数据库的CRUL 操作。

  • 相关阅读:
    js中setTimeout、setInterval、 clearInterval方法简介
    分享一个VS2008漂亮的黑色主题
    最简单的设计模式
    记一次查数据的需求
    Oracle常用存储过程写法
    关于域名解析
    使用PHP打造QQ空间神奇图片
    自制小工具含源码——SPTC上海交通卡余额查询
    自制小工具含源码——博客园图床ImageBed
    不可不知的mysql 常用技巧总结
  • 原文地址:https://www.cnblogs.com/xiaowazi/p/9101227.html
Copyright © 2020-2023  润新知