Hibernate入门——基础详解

来源:互联网 发布:世界各地社交软件 编辑:程序博客网 时间:2024/06/14 18:51

什么是ORM?

ORM全名是Object Relational Mapping(对象关系映射),用来把对象模型表示的对象映射到基于S Q L 的关系模型数据库结构中去。

它的方法论基于三个核心原则:

  1. 简单:以最基本的形式建模数据。
  2. 传达性:数据库结构被任何人都能理解的语言文档化。
  3. 精确性:基于数据模型创建正确标准化的结构。

什么是Hibernate?

Hibernate是一个开源的ORM框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的ORM框架,Hibernate可以自动生成SQL语句,自动执行。

搭建Hibernate环境步骤

安装JBoss Tools插件

JBoss Tools它是一个综合开发工具插件,该插件简化ORM框架Hibernate,JBoss Seam,EJB3等的开发工作。
安装请参考我的上一篇文章 Eclipse安装以及集成Java开发环境插件的安装。

下载相关jar包

  • Hibernate官网:http://hibernate.org/orm/
    我是用的是hibernate-release-5.2.10这个版本
    解压我们下载好的hibernate-release-5.2.10.Final.zip,打开\lib\required文件,如下图所示(即所需的最小jar包):

hibernatejar

  • Mysql的jdbc驱动
    Mysql官网:https://dev.mysql.com/downloads/connector/j/
    接下我们下载好的mysql-connector-java-5.1.43.tar,打开这个文件夹,如下:

mysqljar

创建Java Project项目导入Hibernate的所需的jar包

添加Junit单元测试的jar包:

右键我们的项目—>Build Path—>Add Library—>JUnit—Finish。

添加Hibernate所需的jar包以及Mysql的jdbc驱动jar包

hibernatedemo

创建并完善相关配置文件

创建配置hibernate.cfg.xml文件

右键src目录,New—>Other选择Hibernate文件中的选项如下:

cfg

下一步创建完成(默认选项)。

编写hibernate.cfg.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?><!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="connection.driver_class">com.mysql.jdbc.Driver</property>      <property name="connection.url">jdbc:mysql:///test</property>      <property name="connection.username">root</property>      <property name="connection.password">root</property>      <!-- SQL 方言 -->      <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>      <!-- 在控制台输出sql语句 -->      <property name="show_sql">true</property>      <property name="format_sql">true</property>      <!-- 生成策略 常用的create update -->      <property name="hbm2ddl.auto">create</property>      <!-- Enable Hibernate's automatic session context management -->      <property name="current_session_context_class">thread</property>      <!-- 注册实体映射文件 -->      <mapping resource="com/demo/bean/Students.hbm.xml"/>    </session-factory></hibernate-configuration>
创建持久化类

创建学生类,代码如下:

package com.demo.bean;import java.util.Date;/** * 学生类 *  * @author JackHu * */public class Students {    private int sid;    private String sname;    private String gender;    private Date birthday;    private String address;    public Students() {        super();        // TODO Auto-generated constructor stub    }    public Students(int sid, String sname, String gender, Date birthday, String address) {        super();        this.sid = sid;        this.sname = sname;        this.gender = gender;        this.birthday = birthday;        this.address = address;    }    public int getSid() {        return sid;    }    public void setSid(int sid) {        this.sid = sid;    }    public String getSname() {        return sname;    }    public void setSname(String sname) {        this.sname = sname;    }    public String getGender() {        return gender;    }    public void setGender(String gender) {        this.gender = gender;    }    public Date getBirthday() {        return birthday;    }    public void setBirthday(Date birthday) {        this.birthday = birthday;    }    public String getAddress() {        return address;    }    public void setAddress(String address) {        this.address = address;    }}
创建对象-关系映射文件

在我们的实体类包下点击右键—>New—>Other,如下:

hbm

点击Next,创建完成。

生成对象关系映射配置文档:

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!-- Generated 2017-8-25 17:25:25 by Hibernate Tools 3.5.0.Final --><hibernate-mapping>    <class name="com.demo.bean.Students" table="STUDENTS">        <id name="sid" type="int">            <column name="SID" />            <generator class="assigned" />        </id>        <property name="sname" type="java.lang.String">            <column name="SNAME" />        </property>        <property name="gender" type="java.lang.String">            <column name="GENDER" />        </property>        <property name="birthday" type="java.util.Date">            <column name="BIRTHDAY" />        </property>        <property name="address" type="java.lang.String">            <column name="ADDRESS" />        </property>    </class></hibernate-mapping>
创建数据库(test)

在我们的Mysql中创建test数据库:

testdb

使用Junit进行单元测试

Junit常用的注解标签:

  • @Test:测试方法
  • @Before:初始化
  • @After:释放走远

新建测试类StudentsTest.java:

package com.demo.test;import java.util.Date;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.boot.MetadataSources;import org.hibernate.boot.registry.StandardServiceRegistry;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;import org.junit.After;import org.junit.Before;import org.junit.Test;import com.demo.bean.Students;/** * 学生测试类 * @author JackHu * */public class StudentsTest {    //创建类型安全的准服务注册类    private StandardServiceRegistry registry;    //创建会话工厂对象    private SessionFactory sessionFactory;    //创建会话    private Session session;    //事物    private Transaction tx;    @Before    public void init() {        registry=new StandardServiceRegistryBuilder()                .configure()                .build();        try {            sessionFactory = new MetadataSources(registry)                    .buildMetadata()                    .buildSessionFactory();        } catch (Exception e) {            StandardServiceRegistryBuilder.destroy(registry);        }        session=sessionFactory.openSession();        //开启事物        tx=session.beginTransaction();    }    @After    public void destory() {        //提交事物        tx.commit();        //释放资源        session.close();        sessionFactory.close();    }    @Test    public void testSaveStudent() {        Students s=new Students(1,"hjw","男",new Date(),"北京");        session.save(s);    }}

执行testSaveStudent()方法,添加数据成功:

success

打开我们的数据库,查看,如下图:

save

总结

Hibernate帮我们自动创建表结构,并且把我们的学生对象保存的我们的数据库中。
欢迎小伙伴们学习!!!

原创粉丝点击