Hibernate学习笔记(一)——简单的Hibernate实例入门
2018-03-28 09:57
639 查看
一、Hibernate简介
Hibernate是一个开源的对象/关系映射(ORM)框架,它对JDBC进行了轻量级的封装。所谓ORM就是Object/Relationship Mapping,为什么要使用对象/关系映射呢?因为使用面向对象思想编写的数据库应用程序都是要把信息存储到关系型数据库中的,使用Hibernate就可以使用面向对象的方法来操作和使用数据库了。二、Hibernate简单实例
下面通过一个简单的例子来介绍一下使用Hibernate的基本步骤,本实例使用了MySQL数据库,并使用JUnit来进行测试。首先要引入使用的jar包,在本例中需要引入Hibernate使用的相关jar包、MySQL数据库连接jar包和JUnit测试jar包,在pom文件中添加以下依赖。[html] view plain copy <dependencies><dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.0.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<versi
20000
on>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>
引入了相关jar包之后就可以进行编码了。编写一个Hibernate例子分为以下几个步骤:(1)创建Hibernate的配置文件(hibernate.cfg.xml);(2)创建持久化类;(3)创建对象/关系映射文件;(4)通过Hibernate的API来编写操作数据库的代码。下面将通过代码依次来讲解每一个步骤。
1、创建Hibernate的配置文件(hibernate.cfg.xml)
首先我们需要创建Hibernate的配置文件hibernate.cfg.xml,配置文件的内容如下:[html] view plain copy<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 对应的数据库驱动 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 数据库密码 -->
<property name="hibernate.connection.password">root</property>
<!-- 数据库用户名 -->
<property name="hibernate.connection.username">root</property>
<!-- 数据库url,类似于JDBC中连接数据库的url -->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/shopping?useUnicode=true&characterEncoding=UTF-8</property>
<!-- 数据库使用的方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 是否把输出到控制台的sql进行格式化 -->
<property name="format_sql">true</property>
<!-- 是否将Hibernate运行时的sql输出到控制台 -->
<property name="show_sql">true</property>
<!-- 自动创建|更新|验证数据库表结构 -->
<property name="hbm2ddl.auto">create</property>
</session-factory>
</hibernate-configuration>
通过观察配置文件的内容我们发现,这个配置文件其实主要是在配置数据库的一些基本信息,包括数据库驱动、用户名密码等。
2、创建持久化类
接下来我们就需要创建一个持久化类User,里面包含了一些基本的用户信息。[java] view plain copypackage com.imooc.vo;import java.util.Date;
public class User {
private int id;
private String name;
private int age;
private String sex;
private Date birthday;
private String address;
public User() {
}
public User(int id, String name, int age, String sex, Date birthday, String address) {
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
this.birthday = birthday;
this.address = address;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
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;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age
+ ", sex=" + sex + ", birthday=" + birthday + ", address="
+ address + "]";
}
}
我们发现所谓的持久化类其实就是一个基本的JavaBean,里面包含了一些属性和相应的get和set方法。
3、创建对象/关系映射文件
接下来我们就需要根据持久化类创建一个对象/关系映射文件User.hbm.xml。[html] view plain copy<?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 2016-9-19 19:59:35 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.imooc.vo.User" table="USER">
<id name="id" type="int">
<column name="ID" />
<generator class="assigned" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
<property name="age" type="int">
<column name="AGE" />
</property>
<property name="sex" type="java.lang.String">
<column name="SEX" />
</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>
这个对象/关系映射文件其实就是将定义的持久化类与数据库表进行映射,这里将User类映射为一个名为USER的表,将对象的属性映射为数据库的列,将属性的类型映射为数据库列的类型。在创建了这个对象/关系映射文件之后,我们需要在Hibernate配置文件hibernate.cfg.xml中声明这个映射关系,在session-factory标签下声明如下内容。[html] view plain copy<mapping resource="com/imooc/map/User.hbm.xml"/>
4、通过Hibernate的API来编写操作数据库的代码
在上面一系列的配置完成之后我们就可以使用JUnit来编写一个测试类UserTest来使用Hibernate了。[java] view plain copypackage com.imooc.test;import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.imooc.vo.User;
public class UserTest {
private SessionFactory sessionFactory;
private Session session;
private Transaction transaction;
@Before
public void init() {
//创建配置对象
Configuration config = new Configuration().configure();
//创建会话工厂对象
sessionFactory = config.buildSessionFactory();
//创建会话对象
session = sessionFactory.openSession();
//开启事务
transaction = session.beginTransaction();
}
@After
public void destory() {
//提交事务
transaction.commit();
//关闭会话
session.close();
//关闭会话工厂
sessionFactory.close();
}
@Test
public void saveNewUser() throws Exception{
User s = new User(1, "张三", 12, "男", new Date(), "上海市");
session.save(s);
}
}
我们来分析一下代码,在执行数据库操作方法之前需要执行一个初始化方法init(),这个初始化方法主要是对Hibernate进行初始化操作,包括读取配置文件,创建会话工厂和会话、开启事务等。然后执行测试方法,测试方法很简单,只是新建了一个对象,然后将对象保存进数据库,我们可以发现这里将对象保存进数据库没有写复杂的SQL语句,而是直接使用了一个save方法就完成了插入操作,这也体现了Hibernate的优势,不用在代码中编写复杂的SQL语句,代码的可移植性和复用性大大增强了。最后当测试方法执行结束之后执行一个销毁方法destory(),这个方法主要用于提交事务和关闭资源。下面使用JUnit执行saveNewUser()方法,执行完成后,我们去数据库中会发现新生成了一张表USER,查询表中的内容,我们会发现刚刚定义的名为张三的用户已经插入成功了,这说明使用Hibernate操作数据库成功了。
相关文章推荐
- Hibernate实战数据持久化之二hibernate简单的入门实例
- Hibernate入门2.简单的项目开发实例
- Eclipse+Maven下Spring与Hibernate整合简单实例(小白入门)
- Hibernate 4.2 简单入门实例
- Eclipse快速上手Hibernate之入门实例
- RabbitMQ入门之安装配置与简单实例----perfect
- 关于使用Spring和hibernate开发web程序的配置说明和简单实例的详细说明
- Python入门之requests库的安装与简单使用实例
- SpringMVC+Spring+HIbernate 简单增删改查实例
- hibernate入门--实现数据简单插入
- JSP+Hibernate入门级实例--留言系统
- JCrontab简单入门实例详解
- js入门·循环与判断/利用函数的简单实例/使用对象/列举对象属性的名称
- Socket实现客户端和服务端 简单的入门实例
- [原创]Struts+Hibernate入门实例(Eclipse版)
- 史上最简单的Hibernate入门简介
- Struts1入门实例(简单登录)
- Struts+hibernate简单连接数据库注册实例
- storm 入门教程+简单实例
- Eclipse快速上手Hibernate之入门实例(三)