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. Linux下pwn从入门到放弃

    Linux下pwn从入门到放弃 0x0 简介 pwn,在安全领域中指的是通过二进制/系统调用等方式获得目标主机的shell. 虽然web系统在互联网中占有比较大的分量,但是随着移动端,ioT的逐渐流行 ...

  2. Linux 命令配置IP

    配置静态IP:ip addr add 192.168.18.18/24 dev eth0 启动网卡:ifup eth0/ifup ifcfg-eth0 添加默认网关路由:ip route add de ...

  3. Linux下kafka集群搭建

    环境准备 zookeeper集群环境 kafka是依赖于zookeeper注册中心的一款分布式消息对列,所以需要有zookeeper单机或者集群环境. 三台服务器: 172.16.18.198 k8s ...

  4. @font-face字图标问题

    链接:http://www.exp99.com/htmlcss/htmlcss_229.html

  5. 使用HTML5 -Canvas追踪用户,Chrome隐身模式阵亡

    中国的一些精准营销公司又要偷着乐了= =从之前追踪Cookie到后面追踪FlashCookie,某些商家总在永无止境的追踪用户行为甚至是隐私,将其转化为所谓的“商业价值”.我们被迫面临“世风日下.道德 ...

  6. keep running

     一个人的心态,会支撑你一路的发展:一个人的眼界,会决定选择的方向:一个人的格局,会意味着你成就多大的规模:一个人的毅力,会支持你能够走多远:一个人的用心,会注定你做出多好的成效!你变好了,一切就变好 ...

  7. docker安装rocketmq

    一.单机部署 1.拉取镜像:foxiswho/rocketmq:server  cabel/rocketmq:broker styletang/rocketmq-console-ng 2.创建目录:d ...

  8. 第十一章 前端开发-css

    第十一章 前端开发-css 1.1.0 css介绍 css是指层叠样式表(Cascading Style Sheets),样式定义如何显示html元素,样式通常又会存在于样式表中. css优势: 内容 ...

  9. hdu 6039 Gear Up

    题 OvO http://acm.hdu.edu.cn/showproblem.php?pid=6039 (2017 Multi-University Training Contest 1 1007) ...

  10. HTML5测试题整理Ⅱ

    1.哪个元素被称为媒体元素的子元素? 答案:<track>. <track> 标签为媒体元素(比如 <audio> and <video>)规定外部文本 ...