作为第一篇关于Hibernate的总结博文,简要说一下Hibernate的基本结构:

“Hibernate,是一个开放源代码的对象关系映射框架(ORM),它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间。Hibernate的目标主要是用于与数据持久化相关的编程任务,能够使开发人员从原来枯燥的SQL语句的编写中解放出来,解放出来的精力可以让开发人员投入到业务逻辑的实现上。Hibernate可以帮助用户消除或者包装那些针对特定厂商的SQL代码,并且帮用户把结果集从表格式的表示形式转换成一系列的对象。”摘自 百科.

从下图可以看出,Hibernate处于中间部位,把Application传过来的Persistent持久化对象通过Hibernate核心配置文件和基本映射文件,持久化处理到数据库Database中。

Hibernate框架如下图:其中Persistence Layer属于Hibernate范畴。

下面是一个应用Hibernate生成表结构及INSERT一条记录的实例: 

1. 搭建Hibernate实验环境 需要引入Hibernate下的核心包hibernate3.jar 、依赖包即 \lib 文件夹下的所有jar文件 、mysql驱动包 、Hibernate核心配置文件 hibernate.cfg.xml 。

2.在IDE中根据设计的User实体类,编写映射文件User.hbm.xml

-------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.jzg.hibernate.User"><id name="id" column="t_user_id"><!-- 属性列的重命名 user_id --><generator class="uuid"></generator><!-- 主键生成策略 --></id><property name="name"></property><property name="password"></property><property name="createTime"></property><property name="expireTime"></property>
</class>
</hibernate-mapping>

3.在Hibernate核心配置文件hibernate.cfg.xml中添加User实体类映射文件信息。

------hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.sourceforge.net/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://localhost:3306/hibernate_first</property><property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">jzg</property><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect
</property><property name="hibernate.show_sql">true</property>
<!—在这里指定相应实体映射文件,此为路径 文件-->    <mapping resource="com/jzg/hibernate/User.hbm.xml"/></session-factory>
</hibernate-configuration>

注意映射文件的存放位置:

4.事先通过mysql  command  line 生成database。

5. 在配置好基本文件后,编写ExportDBUtil类,执行生成表结构。

------ExportDBUtil.class

public class ExportDBUtil {public static void main(String[] args){//默认读取hibernate.cfg.xml文件Configuration cfg = new Configuration().configure();SchemaExport export = new SchemaExport(cfg);export.create(true, true);}
}
-----print执行结果
drop table if exists User
11:03:56,732  WARN JDBCExceptionReporter:48 - SQL Warning: 1051, SQLState: 42S02
11:03:56,732  WARN JDBCExceptionReporter:49 - Unknown table 'user'
create table User (t_user_id varchar(255) not null, name varchar(255), password varchar(255), createTime datetime, expireTime datetime, primary key (t_user_id))
11:03:56,812  WARN JDBCExceptionReporter:48 - SQL Warning: 1051, SQLState: 42S02
11:03:56,812  WARN JDBCExceptionReporter:49 - Unknown table 'user'

6. 通过Hibernate中的Session对象 执行save()方法继而将实例持久化存入数据库,save()方法封装了我们以前要写的INSERT 语句。这里也基本能看出Hibernate把数据库操作等进行对象化封装,简单易操作,只要整理好需要持久化的对象,其他的和数据库操作的东西交给Hibernate去做吧。

------Client.class

public class Client {public static void main(String[] args) {//用Hibernate读取数据表,需要借助配置文件//读取配置文件Configuration cfg = new Configuration().configure();//建立SessionFactory,然后就可以访问mysql了SessionFactory factory = cfg.buildSessionFactory();//取得session,session是一种用于管理数据库操作的对象。     Session session = null;try{//打开sessionsession = factory.openSession();//开启事务session.beginTransaction();User user = new User();user.setName("zhangsan");user.setPassword("123456");user.setCreateTime(new Date());user.setExpireTime(new Date());//保存user对象到数据库中,以记录形式存储session .save(user);//提交事务session.getTransaction().commit();}catch( Exception e){e.printStackTrace();//回滚事务session.getTransaction().rollback();}finally{if(session != null){if(session.isOpen()){//关闭sessionsession.close();}} }}
}

附:NHibernate一个Hibernate胞弟一样的存在。

NHibernate:一个基于Java Hibernate的.NET平台下对象/关系数据库映射工具. 功能性和Hibernate是一样一样滴,但目前不如Hibernate应用范围广。

框架图:

转载于:https://www.cnblogs.com/lfsfxy9/archive/2011/07/20/2629267.html

【我看Hibernate】Hibernate 介绍及其简单应用相关推荐

  1. Hibernate复习之Hibernate基本介绍

    众所周知.眼下流行的面向对象的对象关系映射的Java持久层框架有MyBatis和Hibernate.他们都是对象关系映射ORM. 解决的主要问题就是对象-关系的映射.域模型和关系模型都分别建立在概念模 ...

  2. Hibernate搭建开发环境+简单实例(二)

    2019独角兽企业重金招聘Python工程师标准>>> Hibernate是非常典型的持久层框架,持久化的思想是非常值得我们学习和研究的.这篇博文,我们主要以实例的形式学习Hiber ...

  3. Struts2和hibernate框架整合实现简单的注册登陆功能

    Struts2和hibernate框架整合实现简单的注册登陆功能 项目结构: LoginAction.java package action; import vo.User; import vo.Us ...

  4. java hibernate详细_Java事务管理学习之Hibernate详细介绍

    hibernate是jdbc轻量级的封装,本身不具备事务管理的能力,在事物管理层面,一般是委托于底层的jdbc和jta来完成调度的.下面这篇文章主要给大家介绍了Java事务管理学习之Hibernate ...

  5. Hibernate学习——建立一个简单的Hibernate项目

    最近老师让做个web小应用,大三的时候学习过一点J2EE的东西,也做过一些web相关的XXX管理系统,都是用servlet,jsp这些完成的,虽然勉强能够完成任务,但其中各种代码掺杂在一起,不好看而且 ...

  6. Hibernate二级缓存的简单示例

    1. 在hibernate.fcg.xml配置文件中开启二级缓存: <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernat ...

  7. (三)AJAX基本介绍和简单实例03

    (三)AJAX基本介绍和简单实例03-----Ajax与数据库的动态应用 前台显示界面: 选择所有客户之后: 选择其中一个客户---杜森: Demo03.html代码 <html> < ...

  8. 新手必看的编程介绍,帮你推荐学习方案!

    新手必看的编程介绍,帮你推荐学习方案! VB是什么? ) y0 {6 G# G; j3 B VB 是Visual Basic编程语言 * B. O2 G# z) O1 |- g8 `4 ^ 编写计算机 ...

  9. Protobuf介绍及简单使用(上)

    目录 Protobuf 介绍 优势 protobuf语法 Specifying Field Rules Data type Data name Number Protobuf注释 保留字段与标识符 s ...

最新文章

  1. Android View体系(六)从源码解析Activity的构成
  2. 一个简单的汇编报时小闹钟
  3. spring中控制器和服务层校验的实现原理
  4. STM32 FSMC 外部使用SRAM
  5. JavaFX学习之道:JavaFX之TableView
  6. android webview拍照,在android 2.2/2.3中使用webview从camera中照相并且上传的实现
  7. k8s学习笔记-调度之Affinity
  8. Java Stack 类
  9. 【AtCoder - 4244 】AtCoder Express 2 (区间dp 或 暴力枚举,思维)
  10. 首尔最高旋转餐厅后厨一探究竟
  11. order by 子查询_SQL查询语法
  12. MongoDB-概述:跨平台的面向文档的高性能高可用性易扩展数据库
  13. 离线语音识别技术品鉴——功能不同各有千秋
  14. 如何使用Mac电脑内置的屏幕共享功能进行远程桌面协助?
  15. Python3 网络编程
  16. 原子结构示意图全部_所有原子结构示意图(1-118)最新元素周期表.pdf
  17. 实对称矩阵 二次型 合同 相似对角化
  18. 两个计算机系统安装,如何一个电脑装两个系统|一个电脑装2个系统方法
  19. Python图像库PIL的类Image的paste写法
  20. 汇编语言寄存器AX,BX,CX,DX

热门文章

  1. 河南经济管理学校2001级计算机,懂得取舍,习得自主——访管信2001级经英奖学金得主张瑞娟...
  2. Linux系统无线鼠标不能用,手把手教你win7系统无线鼠标不能用的处理方案
  3. php生成文字闪烁,如何用jquery实现闪烁文字效果
  4. python argparse举例说明
  5. 从源码分析DEARGUI之add_listbox
  6. 几种和生成网络相似的纠缠网络(接近人脑)
  7. AppDynamics把业务交易跟踪扩展到SAP环境
  8. 在vue.js中省市选择
  9. 图像编程魔法门(By C#) 目录
  10. 十八、可以输出文字了