Hibernate框架学习之初识Hibernate

Hibernate框架学习之初识Hibernate

Hibernate的简单介绍

Hibernate是一个开源的优秀的ORM(Object Relational Mapping、对象关系映射)框架,对JDBC进行了轻量级的对象封装,架起了面向对象开发以及SQL之间的桥梁。Hibernate可以通过配置,自动生成对应的SQL语句,自动执行,并且对结果进行封装,将得到的对象返回给用户。有了Hibernate框架,开发人员可以以面向对象的角度来操作数据库。

Hibernate的优点

  • 对JDBC进行封装,简化了数据访问的代码(这一点相信使用原生JDBC操作数据库的朋友应该会有比较深的感触)

  • 支持多种关系型数据库

  • 性能好、配置灵活

Hibernate_HelloWorld

上面是关于Hibernate的一点简单介绍以及其优点,接下来让我们开始使用Hibernate的进行数据库的访问,感受Hibernate带来的方便性。

准备

首先需要下载Hibernate对应的jar包,Hibernate 5.2.9 Final 版本下载地址 ,如果是使用Maven来进行构建的朋友则更加简单了,只需要配置对应的依赖,Maven就会自动帮我们将对应的jar下载并且导入,笔者这里使用第二种方式。

建立项目

  1. 建一个Maven项目(笔者这里使用IDEA)勾选如下所示

  2. 填写对应的GroupId、Artifact以及Version,如下所示

  3. 选择好对应的Maven版本以及对应的设置、仓库所在位置,如下所示

  4. 填写项目的名称、位置以及对应的Module信息(这里保持默认),如下所示

  5. 建立项目完成之后,项目的结构图如下所示

  6. 为了项目资源管理的方便,这里我们在src目录下建立一个resources目录,并且将其设置为资源文件,这样,Maven在编译时会自动将其导入类路径中,具体操作如下

    至此,我们的项目的基本骨架的搭建完成了。

导入Hibernate的核心包以及依赖包

由于是使用Maven来进行项目管理,所以导入对应的jar文件只需要在根目录的pom.xml文件中添加如下内容即可

<project>
  ...
    <dependencies>
    <!--添加Junit支持-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <!--添加Hibernate支持-->
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-core</artifactId>
      <version>5.2.9.Final</version>
    </dependency>
    <!--添加JDBC支持-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.41</version>
    </dependency>
  </dependencies>

  <build>
    <!--为了IDEA能够在编译时将对应的配置文件加入,需要添加下面的配置-->
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
        </includes>
      </resource>
    </resources>
  </build>
  ...
</project>

这样Maven就会自动下载Hibernate所需要的依赖及其核心包了。

编写配置文件

Hibernate的配置主要有两个文件,一个是用于配置元数据的,一个是用于配置数据源等信息的,下面我们开始编写配置文件

元数据

首先闲来编写元数据配置文件,所谓的元数据配置文件,可以理解为就是一个对应关系,也就是配置一个从JavaBean对象到SQL之间的对应关系,显然,为了Hibernate能够自动地完成从Java对象到SQL之间的映射,我们就必须告诉它哪个对象对应哪一张表,其中对象中的哪个属性对应表中的哪个列,哪个属性是对应的ID。

也就是说,在这个环节中,需要建立两个内容,一个是所要操作的类,另外一个其对应的关系,也就是我们的元数据

  1. 在包中建立以个Students对象,如下所示

    package cn.xuhuanfeng.learnignhibernate;
    
    /**
    * Created by xuhuanfeng on 2017-04-06.
    */
    public class Students{
    
       private int id;
       private String name;
       private int age;
      . . . 
    // 篇幅原因省略setter以及getter
    }
    

  2. 在Students对象的同级目录建立一个名为Student.hbm.xml的配置文件,配置内容如下所示

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC
           "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
           "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
       <!--name为对应的Java类,table为对应的表的名字-->
       <class name="cn.xuhuanfeng.learnignhibernate.Students" table="students">
           <!--id为对应的主键,name为类属性,column为表的字段-->
           <id name="id" column="id">
               <!--主键的增长策略,以后将介绍-->
               <generator class="increment"></generator>
           </id>
           <!--property为其他的属性-->
           <property name="name" column="name"></property>
           <property name="age" column="age"></property>
       </class>
    </hibernate-mapping>
    

    至此,我们的元数据则建立完成。

    数据源配置文件

    接下来吗,我们来编写Hibernate的数据源配置文件,该配置文件是Hibernate的核心配置文件,主要用于加载上面的元数据以及配置相关的属性等等,在刚刚建立的resources目录中建立名为hibernate.cfg.xml的文件,注意,该文件不建议更改名字,内容如下所示:

    <!DOCTYPE hibernate-configuration PUBLIC
           "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
           "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
       <session-factory>
           <!--配置数据源信息-->
           <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
           <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate</property>
           <property name="hibernate.connection.username">root</property>
           <property name="hibernate.connection.password">huanfeng</property>
    
           <!--打印操作过程中的SQL语句-->
           <property name="show_sql">true</property>
           <!--格式化SQL语句-->
           <property name="format_sql">true</property>
    
           <!--配置数据库操作策略,以后将介绍-->
           <property name="hbm2ddl.auto">update</property>
    
           <!--配置对应的映射文件 即 元数据-->
           <mapping resource="cn/xuhuanfeng/learnignhibernate/Student.hbm.xml"></mapping>
       </session-factory>
    
    </hibernate-configuration>
    

    由于这里需要操作对应的数据库,所以还需要建立一个对应的库,这里命名为hibernate,如果按照上面的配置,则不需要建立对应的表,只需要建立对应的库即可。

    至此,Hibernate所需要的配置全部完成,接下来我们就来开始编写对应的测试代码了。

编写测试文件

不知道初学Hibernate的你,看到这里会不会有点懵,笔者刚刚学习的时候也觉得有点懵,这样就可以编写测试代码了?我连具体内容都还没见到了,就只是写了配置文件以及一个JavaBean而已。这就是Hibernate的强大之处了,我们基本上可以不需要写任何的JDBC代码就能操作数据库了,而且更神奇的事情还在继续,让我们接下来继续前进,编写对应的测试类 StudentsTest如下所示

/**
 * Created by xuhuanfeng on 2017-04-06.
 * 测试Hibernate
 */
public class StudentsTest {

    @Test
    public void testCreate(){
        // 获取Hibernate的配置对象
        Configuration configuration = new Configuration().configure();
        // 建立SessionFactory
        SessionFactory sessionFactory = configuration.buildSessionFactory();
        // 打开session
        Session session = sessionFactory.openSession();

        // 所要添加到数据库的学生对象
        Students students = new Students();
        students.setAge(22);
        students.setName("xuhuanfeng");

        // 开启事务
        Transaction ts = session.beginTransaction();
        // 将数据添加到数据库
        session.save(students);
        // 提交事务
        ts.commit();

        // 关闭对应的连接
        session.close();
        sessionFactory.close();
    }
}

保存之后直接运行即可,然后就可以查看对应的数据库数据了,相信你会惊奇的发现,对应的数据已经保存到数据库中了: )

控制台输出

细心的你可能会发现,在IDEA控制台中,输出了很多内容,接下来我们来粗略地看一下这些内容,在输出的内容中,主要内容如下

Hibernate: 

    create table students (
       id integer not null,
        name varchar(255),
        age integer,
        primary key (id)
    ) engine=MyISAM
Hibernate: 
    select
        max(id) 
    from
        students
Hibernate: 
    insert 
    into
        students
        (name, age, id) 
    values
        (?, ?, ?)

相信看到上面这些内容的你会觉得非常熟悉,这些SQL语句就是Hibernate为我们生成的,也就是说,使用了Hibernate框架,我们基本上再也不需要编写这些SQL操作的语句了,因为Hibernate已经为我们做好了大部分重复性的操作了。

总结

这小节主要介绍了Hibernate以及Hibernate的优点,并且一步步动手搭建一个基于Maven的Hibernate的项目,编写对应的配置文件以及测试类,看到了Hibernate的神奇之处,不过Hibernate的神奇之处可不止这些,Hibernate的学习之路还在继续。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值