一、Hibernate快速入门

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mChenys/article/details/84571102

概述

Hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。
Hibernate是轻量级JavaEE应用的持久层解决方案,是一个关系数据库ORM框架
记住:Hibernate是一个持久层的ORM框架!!!

什么是ORM

ORM映射:Object Relational Mapping(对象关系映射)

  • O:面向对象领域的Object(JavaBean对象)
  • R:关系数据库领域的Relational(表的结构)
  • M:映射Mapping(XML的配置文件)

简单一句话:Hibernate使程序员通过操作对象的方式来操作数据库表记录

Hibernate优点

* Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码
* Hibernate是一个基于jdbc的主流持久化框架,是一个优秀的orm实现,它很大程度的简化了dao层编码工作
* Hibernate的性能非常好,因为它是一个轻量级框架。映射的灵活性很出色。它支持很多关系型数据库,从一对一到多对多的各种复杂关系

Hibernate框架的快速入门

一、下载Hibernate5的运行环境

  1. 下载相应的jar包等

    下载地址

  2. 解压后对目录结构有一定的了解

在这里插入图片描述

二、创建表结构

以创建客户信息表为例

Create database hibernate_day01;
Use hibernate_day01;
CREATE TABLE `cst_customer` (
  `cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)',
  `cust_name` varchar(32) NOT NULL COMMENT '客户名称(公司名称)',
  `cust_user_id` bigint(32) DEFAULT NULL COMMENT '负责人id',
  `cust_create_id` bigint(32) DEFAULT NULL COMMENT '创建人id',
  `cust_source` varchar(32) DEFAULT NULL COMMENT '客户信息来源',
  `cust_industry` varchar(32) DEFAULT NULL COMMENT '客户所属行业',
  `cust_level` varchar(32) DEFAULT NULL COMMENT '客户级别',
  `cust_linkman` varchar(64) DEFAULT NULL COMMENT '联系人',
  `cust_phone` varchar(64) DEFAULT NULL COMMENT '固定电话',
  `cust_mobile` varchar(16) DEFAULT NULL COMMENT '移动电话',
  PRIMARY KEY (`cust_id`)
) ENGINE=InnoDB AUTO_INCREMENT=94 DEFAULT CHARSET=utf8;

三、搭建Hibernate的开发环境

创建WEB工程,引入Hibernate开发所需要的jar包

  1. MySQL的驱动jar包
    在这里插入图片描述
  2. Hibernate开发必需要有的jar包(路径在hibernate-release-5.0.7.Final/lib/required/所有jar包)
    在这里插入图片描述
  3. 日志jar包(log4j相关的jar包)
    在这里插入图片描述

以上jar包全部导入后,一共有13个jar包
在这里插入图片描述

四、编写JavaBean实体类

Customer类的代码如下:

public class Customer {
	// 建议所有的基本数据类型都使用其包装类型,字段名建议和数据库表中的字段名保持一致
	private Long cust_id;
	private String cust_name;
	private Long cust_user_id;
	private Long cust_create_id;
	private String cust_source;
	private String cust_industry;
	private String cust_level;
	private String cust_linkman;
	private String cust_phone;
	private String cust_mobile;
	// 省略get和set方法
}

五、创建类与表结构的映射

1.在JavaBean所在的包下创建映射的配置文件

a.默认的命名规则为:实体类名.hbm.xml
b.在xml配置文件中引入约束(引入的是hibernate3.0的dtd约束,不要引入4的约束)
	<!DOCTYPE hibernate-mapping PUBLIC 
	    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

该约束头的声明描述也可以在eclipse工具中的web项目中依赖hibernate库中查看:
	web工程
		->Web App Libraries 
			->hibernate-core-5.0.7.Final.jar
				->org.hibernate
					->hibernate-mapping-3.0.dtd
						->第10~12行的内容就是约束的描述

完成上述操作后如下图所示:
在这里插入图片描述
2. 如果不能上网,编写配置文件是没有提示的,需要自己来配置
先复制http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd --> window --> preferences --> 搜索xml --> 选择xml catalog --> 选择User Specified Entires -->点击add --> Key type选择URI --> 在key的位置粘贴复制的地址 --> 选择location,选择本地的DTD的路径(前提得实现下载好dtd的文件)。
如下图所示:
在这里插入图片描述3. 编写映射的配置文件

<?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>
	<!-- 配置类名和表名的映射 -->
	<class name="blog.csdn.net.mchenys.domain.Customer" table="cst_customer">
		
		<!-- 配置类属性和表结构字段的映射
			 name属性:JavaBean的属性 
			 column属性:表结构的字段 
		-->
	
		<!--配置主键属性  -->
		<id name="cust_id" column="cust_id">
			<!-- 主键的生成策略 native表示由hibernate维护-->
			<generator class="native" />
		</id>

		<!-- 配置其他的属性和表字段的映射关系 -->
		<property name="cust_name" column="cust_name" />
		<property name="cust_user_id" column="cust_user_id" />
		<property name="cust_create_id" column="cust_create_id" />
		<property name="cust_source" column="cust_source" />
		<property name="cust_industry" column="cust_industry" />
		<property name="cust_level" column="cust_level" />
		<property name="cust_linkman" column="cust_linkman" />
		<property name="cust_phone" column="cust_phone" />
		<property name="cust_mobile" column="cust_mobile" />

	</class>
</hibernate-mapping>

六、编写Hibernate核心的配置文件

1.创建hibernate配置文件

a. 在src目录下,创建名称为hibernate.cfg.xml的配置文件
b. 在XML中引入DTD约束
	<!DOCTYPE hibernate-configuration PUBLIC
		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
		"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
		
该约束头的声明描述也可以在eclipse工具中的web项目中依赖hibernate库中查看:
	web工程
		->Web App Libraries 
			->hibernate-core-5.0.7.Final.jar
				->org.hibernate
					->hibernate-configuration-3.0.dtd
						->第10~12行的内容就是约束的描述

完成上述操作后,如下图所示:
在这里插入图片描述
2.如果不能上网,编写配置文件是没有提示的,需要自己来配置(参考上面配置映射文件的操作)
3.编写hibernate的配置文件
具体属性可参考hibernate解压路径下的hibernate-release-5.0.7.Final/project/etc/hibernate.properties文件内容,找到mysql的配置信息
在这里插入图片描述
打开后,浏览到第56行,可以看到mysql的基本配置
在这里插入图片描述

必须配置的4大参数					
#hibernate.connection.driver_class com.mysql.jdbc.Driver
#hibernate.connection.url jdbc:mysql:///test
#hibernate.connection.username gavin
#hibernate.connection.password

必须配置的数据库的方言(标明使用的是mysql数据库)
#hibernate.dialect org.hibernate.dialect.MySQLDialect

最后还需要引入映射的配置文件路径

下面是一个最基本的hibernate配置文件

<?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>

	<!-- 记住:先配置SessionFactory标签,一个数据库对应一个SessionFactory标签 -->
	<session-factory>

		<!-- 必须要配置的参数有5个,4大参数和数据库的方言 -->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql:///hibernate_day01</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">1234</property>

		<!-- 数据库的方言 -->
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

		<!-- 映射配置文件,需要引入映射的配置文件 -->
		<mapping resource="blog/csdn/net/mchenys/domain/Customer.hbm.xml" />

	</session-factory>

</hibernate-configuration>	

七、编写Hibernate测试代码

package blog.csdn.net.mchenys.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

import blog.csdn.net.mchenys.domain.Customer;

public class Demo {
	/**
	 * 测试保存客户
	 */
	@Test
	public void testSave(){
		/**
		 * 	1. 先加载配置文件
		 * 	2. 创建SessionFactory对象,生成Session对象
		 *  3. 创建session对象
		 *  4. 开启事务
		 *  5. 编写保存的代码
		 *  6. 提交事务
		 *  7. 释放资源
		 */
		/*// 1. 先加载配置文件
		Configuration config = new Configuration();
		// 默认加载src目录下hibernate.cfg.xml的配置文件
		config.configure();
		// 了解,手动加载
		// config.addResource("blog/csdn/net/mchenys/domain/Customer.hbm.xml");
		 */		
		
		// 简写的方法
		Configuration config = new Configuration().configure();
		
		// 2. 创建SessionFactory对象
		SessionFactory factory = config.buildSessionFactory();
		// 3. 创建session对象
		Session session = factory.openSession();
		// 4. 开启事务
		Transaction tr = session.beginTransaction();
		
		// 5. 编写保存的代码
		Customer c = new Customer();
		// c.setCust_id(cust_id);	主键是自动递增了,不需要添加
		c.setCust_name("测试3");
		c.setCust_level("2");
		c.setCust_phone("110");
		
		// 保存数据,操作对象就相当于操作数据库的表结构
		session.save(c);
		
		// 6. 提交事务
		tr.commit();
		// 7. 释放资源
		session.close();
		factory.close();
	}
}

测试通过后
在这里插入图片描述
检查数据库是否有插入数据
在这里插入图片描述
若能看到数据则表示hibernate可以正常使用了。

猜你喜欢

转载自blog.csdn.net/mChenys/article/details/84571102