【ssh框架】-- 首次使用hibernate

442 阅读5分钟

本文将介绍两个内容:
    1、hibernate概述
    2、第一个hibernate测试类

1、hibernate概述


我们知道hibernate 是一个框架,那框架是什么,其实就是一个软件的半成品


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

1.2 什么是ORM

       ORM(Object Relational Mapping)对象关系映射框架采用元数据来描述对象与关系映射的细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中。指的是将一个java中的对象与关系型数据库中的表建立一种映射关系,从而操作对象就可以操作数据库中的表。



1.3 为什么要学习 hibernate

  • hibernate实现了对象关系映射框架,对jdbc访问数据库的代码做了轻量级封装,
  • 简化了数据访问层的代码,减少了内存消耗,加快了运行效率,从而简化开发。
  • 并且有良好的性能,支持多种关系型数据库;扩展性也很强,可以自行编码进行扩展。






2、第一个hibernate测试类



2.1 下载hibernate

1.点击上方下载链接进入如图,选择任意Version
 

2.选择版本后点击.zip进行下载
 

3.出现如下
 

4.指定下载目录
 

5.hibernacle 文件结构

  • documentation--开发文档
  • lib --开发包
    • required    --开发必须的依赖包
    • optional    --开发可选的依赖包
  • project --提供的示例项目
  • changelog.txt --所有Hibernate版本更新说明
  • hibernate_logo.gif --Hibernate的logo
  • gpl.txt     --使用hibernate的授权说明

 











2.2 创建一个项目


1 新建项目

File-->New-->Java Project-->Create a Java Project-->name:Hibernate_day01

2 创建lib 用于存放jar包

右键项目--New--Folder--name:lib

拷入jar包

1.数据库驱动包
mysql-connector-java-5.1.7-bin.jar
2.Hibernate开发必须的jar包
在hibernate/lib/requied中的jar包全选,如图:

3.Hibernate日志记录的jar包
log4j-1.2.16.jar
slf4j-api-1.6.1.jar
slf4j-log4j12-1.7.2.jar
4.将以上添加的jar包全部,Add to Build Path


2.3 创建客户关系表

创建客户表

CREATE TABLE hibernate_day01.`cst_customer` (
  `cust_id`       bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)',
  `cust_name`     varchar(32) NOT NULL COMMENT '客户名称(公司名称)',
  `cust_source`   varchar(32) DEFAULT NULL COMMENT '客户信息来源',
  `cust_industry` varchar(32) DEFAULT NULL COMMENT '客户所属行业',
  `cust_level`    varchar(32) 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=1 DEFAULT CHARSET=utf8;

2.4 创建实体类
1.在src下创建java Package--name:com.it.hibernate.demo1

2.在Package下新建一个class--name:Customer
3.在Customer.java中创建客户实体类

Customer.java具体如下

public class Customer {
//创建实体类
private Long cust_id;
private String cust_name;
private String cust_source;
private String cust_industry;
private String cust_level;
private String cust_phone;
private String cust_mobile;

//对数据进行设置和获取方法
//右键-->Source-->Generate Getters and Setters
public Long getCust_id() {
	return cust_id;
}
public void setCust_id(Long cust_id) {
	this.cust_id = cust_id;
}
public String getCust_name() {
	return cust_name;
}
public void setCust_name(String cust_name) {
	this.cust_name = cust_name;
}
public String getCust_source() {
	return cust_source;
}
public void setCust_source(String cust_source) {
	this.cust_source = cust_source;
}
public String getCust_industry() {
	return cust_industry;
}
public void setCust_industry(String cust_industry) {
	this.cust_industry = cust_industry;
}
public String getCust_level() {
	return cust_level;
}
public void setCust_level(String cust_level) {
	this.cust_level = cust_level;
}
public String getCust_phone() {
	return cust_phone;
}
public void setCust_phone(String cust_phone) {
	this.cust_phone = cust_phone;
}
public String getCust_mobile() {
	return cust_mobile;
}
public void setCust_mobile(String cust_mobile) {
	this.cust_mobile = cust_mobile;
}

}


2.5 创建映射(终于涉及hibernate啦)
映射需要通过XML的配置文件来完成,这个配置文件可以任意命名,
不过要尽量统一命名规范【类名.hbm.xml】

在package com.it.hibernate.demo1中新建一个xml
右键package-->New-->xml-->name-->Customer.hbm.xml

打开以下目录 Referenced Libraries/hibernate-core/org.hibernate/Hibernate-mapping3.0.dtd
复制10~12行到Customer.hbm.xml
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
Customer.hbm.xml完整如下


DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<!-- 建立类与表的映射 -->
<class name="com.it.hibernate.demo1.Customer" table="cst_customer">
	<!-- 建立类中的属性与表中的主键对应,否则当前配置会有报错 -->
	<id name="cust_id" column="cust_id">
		<!-- 用本地的主键生成策略 -->
		<generator class="native"></generator>
	</id>
	
	<!-- 建立类中的普通属性和表的字段的对应 -->
	<property name="cust_name" column="cust_name"></property>
	<property name="cust_source" column="cust_source"></property>
	<property name="cust_industry" column="cust_industry"></property>
	<property name="cust_level" column="cust_level"></property>
	<property name="cust_phone" column="cust_phone"></property>
	<property name="cust_mobile" column="cust_mobile"></property>
</class>   

2.6 创建hibernate核心配置文件
hibernate核心配置文件通常命名为:hibernate.cfg.xml

在package com.it.hibernate.demo1中新建一个xml
右键package-->New-->xml-->name-->hibernate.cfg.xml 放在src下

打开以下目录 Referenced Libraries/hibernate-core/org.hibernate/Hibernate-configuration3.0.dtd
复制10~12行到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.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="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">012345</property>
    <!-- 配置hibernate的方言 -->
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <!-- 打印存入数据库时的SQL语句 -->
    <property name="hibernate.show_sql">true</property>
    <!-- 格式化SQL -->
    <property name="hibernate.format_sql">true</property>
    <!-- 设置字符编码集,防止传入数据库的中文出现乱码 -->
    <property name="connection.useUnicode">true</property>
    <property name="connection.characterEncoding">UTF-8</property>
    <!-- 映射的路径 -->
<mapping resource="com/it/hibernate/demo1/Customer.hbm.xml"></mapping>
</session-factory>

2.7 编写测试类
在package com.it.hibernate.demo1中新建一个类
右键package-->New-->class-->name-->HibernateDemo1.java

HibernateDemo1.java完整如下

public class HibernateDemo1 {
	@Test
	//保存客户的案例
	public void demo1() {
		//1、加载hibernate核心配置文件
		Configuration configuration = new Configuration().configure();
		//2、创建一个SessionFactory对象:类似于jdbc的连接池
		SessionFactory sessionFactory = configuration.buildSessionFactory();
		//3、通过SessionFactory获取session对象:类似于jdbc中的Connection
		Session session = sessionFactory.openSession();
		//4、手动开启事物
		Transaction transaction = session.beginTransaction();
		//5、编写代码
		Customer customer = new Customer();
		customer.setCust_name("王小东");
		System.out.println("");
		session.save(customer);
		//6、事物提交
		transaction.commit();
		//7、资源释放
		session.close();
	}
}

此时运行这个Test demo1就行了
编译器的Console出现

这样就表示成功了,就可以到数据库中SELECT * FROM hibernate_day01.cst_customer;啦
到这里hibernate的入门与第一个测试类就完成了