Hibernate入门1-环境搭建和API相关

1.Hibernate是什么

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JaveEE架构中取代CMP,完成数据持久化的重任。

也就是说是处理和数据库相关一个框架,它建立数据库与类之间的映射关系,当类中对象发生改变的时候,数据库会有随动的改变

2.使用Hibernate之前的准备工作

2.1下载资源,并做使用之前的相关部署

将下载后的压缩包解压
解压缩后的文件如下
在这里插入图片描述
其中框出的required包是使用Hibernate所必须导入的jar包,optional是可选的依赖包,其中关键包的作用网上可以找到很多资源这里不多赘述

将这些必要的包和相应的数据库连接需要的包导入到工程目录下

2.2准备工作,创建相应的类和数据库表格

注意这里类中成员变量的属性和数据库表格中的属性要一致,eg:数据库中名字是varchar类型,则在类中对应的属性应该为String.
如果是一对一的关系,尽可能将表格中参数名和类中的成员变量名字一一对应,以免混淆,记错

2.3配置XML文件,构建类和表之间的映射关系

注意:创建文件的位置,在创建的类的那个包下创建此文件,理论上文件名没有硬性要求,但是一般都创建为:类名+hbm.xml
创建好文件后需要添加约束,约束相关可以参考我们导入的包中D:\Program Files\hibernate-release-5.0.7\hibernate-release-5.0.7.Final\lib\required\hibernate-core-5.0.7.Final.jar!\org\hibernate\hibernate-mapping-3.0.dtd文件,导入约束后开始配置映射
首先是类与表之间的映射 ,class name =类的全路径,这一点IDEA中会有非常充分的提示,表就直接写表名就好;
接下来是主键映射id,主键映射必须要放在property的前面,也可以为它指定类型Type,我这边数据库中是BIGINT,对应的是Long类型,其中generator中的native提供主键生成策略为本地,也就是说,数据库对应的是支持自增的数据库(Mysql等)选择identity,数据库选用的序列管理的方式(Oracle等)那么主键策略采用squence
接下来是property的一一对应

在这里插入图片描述

2.4创建Hibernate的核心配置文件

注意:创建的位置是在src文件下,创建的名字为hibernate.cfg.xml,这个命名可以修改,但是源码中默认程序加载配置文件是这个名字,不推荐做修改
同样需要添加约束
添加约束的参考文件地址:D:\Program Files\hibernate-release-5.0.7\hibernate-release-5.0.7.Final\lib\required\hibernate-core-5.0.7.Final.jar!\org\hibernate\hibernate-configuration-3.0.dtd
这里我在可选配置中使用显示sql语句的配置时候报错,但是将配置方言的代码移至可选配置代码的后面就不报错了.同样编辑器使用的是IDEA
这里配置的是MySQL的数据库,相应的案例在解压安装包后的文件路径下都有

在这里插入图片描述

3.使用Hibernate

在这里插入图片描述

这里分开来看:
首先第一步是加载核心配置文件,我们可以看Configuration的源码,找到它下面的configure方法,返回的名字是hibernate.cfg.xml,是之前编辑核心配置文件的名字
在这里插入图片描述

第二步是获得SessionFactory对象,这个对象可以类似理解为数据库连接池对象,是一个重量级的对象,创建会比较消耗资源和时间,通常我们会把步骤1和步骤2合并起来放在一个工具类中,利用单例模式封装,这样使用的时候避免重复创建很多的SessionFactory对象,影响效率:

public class HibernateUtils {
    public static final Configuration cfg;
    public static final SessionFactory sf;

    static {
        cfg=new Configuration().configure();
        sf = cfg.buildSessionFactory();
    }

    public static Session openSession(){

        return sf.openSession();
    }
}

第三步是获得session对象,手动开启事务获得Transaction对象,然后输入指令代码后需要提交事务和关闭资源:

Session session = factory.openSession();
        //手动开启事务ctrl+alt+v可以自动捕捉返回值类型
        Transaction transaction = session.beginTransaction();

//代码区域

        //常规步骤,提交事务,关闭session对象
        transaction.commit();
        session.close();

最后是需要执行对数据库操作的区域,需要创建对象,或者查找出对象,在对对象的操作之后通过session的方法对数据库做增删改查

4.简单的增删改查代码:

void test02(){
        Session session = HibernateUtils.openSession();
        Transaction transaction = session.beginTransaction();

        //常用的增加的操作
        /*Customer customer = new Customer();
        customer.setCust_name("莫栽哉");
        customer.setCust_industry("1307");
        session.save(customer);*/

        //常用的查询操作
        /*Customer customer = new Customer();
        Customer cus = session.get(Customer.class, 1l);
        System.out.println(cus.getCust_name());*/

        //常见的删除操作
        /*Customer cus = session.get(Customer.class, 1l);
        session.delete("s",cus);//这里的s不知道有什么鬼用*/

        //常见的改操作
        /*Customer cus = session.get(Customer.class, 3l);
        cus.setCust_name("莫大仔");*/

        //常见的查询所有的操作:
        Query query = session.createQuery("from com.myHibernate.Customer");
        List<Customer> list = query.list();
        for (Customer c:list
             ) {
            System.out.println(c.toString());
        }


        transaction.commit();
        session.close();
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值