Hibernate系列1:入门程序
1.传统的java数据库连接
在传统的开发中,如果要建立java程序和数据库的连接,通常采用JDBC或者Apache Commons DbUtils开发包来完成。他们分别有以下特点:
JDBC:
优点:1.底层连接,效率高
缺点:需要手写sql语句,代码重复多,封装结果集繁琐
DbUtils:
优点:结果集封装可直接调用,封装JDBC,效率较高
缺点:需要手写sql语句
2.Hibernate的概念:
Hibernate是一个 轻量级、企业级、开源的 持久层 ORM框架:
- 轻量级:依赖资源少
- 企业级:适合在企业级应用中使用
- 开源:源代码开放
- 持久层:完成数据持久化的逻辑层
- ORM: Object Relationship Mapping,对象关系映射
3.Hibernate的入门程序:
- 创建项目,java项目或web项目,此处我们创建java项目
- 导入jar包,导入需要的mysql-connector,hibernate核心jar包

- 创建实体类
//学生实体类
package domain;
import java.io.Serializable;
public class Student implements Serializable { private int stuId;
private String stuName;
private String stuMemo; public int getStuId() {
return stuId;
}
public void setStuId(int stuId) {
this.stuId = stuId;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public String getStuMemo() {
return stuMemo;
}
public void setStuMemo(String stuMemo) {
this.stuMemo = stuMemo;
}
@Override
public String toString() {
return "Student [stuId=" + stuId + ", stuName=" + stuName + ", stuMemo=" + stuMemo + "]";
}
}
- 编写配置文件,包括Hibernate实体类映射文件和Hibernate主配置文件
//Student实体类映射配置文件
<?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="domain.Student">
<id name="stuId" column="stu_id">
<generator class="native"/>
</id>
<property name="stuName" column="stu_name"></property>
<property name="stuMemo" column="stu_memo"></property>
</class>
</hibernate-mapping>
//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>
<session-factory>
<!-- 第一步:配置数据库连接信息 -->
<property name="hibernateDialect">org.hibernate.dialect.MYSQLDialect</property>
<property name="hibernate.connection.driver.class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<!-- 第二步:配置hibernate其他配置 -->
<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.current_session_context_class">thread</property>
<!-- 第三步:导入映射文件 -->
<mapping resource="domain/Student.hbm.xml"/>
</session-factory>
</hibernate-configuration>
- 编写测试类并运行:
package test; import org.hibernate.Session; import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.Transaction;
import org.junit.jupiter.api.Test; import util.HibernateUtils; public class HibernateTest01 { @Test
public void test1()
{
Configuration config = new Configuration().configure();
SessionFactory SF = config.buildSessionFactory();
Session s = SF.openSession();
Transaction tx = s.beginTransaction();
tx.commit();
s.close();
SF.close();
} }
运行上述单元测试,可以从输出中看到Hibernate帮我们完成了创建表的操作:

下面我们完成一个简单的插入操作:
package test; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.jupiter.api.Test; import domain.Student;
public class HibernateTest01 { @Test
public void test1()
{
Configuration config = new Configuration().configure();
SessionFactory SF = config.buildSessionFactory();
Session s = SF.openSession();
Transaction tx = s.beginTransaction();
Student s1 = new Student();
// s1.setStuId(1); 数据库主键自动生成,可省略此行
s1.setStuName("uzi");
s1.setStuMemo("a famous adc");
s.save(s1);
tx.commit();
s.close();
SF.close();
}
}

查看数据库中studnt表,结果如下:

Hibernate系列1:入门程序的更多相关文章
- 用 MVC 5 的 EF6 Code First 入门 系列:MVC程序中实体框架的Code First迁移和部署
用 MVC 5 的 EF6 Code First 入门 系列:MVC程序中实体框架的Code First迁移和部署 这是微软官方SignalR 2.0教程Getting Started with En ...
- 【mybatis深度历险系列】mybatis的框架原理+入门程序解析
在前面的博文中,小编介绍了springmvc的相关知识点,在今天这篇博文中,小编将介绍一下mybatis的框架原理,以及mybatis的入门程序,实现用户的增删改查,她有什么优缺点以及mybatis和 ...
- Drool实战系列(一)之入门程序
Drools官网地址为:https://www.drools.org/ maven环境 入门程序例子如下: 项目结构截图: 一.导入pom文件 <project xmlns="http ...
- SpringMVC系列(一)SpringMVC概述和搭建SpringMVC的第一个helloWord入门程序
一.SpringMVC 概述 • Spring为展现层提供的基于MVC设计理念的优秀的Web框架,是目前最主流的MVC框架之一 • Spring3.0 后全面超越 Struts2,成为最优秀的 MVC ...
- Hibernate 系列 05 - Session 类
引导目录: Hibernate 系列教程 目录 前言: Session是Hibernate运作的中心,对象的生命周期.事务的管理.数据库的存取都与Session息息相关. 就如同在编写JDBC时需要关 ...
- Hibernate 系列 学习笔记 目录 (持续更新...)
前言: 最近也在学习Hibernate,遇到的问题差不多都解决了,顺便把学习过程遇到的问题和查找的资料文档都整理了一下分享出来,也算是能帮助更多的朋友们了. 最开始使用的是经典的MyEclipse,后 ...
- Hibernate 系列 01 - 框架技术 (介绍Hibernate框架的发展由来)
引导目录: Hibernate 系列教程 目录 本篇导航: 为什么学习框架技术 框架的概念 主流框架的介绍 1.为什么学习框架技术 如何制作一份看上去具有专业水准的PPT文档呢?一个简单的方法就是使用 ...
- Hibernate 系列 02 - Hibernate介绍及其环境搭建
引导目录: Hibernate 系列教程 目录 昨晚喝多了,下午刚清醒,继续搞Hibernate.走起. 觉得还行的话,记得点赞哈,给我这个渣渣点学习的动力.有错误的话也请指出,省的我在错误上走了不归 ...
- Hibernate 系列 03 - 使用Hibernate完成持久化操作
引导目录: Hibernate 系列教程 目录 康姆昂,北鼻,来此狗.动次打次,Hibernate继续走起. 目录: 使用Hibernate实现按主键查询 使用Hibernate实现数据库的增.删.改 ...
随机推荐
- javaScript基础题
1.介绍JavaScript的基本数据类型 Number.Boolean.String.underfind.null Object是JavaScript中所有对象的父对象 数据封装类对象:Object ...
- Windows 下的快捷键
电脑快捷键小技巧window健 + r → msconfig 查看电脑的开机启动项window健 + r → notepad 无标题的记事本window健 + r ...
- Git切换分支并提交到远程分支
1. 在本地需要提交的文件同级目录运行git bash 2. 初始化 git 运行环境 $ git init 3. 新建本地分支develop $ git checkout -b decelop 4. ...
- Mount Windows (CIFS) shares on Linux with credentials in a secure way
Posted on 09/09/2014 In almost all cases, when mounting a CIFS-share on a Linux host, you will nee ...
- deep_learning_Function_sklearn的train_test_split()
sklearn的train_test_split train_test_split函数用于将矩阵随机划分为训练子集和测试子集,并返回划分好的训练集测试集样本和训练集测试集标签. 格式: X_tra ...
- python文件操作:文件处理与操作模式
一,文件处理的模式基本概念 #coding:utf-8 # 一: 文件处理的三个步骤 # 1. 打开文件拿到文件对象(文件对象====>操作系统打开文件====>硬盘) # f=open( ...
- API开发之接口安全(一)----生成sign
在对于API的开发中 最让人头疼的 就是接口数据暴露 让一些有心之人 抓包之后恶意请求 那么如何解决这一弊端呢?自然而然的 我们就想到了 加密 那我们又如何加密 如何解密 才能使之有最安全的效率呢? ...
- 异步消息处理机制相关面试问题-AsyncTask面试问题详解
什么是AsyncTask: 它本质上是一个封装了线程池和handler的异步框架. AsyncTask的使用方法: 三个参数: 五个方法: AsyncTask的内部原理: AsyncTask的注意事项 ...
- Loadrunner:管理员权限启动报错“win10 为了对电脑进行保护,已经阻止此应用”
问题 最近在尝试做性能测试,由于 Loadrunner 必须用管理员身份启动(普通用户权限启动会遇到各种权限不足的问题) 但是用管理员身份启动时,报错了:win10 为了对电脑进行保护,已经阻止此应用 ...
- Ubuntu各个版本下载
官网:https://www.ubuntu.com/download/desktop 没找到历史版本,且下载速度很慢 在网易镜像站下载ubuntu: 网址:http://mirrors.163.com ...