一身转战三千里,一剑曾当百万师

  如果你在之前没有学过SSH三大框架,那么你之前肯定是通过JDBC来对数据库进行操作.现在,你完全可以把跟数据库交互的操作直接交给Hibernate.

  Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的 orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命 意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

  Hibernate是一个持久层的ORM框架。(ORM:Object Relational Mapping。对象关系映射。开发语言用的是Java,面向对象的(Object)。使用的数据库是关系型数据库(Relational)。就是将对象与数据库中的表建立一种映射关系,操作对象就可以操作这个表。)

  了解了hibernate之后,是不是很期待呢?OK,我们来做一个Hibernate入门案例.

  第一步:下载Hibernate开发包.下载地址:https://sourceforge.net/projects/hibernate/files/hibernate-orm/5.0.7.Final/

  第二步:下载完成并解压后你可以看到如下目录:

  第三步:接下来,进入eclipse创建web项目,并且引入必要的jar包,jar包在上面的lib/required目录下

同时,还需要 数据库驱动包 和 日志记录的包 ,一个入门案例的完整项目的jar包如下图:

  第四步:然后就是创建数据库和表了,

建库:

CREATE DATABASE hibernate

建表:

CREATE TABLE `cst_customer` (

`cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)',

`cust_name` varchar(32) NOT NULL COMMENT '客户名称(公司名称)',

`cust_source` varchar(32) DEFAULT NULL COMMENT '客户信息来源',

`cust_industry` varchar(32) DEFAULT NULL COMMENT '客户所属行业',

`cust_level` varchar(32) DEFAULT NULL COMMENT '客户级别',

`cust_phone` varchar(64) DEFAULT NULL COMMENT '固定电话',

`cust_mobile` varchar(16) DEFAULT NULL COMMENT '移动电话',

PRIMARY KEY (`cust_id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

  第五步:根据数据库的表建实体类并生成get和set方法

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_phone;

private String cust_mobile;

//生成对应的get和set方法

}

  第六步:创建映射,映射文件通常有一个命名规则:类名.hbm.xml,映射文件放在和实体类同一个目录下.创建映射文件首先要引入约束,这段代码不用写,到如下图的位置复制过来:

打开Java Resources/Libraries/Web App Libraries

打开hibernate-core-5.0.7.Final.jar/org.hibernate

在最下面找到并打开hibernate-configuration-3.0.dtd

复制如下面这段

接下来的配置看图:

如果在写配置文件的时没网并且没有提示的时候,那需要配置相关文件:

复制约束中的最后一段到浏览器打开,就会自动下载一个dtd文件.

然后在eclipse中首选项里找到如下图:key是约束最后的一段,location是你刚下载的dtd文件的路径,配置好了之后在没网的情况下就会有提示了,如果还没有就重启一下.

  第七步:在src的目录下创建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="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">123</property>

<!-- 数据库的方言:根据底层的数据库生成不同的SQL -->

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

<!-- 配置显示SQL -->

<property name="hibernate.show_sql">true</property>

<!-- 配置格式化SQL -->

<property name="hibernate.format_sql">true</property>

<!-- 配置hbm2ddl  

        hibernate.hbm2ddl.auto有几个取值

        * none          :不使用映射转成DDL。

        * create            :如果原来有表将原有的表删除。每次都会新创建一个表。测试的时候使用。

        * create-drop   :如果原来有表将原有的表删除。每次都会新创建一个表。执行完操作以后会将表删除掉。测试的时候使用。

        * update            :如果数据库中有表使用原来的表。如果没有表会创建一个表。而且可以更新原有表结构。

        * validate      :不会创建表。校验映射和表结构是否正确

   -->

<property name="hibernate.hbm2ddl.auto">update</property>

<!-- 加载映射文件 -->

<mapping resource="com/hibernate/domain/Customer.hbm.xml"/>

</session-factory>

</hibernate-configuration>

第八步:编写测试方法

public class HibernateDemo1 {

@Test

/**

* 保存操作

*/

public void demo1(){

// 加载Hibernate的核心配置文件.

Configuration configuration = new Configuration().configure();

// 创建一个SessionFactory的对象.

SessionFactory sessionFactory = configuration.buildSessionFactory();

// 创建Session(相当于JDBC中的Connection)

Session session = sessionFactory.openSession();

// 开启事务:

Transaction transaction = session.beginTransaction();

// 完成操作:

Customer customer = new Customer();

customer.setCust_name("某某某");

    //保存的方法

session.save(customer);

// 提交事务

transaction.commit();

// 释放资源

session.close();

}

}

执行方法,就可以在数据库添加记录了.......

到此为止,你已经入门了hibernate.加油吧.明天会更好.

Hibernate介绍和入门案例的更多相关文章

  1. Spring学习笔记(一)—— Spring介绍及入门案例

    一.Spring概述 1.1 Spring是什么 Spring是一个开源框架,是于2003年兴起的一个轻量级的Java开发框架, 由Rod Johnson 在其著作<Expert one on ...

  2. Hibernate框架之入门案例

    今天终于开始学习了三大框架的其中一个框架,Hibernate框架,在这里不去讲Hibernate框架的一些基础概念了,直接切入代码,带大家了解一下Hibernate能干什么, Hibernate的人们 ...

  3. Hibernate-ORM:02.Hibernate增删改入门案例

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本笔者使用的是Idea+mysql+maven做Hibernate的博客,本篇及其以后都是如此! 首先写好思路 ...

  4. 一起学习Hibernate: Hibernate01 —— Hibernate的概述与入门案例

    一 Hibernate的介绍 1 让我们从JDBC与替代它的框架Hibernate进行一下对比. 1.1 JDBC的缺点 1) 代码结构繁琐.每次书写sql语句操作数据库都得需要很多步; 2) 是面向 ...

  5. Mybatis学习笔记之一(环境搭建和入门案例介绍)

    一.Mybatis概述 1.1 Mybatis介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了go ...

  6. Hibernate入门案例及增删改查

    一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...

  7. Hibernate入门案例 增删改

    一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...

  8. _00017 Kafka的体系结构介绍以及Kafka入门案例(0基础案例+Java API的使用)

    博文作者:妳那伊抹微笑 itdog8 地址链接 : http://www.itdog8.com(个人链接) 博客地址:http://blog.csdn.net/u012185296 博文标题:_000 ...

  9. 03 Mybatis:01.Mybatis课程介绍及环境搭建&&02.Mybatis入门案例

    mybatis框架共四天第一天:mybatis入门 mybatis的概述 mybatis的环境搭建 mybatis入门案例 -------------------------------------- ...

随机推荐

  1. CSS学习笔记:利用border绘制三角形

    在前端的笔试.面试过程中,经常会出现一些不规则图形的CSS设置,基本上多是矩形外加一个三角形.利用CSS属性可以实现三角形的生成,主要利用上下左右的边距的折叠. 1.第一种图形: .box { wid ...

  2. C# 我的注册表操作类

    using System; using System.Collections.Generic; using System.Text; using Microsoft.Win32; using Syst ...

  3. WCF中队列服务详解

    WCF中队列服务详解 一.引言 在前面的WCF服务中,它都要求服务与客户端两端都必须启动并且运行,从而实现彼此间的交互.然而,还有相当多的情况希望一个面向服务的应用中拥有离线交互的能力.WCF通过服务 ...

  4. 如何配置Spring的XML文件及使用

    App.config <?xml version="1.0" encoding="utf-8" ?> <configuration> & ...

  5. Asp.Net Web Api 接口,拥抱支持跨域访问。

    如何让你的 Asp.Net Web Api 接口,拥抱支持跨域访问. 由于 web api 项目通常是被做成了一个独立站点,来提供数据,在做web api 项目的时候,不免前端会遇到跨域访问接口的问题 ...

  6. Bootstrap导航悬浮顶部,stickUp

    stickUp 一个 jQuery 插件 这是一个简单的jQuery插件,它能让页面目标元素 “固定” 在浏览器窗口的顶部,即便页面在滚动,目标元素仍然能出现在设定的位置.此插件可以在多页面的网站上工 ...

  7. MVC AuthorizeAttribute 动态授权

    开发中经常会遇到权限功能的设计,而在MVC 下我们便可以使用重写 AuthorizeAttribute 类来实现自定义的权限认证 首先我们的了解 AuthorizeAttribute 下面3个主要的方 ...

  8. Android 屏幕截图(底层实现方式)

    加载底层库ScreenCap.java: public class ScreenCap { static { System.loadLibrary("scrcap"); } sta ...

  9. C语言面试问答5

    12个滑稽的C语言面试问答——<12个有趣的C语言问答>评析(5) 前文链接:http://www.cnblogs.com/pmer/archive/2013/09/17/3327262. ...

  10. cocos2d学习之路四(添加遥控杆)

    添加遥控杆 1. 首先需要再HelloWorldLayer.h中包含ZJoystick.h文件 并且让其实现ZJoystickDelegate协议 2.打开HelloWorldLayer.mm文件实现 ...