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 操作。

猜你喜欢

转载自www.cnblogs.com/xiaowazi/p/9101227.html