一、Hibernate概述

1、什么是Hibernate

Hibernate是一个开放源代码的ORM(对象关系关系映射)框架

ORM:Object Relational Mapping(对象关系映射)。将Java中的对象与关系型数据库中的表建立一种映射关系,从而操作对象就可以操作数据库中的表。

85aef0348179362419f7cbd8a8a4865e.png

2、Hibernate具有以下几点优势:

①、Hibernate对JDBC访问数据库的代码做了轻量级封装,简化了数据访问村层繁琐的重复性代码,并且减少了内存消耗,加快了运行效率。

②、Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现,很大程度简化了DAO(Data Access Object,数据访问对象)层编码工作。

③、Hibernate的性能非常好,映射的灵活性很出色。它支持很多关系型数据库,从一对一到多对多的各种复杂关系

④、可扩展性强,由于源码的开源及API的开发,当本身功能不够用时,可用自行编码进行扩展。

二、Hibernate使用

1、下载Hibernate的开发环境

2、解压Hibernate

documentation:Hibernate开发的文档

lib:Hibernate开发包

required:Hibernate开发的必须的依赖包

optional:Hibernate开发的可选的jar包

project:Hibernate提供的项目

3、创建一个使用Hibernate的项目

3.1、引入jar包

①、数据库驱动包

②、Hibernate开发的必须的jar包(required)

③、Hibernate日志记录包

29971d96155b99fdca2f8a7d6ab524f9.png

3.2、创建表

CREATE TABLEcst_customer (

cust_idbigint NOT NULL IDENTITY(1,1) ,

cust_namevarchar(32) NOT NULL,

cust_sourcevarchar(32) DEFAULT NULL,

cust_industryvarchar(32) DEFAULT NULL,

cust_levelvarchar(32) DEFAULT NULL,

cust_phonevarchar(64) DEFAULT NULL,

cust_mobilevarchar(16) DEFAULT NULL)ON [PRIMARY]

3.3、创建实体类

public classCustomer {privateLong cust_id;privateString cust_name;privateString cust_source;privateString cust_industry;privateString cust_level;privateString cust_phone;privateString cust_mobile;

}

3.4、创建映射

映射需要通过XML的配置文件来完成,这个配置文件可以任意命名。尽量统一命名规范(类名.hbm.xml)

/p>

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

注意:com.microsoft.sqlserver.jdbc.SQLServerException:对象名xxx无效原因:指定catalog = "数据库名" schema =“模式”(正常情况下不用指定catalog、schema)不正

3.5、创建数据库配置文件

8d1c1ef6b3c021abcf2c1e2383e638c0.png

/p>

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

com.microsoft.sqlserver.jdbc.SQLServerDriver

jdbc:sqlserver://localhost:1433;databaseName=HibernateDB;

sa

AAA@111

org.hibernate.dialect.SQLServerDialect

true

true

注意:com.microsoft.sqlserver.jdbc.SQLServerException:对象名xxx无效的原因:hibernate.connection.url中的数据库名databaseName=不正

3.6、编写测试代码

026d0eaf5d8813075f401acd8a8da02e.png

importorg.hibernate.Transaction;importorg.hibernate.cfg.Configuration;importorg.junit.jupiter.api.Test;/*** @Title: HibernateTest

* @Description:

*@author: marw

* @date 2020/11/03 14:03:48*/

public classHibernateTest {

@Testpublic voiddemo1() {//1.加载Hibernate的配置文件Hibernate.cfg.xml

Configuration configuration=newConfiguration().configure();//2.获取SessionFactory对象 类似JDBC连接池

SessionFactory factory=configuration.buildSessionFactory();//3.获取Session对象 类似JDBC中Connection

Session session=factory.openSession();//4.开启事务(Hibernate版本5不用手动开启事务,要兼容版本3需要手动开启事务)

Transaction transaction=session.beginTransaction();//5.编写代码

Customer customer=newCustomer();

customer.setCust_name("zhang");

session.save(customer);//6.提交事务

transaction.commit();//7.资源释放

session.close();

}

}

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐