欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[Hibernate] Hibernate 原理及入门操作

程序员文章站 2022-06-12 19:18:07
...

 

一、Hibernate概述

1.什么是Hibernate

Hibernate 框架是Java持久层框架之一。 它具有简单易学,灵活性强, 可扩展性强等特性。能够简化代码量。它是一个ORM(Object Relational Mapping,对象关系映射)框架,对JDBC 进行了轻量级的对象封装,使 Java 开发人员可以使用面向对象的编程思维来操作数据库。

2.原理

Hibernate 在 Java 三层架构中充当持久层,根据 POJO 类和对应的映射文件动态生成对应的SQL语句,不需要开发人员自己手动编写。JDBC时需要开发人员自己编写,需要修改POJO时工作量大,但是Hibernate 只需要修改实体类配置即可 。

二、入门

1.需要导入的jar包

mysql驱动包 和request 目录下的jar包

[Hibernate] Hibernate 原理及入门操作

2.创建数据库

[Hibernate] Hibernate 原理及入门操作

3.创建实体类 

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_linkman;
	private String cust_phone;
	private String cust_mobile;
	
	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_linkman() {
		return cust_linkman;
	}
	public void setCust_linkman(String cust_linkman) {
		this.cust_linkman = cust_linkman;
	}
	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;
	}
	@Override
	public String toString() {
		return "Customer [cust_id=" + cust_id + ", cust_name=" + cust_name + "]";
	}
	
}

4.创建映射文件

创建命名为Customer.hbm.xml的映射文件

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
	<!-- 配置表与实体对象的关系 -->
        <!-- 配置后需要写完整类名的可以只写类名 -->
<hibernate-mapping package="com.test.domain">
	<!-- 
		class 配置实体与表的对应关系
		name:完整 类名
		table:表名
	 -->
	<class name="Customer" table="cst_customer">
		<!-- 
			id 配置主键映射的属性
			name:主键对应的属性名
			column:表中的主键列名
		 -->
		<id name="cust_id" column="cust_id">
			<!--generator: 主键生成策略 -->
			<generator class="native"></generator>
		</id>
		<!-- 
			property:普通属性(除id以外的)映射
			name:主键对应的属性名
			column(可选):表中的主键列名 默认值使用属性名
			type(可选): 列的属性
				3中属性:java、hibernate、数据库类型
			not-null :属性是否为空
			length: 配置数据库中列的长度
		 -->
		<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_linkman" column="cust_linkman"></property>
		<property name="cust_phone" column="cust_phone"></property>
		<property name="cust_mobile" column="cust_mobile"></property>
	</class>
</hibernate-mapping>

 

5.创建核心配置文件

在 src 目录下创建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</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">root</property>
		<!--数据库方言-->
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		
		 <!-- 打印到控制台 -->
		<property name="hibernate.show_sql">true</property>
		<!-- 格式化语句 -->
		<property name="hibernate.format_sql">true</property>
		
		<!--  auto schema export  自动导出表结构. 自动建表-->
		 <property name="hibernate.hbm2ddl.auto">update</property>
		 
		 <!-- 引入orm元数据  -->
		<mapping resource="com/test/domain/Customer.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

 

6.测试

[Hibernate] Hibernate 原理及入门操作

成功:控制台中会打印出对应的sql语句, 同时数据库中插入相应的数据。

三.Hibernate常见配置

1.映射文件的配置

 该文件是向Hibernate提供持久化类到数据库的映射

<class>:用来建立类和表的映射。name:类名。table:表名

<id>: 用来配置类中的属性和数据库中主键字段的映射。name:类的属性名。column:字段名。length:字段长度。type:Java数据类型、Hibernate 数据类型、SQL 类型。

       <generator>:主键生成策略

<property>:用来类中普通属性和表中字段的映射。 name:类的属性名。column:字段名。length:字段长度。type:Java数据类型、Hibernate 数据类型、SQL 类型。

2.核心配置

配置持久层和映射文件所需要的基本信息。默认名称为Hibernate.cfg.xml

必须配置连接数据库的基本参数(4个)

可选配置 Hibernate 方言

是否打印和格式化 sql 文件

如何创建表

加载映射文件

四.Hibernate的组件

[Hibernate] Hibernate 原理及入门操作

应用程序调用Configuration读取主配置文件和映射文件生成SessionFactory对象,然后该对象生成session。然后Session对象生成Transaction对象。session通过save、delete、saveOrUpdate、get方法实现对数据库的增删改查。Transaction对象提交事务或者回滚事务。

总结Hibernate工作原理:

1.通过Configuration().config();//读取并解析配置文件

2.通过Hbernate.cfg.xml 加载映射文件读取映射信息

3.通过config.buildSessionFactory();//创建SessionFactory对象

4.通过SessionFactory.openSession();//得到session对象

5.通过session.getTransaction().commit();//提交事务
6.session.close();//关闭事务

 

 

相关标签: Hibernate