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&amp;characterEncoding=utf-8&amp;useSSL=false&amp;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:入门程序的更多相关文章

  1. 用 MVC 5 的 EF6 Code First 入门 系列:MVC程序中实体框架的Code First迁移和部署

    用 MVC 5 的 EF6 Code First 入门 系列:MVC程序中实体框架的Code First迁移和部署 这是微软官方SignalR 2.0教程Getting Started with En ...

  2. 【mybatis深度历险系列】mybatis的框架原理+入门程序解析

    在前面的博文中,小编介绍了springmvc的相关知识点,在今天这篇博文中,小编将介绍一下mybatis的框架原理,以及mybatis的入门程序,实现用户的增删改查,她有什么优缺点以及mybatis和 ...

  3. Drool实战系列(一)之入门程序

    Drools官网地址为:https://www.drools.org/ maven环境 入门程序例子如下: 项目结构截图: 一.导入pom文件 <project xmlns="http ...

  4. SpringMVC系列(一)SpringMVC概述和搭建SpringMVC的第一个helloWord入门程序

    一.SpringMVC 概述 • Spring为展现层提供的基于MVC设计理念的优秀的Web框架,是目前最主流的MVC框架之一 • Spring3.0 后全面超越 Struts2,成为最优秀的 MVC ...

  5. Hibernate 系列 05 - Session 类

    引导目录: Hibernate 系列教程 目录 前言: Session是Hibernate运作的中心,对象的生命周期.事务的管理.数据库的存取都与Session息息相关. 就如同在编写JDBC时需要关 ...

  6. Hibernate 系列 学习笔记 目录 (持续更新...)

    前言: 最近也在学习Hibernate,遇到的问题差不多都解决了,顺便把学习过程遇到的问题和查找的资料文档都整理了一下分享出来,也算是能帮助更多的朋友们了. 最开始使用的是经典的MyEclipse,后 ...

  7. Hibernate 系列 01 - 框架技术 (介绍Hibernate框架的发展由来)

    引导目录: Hibernate 系列教程 目录 本篇导航: 为什么学习框架技术 框架的概念 主流框架的介绍 1.为什么学习框架技术 如何制作一份看上去具有专业水准的PPT文档呢?一个简单的方法就是使用 ...

  8. Hibernate 系列 02 - Hibernate介绍及其环境搭建

    引导目录: Hibernate 系列教程 目录 昨晚喝多了,下午刚清醒,继续搞Hibernate.走起. 觉得还行的话,记得点赞哈,给我这个渣渣点学习的动力.有错误的话也请指出,省的我在错误上走了不归 ...

  9. Hibernate 系列 03 - 使用Hibernate完成持久化操作

    引导目录: Hibernate 系列教程 目录 康姆昂,北鼻,来此狗.动次打次,Hibernate继续走起. 目录: 使用Hibernate实现按主键查询 使用Hibernate实现数据库的增.删.改 ...

随机推荐

  1. Qt5配置winpCap

    在网上查了很多资料,搞了差不多一天总算解决Qt5使用winPcap配置的问题了!记录一下 以便后续忘记 1.下载winpcap4.1.3,百度即可搜索到 2.下载winpCap开发者工具包http:/ ...

  2. 第十五章、Python多线程之信号量和GIL

    目录 第十五章.Python多线程之信号量和GIL 1. 信号量(Semaphore) 2. GIL 说明: 第十五章.Python多线程之信号量和GIL 1. 信号量(Semaphore) 信号量用 ...

  3. fastadmin 列表展示时字段值截取

    {field: '字段名', title: __('lang中的语言名'),formatter:function(value,row,index){ value=value?value:''; var ...

  4. smbfs

    Hi I tried to mount a network share (smbfs) but it complains about the lack of kernel support. To so ...

  5. JavaScript在页面中的执行顺序(理解声明式函数与赋值式函数) 转载

    JavaScript在页面中的执行顺序 https://blog.csdn.net/superhoy/article/details/52946277 2016年10月27日 15:38:52 阅读数 ...

  6. TF_RNNCell

    参考:链接. RNNCell BasicRNNCell GRUCell BasicLSTMCell LSTMCell MultiRNNCell 抽象类RNNCell 所有的rnncell均继承于RNN ...

  7. WebRTC的带宽估计[转载]

    带宽估计(BWE)模块的任务是决定你可以发送多大的视频流且不会造成网络拥塞,以此来保证不会降低视频质量. 在以前的带宽估计算法还是十分基础的,大体上是基于丢包而设计的.通常我们在开始慢慢的增加视频的比 ...

  8. 基于Hexo的个人博客搭建(上)

    没有废话,直接开始. 1. 环境配置 —1.1 node.js安装 https://nodejs.org/en/download/ 下载最新版本即可,然后无脑安装(除了选安装目录的时候),为了保证安装 ...

  9. Java WEB框架——SSM之Hello world

    一.建立项目 先搭建一个webapp项目(要选creat from arctype) 起名 选择maven路径,settings.xml那里要选择override才可以在资源管理器中浏览.接下来直接N ...

  10. 今日理解之js

    JavaScript 是前端的一门编程语言(也是有逻辑) node.js 支持前端js代码 跑在后端服务器上 Js跟Java什么关系? Js跟Java半毛钱关系都没有!!! 原因是当初Java特别火 ...