这篇博客是hibernate学习的第一篇,主要简单介绍hibernate框架,之后简单说一下hibernate的目录结构,最后写一个简单的hibernate实例。通过这三步来简单的认识一下hibernate。

废话不多说,步入正题。首先简单介绍一下hibernate框架,它是一种基于JDBC的主流持久化框架,是一个优秀的orm实现;它对JDBC进行了轻量级的封装,大大简化了数据访问层繁杂的重复代码;而且它利用了java反射机制来实现程序的透明性;它的本意是从对象出发而非关系数据库出发,这一点也就是说明它是以面向对象思维解决数据库的操作问题。

以上是从概念上说的hibernate,下面来看一下hibernate目录结构:

这就是解压出来的hibernate的目录文件,在这里面doc目录为文档,lib目录为所用的库文件,src为hibernate源代码,hibernate3.jar为打包后的字节码文件。另外一些随后博客遇到再介绍。

这里要说的学习hibernate框架始终和3个比较重要的文件打交道,即hibernate本身的配置文件hibernate.cfg.xml文件,这个文件用来配置hibernate自身属性,数据库驱动、数据库连接和数据库方言;另外一个是对象关系映射配置文件,如UserInfo.hbm.xml。此文件负责实体对象到关系数据库映射。最后一个就是我们常见的持久化类了,也就是对象现实中的实体。

有了上面的基础,我们来一步一步的实现一个hibernate实例。

1.      在eclipse中配置hibernate环境:

我们首先建立一个项目,名叫hibernate_first,之后自定义个存放jar包的库,就取名为UserLibrary;导入相关的包,这些包包括相应数据库驱动、hibernate目录下lib文件夹下的jar包,还有hibernate目录下的hibernate3.jar。

2.      导入hibernate.cfg.xml,并且配置数据库连接:

将hibernate目录下的hibernate.cfg.xml文件导入项目的src目录下,之后配置数据库连接信息,我们这个实例选取的是用Mysql作为数据库,所以我们就要在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/User</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">123</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> </session-factory> </hibernate-configuration>

3.      建立实体类User.java

import java.util.Date; public class User { private String id; private String name; private String password; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }

4.      提供User.hbm.xml文件,完成实体类的映射(编写对象关系映射文件,把对象关系映射的逻辑放在此处,这个文件包括表和字段的对象关系,当操作对象时,该文件通过java反射机制产生的方法,会把对象的方法转为关系的方法)

<?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.cjq.hibernate.User"> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="password"/> </class> </hibernate-mapping>

这里完成实体类映射的时候数据就要建立了,建立数据库一定要和配置文件中的相符合。

5.      将User.hbm.xml文件加入到hibernate.cfg.xml文件中

<mapping resource="com/cjq/hibernate/User.hbm.xml"/>

6.      编写运行测试类

import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateTest { public static void main(String[] args) { //读取hibernate.cfg.xml文件 Configuration cfg = new Configuration().configure(); //建立SessionFactory SessionFactory factory = cfg.buildSessionFactory(); //取得session Session session = null; try { session = factory.openSession(); //开启事务 session.beginTransaction(); User user = new User(); user.setName("张三"); user.setPassword("123"); //保存User对象 session.save(user); User u1=(User)session.load(User.class, new String("402881e4361533e901361533eb920001")); System.out.print("从数据库加载数据的用户名为"+u1.getPassword()); //提交事务 session.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); //回滚事务 session.getTransaction().rollback(); }finally { if (session != null) { if (session.isOpen()) { //关闭session session.close(); } } } } }

7.      建议

最好加入如下配置项,方便观察hibernate sql的生成:

<propertyname="hibernate.show_sql">true</property> <propertyname="hibernate.format_sql">true</property>

最好加入log4j配置文件,将该配置文件拷贝到src下,便于程序的调试。

8.      结果

通过一些概念和目录还有实例实现,现在对hibernate有所了解,下面的博客要对JDBC和反射机制做一些简单的介绍,这些知识是hibernate框架的基础,所以有必要在深入学习hibernate框架之前介绍一下。敬请期待!!!

转载于:https://www.cnblogs.com/springmvc-hibernate/archive/2012/03/15/2483901.html

深入浅出学习Hibernate框架(一):从实例入手初识Hibernate框架相关推荐

  1. OpenHarmony#深入浅出学习eTs#(五)eTs语言初识

    本项目Gitee仓地址:深入浅出eTs学习: 带大家深入浅出学习eTs (gitee.com) 一.eTs介绍 概述 基于TS扩展的声明式开发范式的方舟开发框架是一套开发极简.高性能.跨设备应用的UI ...

  2. Python爬虫之Scrapy框架系列(1)——初识Scrapy框架【安装+简介+运行流程+组件介绍】

    目录: 1.Scrapy模块安装 2.Scrapy框架简介 2.1 Scrapy是个啥? 2.2 我们为啥要用这玩意呢? 3.运行流程 3.1 引入: 3.2 进入正题: 3.3 数据流: 3.4 中 ...

  3. 深入浅出学习Hibernate框架(二):JDBC基础操作

    上篇博客<深入浅出学习Hibernate框架(一):从实例入手初识Hibernate框架>简单介绍了一下Hibernate框架,并且举了一个实例来了解Hibernate.这篇博客将介绍JD ...

  4. java oval 使用_java开源验证框架OVAL应用实例

    java开源验证框架OVAL应用实例 对oval验证框架进行分类,并针对常用的验证规则进行总结,从而可以抽象成模型可以定义,达到定义后自动生成,减少开发人员的工作量,同时也规范化代码结构. 1.  验 ...

  5. 从实例入手学习Shiro自定义Realm实现查询数据进行验证

    场景 从实例入手学习Shiro与Web的整合: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/90140802 在上面已经实现整合 ...

  6. 从实例入手学习Shiro的会话机制

    场景 从实例入手学习Shiro与Web的整合: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/90140802 在上面已经实现整合 ...

  7. struts2深入浅出(备java基础,javaweb,javaee,框架)-任亮-专题视频课程

    struts2深入浅出(备java基础,javaweb,javaee,框架)-12310人已学习 课程介绍         Struts2框架介绍.工作原理与架构分析.6大配置文件分析使用通配符定义a ...

  8. 实例入手vue-router重定向

    场景 当一进来某一个APP,想让其显示某个页面,所以需要在index.vue使用重定向使其重定向到初始页面. 效果 前文 从实例入手学习Vue-router的使用-实现音乐导航菜单切换 https:/ ...

  9. 学习socket nio 之 mina实例

    1:mina之浅谈 mina是apache基于socket nio的一套框架,可以从apache官网下载jar包和源码.试用起来非常方便,也非常强大.如果对socket nio还不是很了解的话:请看一 ...

最新文章

  1. 逆生长!小鼠「逆龄疗法」登Nature子刊,有望用于人类
  2. 存储过程—导出table数据为inser sqlt语句
  3. ESP系列AT指令开发笔记
  4. 查找数据挖掘的相关资料
  5. k8s-16-k8s基础存储
  6. 有关数组的运算 (sizeof)(strlen)
  7. 4种方法让SpringMVC接收多个对象(转:http://blog.csdn.net/lutinghuan/article/details/46820023)
  8. python专业名词_python 术语
  9. python json模块 超级详解
  10. c语言输入与输出库函数#includestdio.h
  11. linux 统计目录大小并按大小排序
  12. 面试官系统精讲Java源码及大厂真题 - 25 整体设计:队列设计思想、工作中使用场景
  13. 2017北理计算机考研复试线,北京理工大学2017年硕士研究生复试分数线
  14. POJ 1154题解,此题不难理解方法就是DFS,属于水题。不过有一些细节要注意。...
  15. go语言项目目录文件的管理样式
  16. python_mysql
  17. w3cschool菜鸟教程php,JS实例学习笔记——w3cschool+菜鸟教程
  18. VOC2007数据集的下载和解压
  19. 各自然带代表植被_自然带气候植被关系
  20. MongoDB应用场景及选型(海量数据存储选型)

热门文章

  1. (C++)函数参数传递中的一级指针和二级指针
  2. 对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符
  3. mysql中ifnull和hive中if函数的转换
  4. Akka框架——第一节:并发编程简介
  5. Elasticsearch Mapping 详解
  6. spring-boot配置readonly
  7. Maven plugins和pluginManagement的区别概述
  8. Java内存使用情况查看工具
  9. 2.6.21相比2.4.18内核机制变更
  10. 对话框Dialog总结(转)