一、Hibernate概述

(一)什么是Hibernate?

Hibernate核心内容是ORM(关系对象模型)。可以将对象自动的生成数据库中的信息,使得开发更加的面向对象。这样作为程序员就可以使用面向对象的思想来操作数据库,而不用关心繁琐的JDBC。所以,Hibernate处于三层架构中的D层(持久层)。

(二)使用Hibernate的优点

1、Hibernate可以使用在java的任何项目中,不一定非要使用在java web项目中。因为Hibernate不需要类似于tomact这些容器的支持,可以直接通过一个main方法进行测试。

2、通过下面的实例,可以发现使用Hibernate可以大大减少代码量。

3、由于使用了Hibernate,代码中不涉及具体的JDBC语句,所以就方便了代码的可移植性。

二、Hibernate开发的环境搭建

(一)Hibernate的环境搭建非常简单,只需要引入Hibernate核心包(单击下载)以及Hibernate依赖包(单击下载)即可。
(二)加入数据库驱动。下面的例子中主要是采用Mysql数据库来演示的,所以在这里引入MysqL的JDBC驱动(点击下载)。
(三)提供核心配置文件hibernate.cfg.xml文件(在src文件夹下即可)。其中的配置如下(针对mysql)
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory ><!-- mysql数据库驱动 --><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><!-- mysql数据库名称 --><property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property><!-- 数据库的登陆用户名 --><property name="hibernate.connection.username">root</property><!-- 数据库的登陆密码 --><property name="hibernate.connection.password">root</property><!-- 方言:为每一种数据库提供适配器,方便转换 --><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property></session-factory>
</hibernate-configuration>

三、HIbernate第一个实例

该实例的目录结构如下
说明:最后一个HIBERNATE3里面包含了所有的需要引用的jar包
1、新建一个普通的java项目,按照上面的步骤引入相关的jar包和配置文件
2、建立User实体类
import java.util.Date;public class User {private String id;private String username;private String password;private Date createTime;private Date expireTime;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String userName) {this.username = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Date getCreateTime() {return createTime;}public void setCreateTime(Date createTime) {this.createTime = createTime;}public Date getExpireTime() {return expireTime;}public void setExpireTime(Date expireTime) {this.expireTime = expireTime;}
}

2、提供User.hbm.xml文件,完成实体类的映射
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="com.example.hibernate.User"><id name="id"><generator class="uuid"/></id><property name="username"/><property name="password"/><property name="createTime"/><property name="expireTime"/></class>
</hibernate-mapping>

其中的property标签是将要生成是数据库表中的字段,在这里不用关心各个字段是什么类型的。因为Hibernate会根据上面的实体类中属性的类型来决定将来表中字段的类型

3、配置hibernate.cfg.xml文件
<hibernate-configuration><session-factory ><!-- mysql数据库驱动 --><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><!-- mysql数据库名称 --><property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property><!-- 数据库的登陆用户名 --><property name="hibernate.connection.username">root</property><!-- 数据库的登陆密码 --><property name="hibernate.connection.password">root</property><!-- 方言:为每一种数据库提供适配器,方便转换 --><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><mapping resource="com/example/hibernate/User.hbm.xml"/></session-factory>
</hibernate-configuration>

注意:必须是“/”而不能是“.”。

4、生成表:编写工具类ExoprtDB.java,将hbm生成ddl
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
/*** 将hbm生成ddl* @author BCH**/
public class ExoprtDB {public static void main(String[] args) {//默认读取hibernate.cfg.xml文件Configuration cfr = new Configuration().configure();SchemaExport export = new SchemaExport(cfr);export.create(true, true);}
}

到这里就可以生成User表了,但是如果直接运行ExoprtDB.java文件是不能生成User表的。因为在mysql数据中还没有建立数据库Hibernate-first。所以在mysql控制台中通过create database hibernate-first; use hibernate-first;之后再执行ExoprtDB.java文件就可以生成表了。

5、向表中添加数据
import java.util.Date;import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;public class Client {public static void main(String[] args) {//读取配置文件Configuration cfg = new Configuration().configure();SessionFactory factory = cfg.buildSessionFactory();Session session = null;try{session = factory.openSession();//开启事务session.beginTransaction();User user = new User();user.setUsername("用户名");user.setPassword("123");user.setCreateTime(new Date());user.setExpireTime(new Date());session.save(user);//提交事务session.getTransaction().commit();}catch(Exception e){e.printStackTrace();//回滚事务session.getTransaction().rollback();}finally{if(session != null){if(session.isOpen()){//关闭sessionsession.close();}}}}
}

执行该java文件就可以完成向表中增加数据了,效果如下

(四)总结

通过上面的代码我们可以看出,在代码中没有涉及到任何有关JDBC的代码,作为开发人员只需要写好相应的实体类,然后通过配置就可以实现了表的建立以及向表中实现数据的插入。
在代码中有许多Hibernate的核心对象,例如Configuration、SessionFactory、Session等等。这些内容将在以后介绍。
From:http://blog.csdn.net/aboy123/article/details/10085635

转载于:https://www.cnblogs.com/jinxiang1224/p/8468214.html

新手上路之Hibernate:第一个Hibernate例子相关推荐

  1. 软件项目经理新手上路16 - 后记,一切才刚刚开始

    如果你内向,同时觉得自己够聪明,就去做软件开发人员吧.这是我当时为什么从事软件行业的原因.而且,我发现不是我一个人这么想,中国内向的聪明人实在是太多了.这些人都认为,相对于面对人而言,他们更善于面对电 ...

  2. 在Eclipse中写第一个hibernate小例子

    在hibernate自带的文档中,包含了一个很简单的小例子,不过这个小例子是基于ant的,而且说的不是很详细,不利于新手学习.在这里,我将在Eclipse中实现这个例子,并给出详细的实现步骤.     ...

  3. 用php建设一个简单的网站,PHP_PHP新手上路(六),建设一个简单交互的网站(二) 5 - phpStudy...

    PHP新手上路(六) 建设一个简单交互的网站(二) 5.5 计数器 让我们在首页上加上一个计数器.这个例子已经被讲过多次了,但是还是有利于演示怎样读写文件以及创建自己的函数.counter.inc包含 ...

  4. 对“纯手工编写的第一个Hibernate程序”的改进

    在上一篇博文<纯手工编写第一个Hibernate程序>中,介绍了如何手工编写第一个简单的Hibernate程序.在那个例子中,为了降低程序编写的难度,所有的类都没有包的声明.然而在实际开发 ...

  5. Java基类共同属性设置_java – 你有一个Hibernate实体的基类吗?

    你有一个Hibernate实体的共同基类,即具有id,version和其他常见属性的MappedSuperclass?有什么缺点吗? 例: @MappedSuperclass() public cla ...

  6. 第一个Hibernate项目

    一.构建Hibernate项目 1.新建Java项目HibernateDemo1 2.导入Hibernate下的jar包(lib->required下的所有jar包)+jdbc驱动包 3.导入h ...

  7. Hibernate 入门----第一个Hibernate应用程序

    (可参考Hibernate中文文档--附件下载) [align=center][size=medium] 第一个Hibernate应用程序 [/size][/align] [b]一.首先我们将创建一个 ...

  8. Java程序员从笨鸟到菜鸟之(五十一)细谈Hibernate(二)开发第一个hibernate基本详解...

    在上篇博客中,我们介绍了<hibernate基本概念和体系结构>,也对hibernate框架有了一个初步的了解,本文我将向大家简单介绍Hibernate的核心API调用库,并讲解一下它的基 ...

  9. Hibernate→ORM、简介、第一个Hibernate实现、核心XML配置、Hibernate执行流程、操作数据库对象session、事务、映射XML配置、单例CRUD、get与load

    OMR Hibernate 官网 http://hibernate.org/ 第一个Hibernate实现 配置文件 持久化类 关系映射文件 测试类 代码 hibernate.cfg.xml常用配置 ...

最新文章

  1. [4月21日]《51CTO 编辑部的外传》——剧本篇(上)
  2. javaweb:servlet
  3. 编译成功但链接失败的原因
  4. 教育孩子的一个很棒的方式
  5. 程序包com.sun.istack.internal不存在
  6. 关于待机、休眠、睡眠的区别和优缺点
  7. [Apple开发者帐户帮助]八、管理档案(2)创建临时配置文件(iOS,tvOS,watchOS)...
  8. webservice 服务器无法处理请求_Message Queue与WebService比较
  9. ntko跨浏览器插件_继泄露版后,微软全新 Chrome 内核 Edge 浏览器你都测试过了吗?...
  10. 剑指offer之数据流中的中位数
  11. lambda函数if_现代 C++:Lambda 表达式
  12. leetcode第一刷_Merge Intervals
  13. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第4节 等待唤醒机制_2_等待唤醒案例分析...
  14. Js之History对象
  15. java轩辕剑天之痕游戏攻略_轩辕剑3外传天之痕攻略 全流程文字攻略(3)
  16. 从客户端登陆服务器的配置文件,从客户端登陆服务器的配置
  17. pip install镜像安装
  18. English trip V2 - 24 Making Predictions Teacher: Taylor
  19. android手机连接电脑,安卓手机连接电脑的方法
  20. #420 Div2 Problem B Okabe and Banana Trees (math 暴力枚举)

热门文章

  1. 计算机文化基础 电大,电大计算机文化基础形考一答案
  2. unity3d双面材质_unity3d 模型怎么双面显示?
  3. 整数和小数的移码计算方法
  4. android blcr 编译,BLCR 基本环境搭建【zz~】
  5. 深度学习导论(5)手写数字识别问题步骤
  6. java图形化界面设置焦点_如何在更新窗口时防止Java图形程序窃取焦点?
  7. 『数据库』数据库的查询可不是只知道Select就可以的--关系数据库系统的查询处理
  8. linux-shell命令之cat【输出档案内容】
  9. 如何在ubuntu下安装source insight
  10. 如何用软件工程消灭软件危机?