一 . Hibernate的简介

  提到hibernate,首先的说说ORM框架技术(Object、Relation、Mapping),它的主要问题就是对象-关系的映射,怎么说呢?现在用的数据库大多数都是关系数据库,而关系数据库重在于表与表之间的关系连接。术语就为:一个持久化类和一个表对应,类的每个实例对应表的一条记录。其他就不说了,回到hibernate。ORM框架类型有很多,hibernate就是其中的一种,还有EJB框架(Enterprise javaBean)、iBATIS框架、TopLink框架等。

  1. 对象持久化 

    狭义的理解,“持久化”仅仅指把对象永久保存到数据库中
    广义的理解,“持久化”包括和数据库相关的各种操作:
        保存:把对象永久保存到数据库中。
        更新:更新数据库中对象(记录)的状态。
        删除:从数据库中删除一个对象。
        查询:根据特定的查询条件,把符合查询条件的一个或多个对象从数据库加载到内存中。
        加载:根据特定的OID,把一个对象从数据库加载到内存中。

   2.ORM的介绍 

    ORM(Object/Relation Mapping): 对象/关系映射
    ORM 主要解决对象-关系的映射

    

    ORM的思想:将关系数据库中表中的记录映射成为对象,以对象的形式展现,程序员可以把对数据库的操作转化为对对象的操作。
    ORM 采用元数据来描述对象-关系映射细节, 元数据通常采用 XML 格式, 并且存放在专门的对象-关系映射文件中

  3.Hibernate与MyBatis的对比

    Hibernate:
      非常优秀、成熟的 ORM 框架。
      完成对象的持久化操作
      Hibernate 允许开发者采用面向对象的方式来操作关系数据库。
      消除那些针对特定数据库厂商的 SQL 代码

    myBatis:
      相比 Hibernate 灵活高,运行速度快
      开发速度慢,不支持纯粹的面向对象操作,需熟悉sql语句,并且熟练使用sql语句优化功能

  4.Hibernate的简单开发

    4.1 使用myEclipse创建Maven项目

    4.2 因为使用maver项目,所以只需在项目的pom.xml文件中进行如下配置,会自动下载jar包,配置如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>MyHibernate</groupId><artifactId>MyHibernate</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><name/><description/><dependencies><dependency><groupId>org.apache.openejb</groupId><artifactId>javaee-api</artifactId><version>5.0-1</version><scope>provided</scope></dependency><dependency><groupId>javax.faces</groupId><artifactId>jsf-api</artifactId><version>1.2_04</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.1</version><scope>provided</scope></dependency><dependency><groupId>javax.faces</groupId><artifactId>jsf-impl</artifactId><version>1.2_04</version><scope>provided</scope></dependency><!-- 此次导入Hiberante所需的jar包,此处导入核心jar包,所有关于hiberante的jar包都会导入 --><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>4.2.20.Final</version></dependency><!-- 引入本地的jdbc的jar包 --><dependency><groupId>oracle</groupId><artifactId>oracle</artifactId><version>1.2.17</version><scope>system</scope><systemPath>C:\app\Administrator\product\11.2.0\dbhome_1\jdbc\lib\ojdbc6.jar</systemPath></dependency></dependencies><build><sourceDirectory>${basedir}/src</sourceDirectory><outputDirectory>${basedir}/WebRoot/WEB-INF/classes</outputDirectory><resources><resource><directory>${basedir}/src</directory><excludes><exclude>**/*.java</exclude></excludes></resource></resources><plugins><plugin><artifactId>maven-war-plugin</artifactId><configuration><webappDirectory>${basedir}/WebRoot</webappDirectory><warSourceDirectory>${basedir}/WebRoot</warSourceDirectory></configuration></plugin><plugin><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.5</source><target>1.5</target></configuration></plugin></plugins></build>
</project>

  4.3 . 在src目录下创建HIberante的配置文件hibernate.cfg.xml

      hibernate,cfg.xml文件的生成:随便创建一个java Web项目,创建成功后,选中项目,鼠标点击右键,选择MyEclipse选项,---->选择Add Hibernate Annoatitio

    

    取消所有勾选选项,点击Next---->会出现下面的窗口

     

  鼠标点击Next继续,会弹出下列窗口:

    

    鼠标点击Next继续,会弹出如下窗口:

    

    鼠标点击Finish完成,完成后将生成的Configaction,cfg.xml文件拷入所需要的项目下,即可使用。

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration><!-- 配置sessionFactory,表示获取连接,包含连接的四要素 注:hibernate 连接的四要素中的名字不能更改,必须是以下的名字--><session-factory><!--方言   告诉hibernate,连接的是oracle数据库     --><property name="dialect">org.hibernate.dialect.Oracle9Dialect</property><property name="connection.url">jdbc:oracle:thin:local:1521:orcl</property><property name="connection.username">scott</property><property name="connection.password">tiger</property><property name="connection.driver_class">oracle.jdbc.OracleDriver</property><!-- 此标签用于是否在控制台输出sql语句  此处ture表示输出 --><property name="show_sql">ture</property><!--此标签表示引入hiberante的映射文件 --><mapping resource="cn/et/hibernate/lesson01/Emp.hbm.xml"/></session-factory></hibernate-configuration>

  4.4 创建Emp对象类

     

package cn.et.hibernate.lesson01;import java.util.Date;/*** Emp entity. @author MyEclipse Persistence Tools*/public class Emp implements java.io.Serializable {// Fieldsprivate Short empno;private String ename;private String job;private Short mgr;private Date hiredate;private Double sal;private Double comm;private Short deptno;// Constructors/** default constructor */public Emp() {}/** full constructor */public Emp(String ename, String job, Short mgr, Date hiredate, Double sal,Double comm, Short deptno) {this.ename = ename;this.job = job;this.mgr = mgr;this.hiredate = hiredate;this.sal = sal;this.comm = comm;this.deptno = deptno;}// Property accessorspublic Short getEmpno() {return this.empno;}public void setEmpno(Short empno) {this.empno = empno;}public String getEname() {return this.ename;}public void setEname(String ename) {this.ename = ename;}public String getJob() {return this.job;}public void setJob(String job) {this.job = job;}public Short getMgr() {return this.mgr;}public void setMgr(Short mgr) {this.mgr = mgr;}public Date getHiredate() {return this.hiredate;}public void setHiredate(Date hiredate) {this.hiredate = hiredate;}public Double getSal() {return this.sal;}public void setSal(Double sal) {this.sal = sal;}public Double getComm() {return this.comm;}public void setComm(Double comm) {this.comm = comm;}public Short getDeptno() {return this.deptno;}public void setDeptno(Short deptno) {this.deptno = deptno;}}

 

  4.5 创建Hibernate的映射文件

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping><class name="cn.et.hibernate.lesson01.Emp" table="EMP" schema="SCOTT"><id name="empno" type="java.lang.Short"><column name="EMPNO"/><generator class="native" /></id><property name="ename" type="java.lang.String"><column name="ENAME"><comment>员工姓名</comment></column></property><property name="job" type="java.lang.String"><column name="JOB"><comment>员工职位</comment></column></property><property name="mgr" type="java.lang.Short"><column name="MGR"><comment>领导编号</comment></column></property><property name="hiredate" type="java.util.Date"><column name="HIREDATE"><comment>雇佣日期</comment></column></property><property name="sal" type="java.lang.Double"><column name="SAL"><comment>月薪</comment></column></property><property name="comm" type="java.lang.Double"><column name="COMM"><comment>奖金</comment></column></property><property name="deptno" type="java.lang.Short"><column name="DEPTNO"><comment>所属部门编号</comment></column></property></class>
</hibernate-mapping>

  4.6 定义测试类,测试通过Hiberante对数据库的增删改查操作

package cn.et.hibernate.lesson01;import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;public class TestHibernate {//表示增加
    @Testpublic void test1(){//创建sessionFactorySessionFactory sf = new Configuration().configure("/cn/et/hibernate/lesson01/hibernate.cfg.xml").buildSessionFactory();Session session = sf.openSession();//开启一个事物Transaction  t = session.beginTransaction();Emp emp = new Emp();emp.setEmpno(Short.parseShort("7903"));emp.setEname("aaa");session.save(emp);
//        t.commit();
    }@Testpublic void testdelete(){//创建sessionFactorySessionFactory sf = new Configuration().configure("/cn/et/hibernate/lesson01/hibernate.cfg.xml").buildSessionFactory();Session session = sf.openSession();//开启一个事物Transaction  t = session.beginTransaction();Emp emp = new Emp();//表示获取该对象属性关联属性emp.setEmpno(Short.parseShort("7905"));//调用删除的方法
        session.delete(emp);//事物的提交
        t.commit();}@Testpublic void testupdate(){//创建sessionFactorySessionFactory sf = new Configuration().configure("/cn/et/hibernate/lesson01/hibernate.cfg.xml").buildSessionFactory();Session session = sf.openSession();//开启一个事物Transaction  t = session.beginTransaction();//此处要是不查询,会将表内其他数据修改,所以先要进行查询,将查询返回的对象进行修改Emp emp = (Emp) session.get(Emp.class, Short.parseShort("7904"));emp.setEname("abcde");t.commit();}
}

  以上为Hibernate的简单的对数据库的增删改查的操作

转载于:https://www.cnblogs.com/xushirong/p/7051019.html

Hibernate学习笔记相关推荐

  1. hibernate学习笔记二

    上一篇关于hibernate学习笔记一,主要是作为hibernate的入门知识.没有和spring发生任何关系,这一篇我将把spring集成进去,看spring如何管理hibernate,还有和未使用 ...

  2. hibernate学习笔记(总结)

    hibernate学习笔记 课程内容 6 1 HelloWorld 6 2 Hibernate原理模拟-什么是O/R Mapping以及为什么要有O/R Mapping 6 3 常见的0/R框架(了解 ...

  3. 马士兵Hibernate学习笔记

    马士兵hibernate学习笔记 课程内容 6课程内容 1 HelloWorld 6 2 Hibernate原理模拟-什么是O/R Mapping以及为什么要有O/R Mapping 6 3 常见的0 ...

  4. Hibernate学习笔记Session.evict(user)方法

    @[TOC]Hibernate学习笔记Session.evict(user)方法 Hibernate学习笔记Session.evict(user)方法 首先我们要明白Session.flush(use ...

  5. Hibernate学习笔记(一)----针对不同的数据库不同的配置

    Hibernate初学笔记 l Hibernate初步配置: 1 新建项目 2 学习建立user-library-hibernate,并加入相应的jar包(hibernate核心jar包,lib下的所 ...

  6. Hibernate 学习笔记

    学生时代就这样玩完了,哈哈.. 不过学习却是还要继续.. 就这样发发牢骚吧..... 1.hibernate未毕业之时也曾看过,具体看到哪儿也全忘了,笔记也因为重装系统丢了,索性毕业就记在这儿吧. 首 ...

  7. hibernate 学习笔记1

    今天开始学习hibernate,碰到的几个问题在这里记录一下. 1>导入hibernate5.2.10的hibernate-release-5.2.10.Final\hibernate-rele ...

  8. Hibernate学习笔记(二)

    Hibernate概述: 什么是Hibernate:是一个持久层的ORM的框架 什么是ORM: ORM:对象关系映射,指的是将一个java中的对象与关系型数据库中的表建立一种映射关系,从而操作对象就可 ...

  9. Hibernate学习笔记(一)

    ####1.1Hibernate框架的学习路线 第一天:Hibernate的入门(Hibernate的环境搭建.Hibernate的API.Hibernate的CRUD) 第二天:Hibernat ...

  10. Hibernate学习笔记_查询

    HQL vs EJBQL 1         NativeSQL >HQL.> EJBQL(JPQL 1.0) > QBC(Query By Criteria) > QBE(Q ...

最新文章

  1. 哈佛终身教授:年轻人如何做科研?
  2. python函数(三)
  3. apache 虚拟主机如何配置
  4. Java基础知识强化之IO流笔记13:递归之不死神兔问题(斐波那契数列)
  5. SpringSecurity + JWT,从入门到精通!
  6. 三星Galaxy Note 10顶配版现身:陶瓷材质+12GB内存
  7. scala编程第16章学习笔记(3)——List类的高阶方法
  8. 高通9008固件下载备份工具
  9. Ocr答题辅助神器 OcrAnswerer4.x,通过百度OCR识别手机文字,支持屏幕窗口截图和ADB安卓截图,支持四十个直播App,可保存题库...
  10. matlab二极管伏安特性,基于Matlab对Spice二极管特性受温度影响的研究
  11. Centos7+DockerCompose部署.NetCore3.1应用
  12. 【Android Studio】一款简易appUI界面开发(2)
  13. 当生命科学遇上AI,会产生怎样1+1>2的效果?
  14. Audio Format
  15. 游戏测评浅浅试—MMO手游太古神王2测评
  16. 人工智能专业就业方向有哪些?
  17. [BZOJ5197] [CERC2017]Gambling Guide
  18. 计算鬼成像学习笔记二:二阶关联函数探究
  19. java 下载加速_一种基于Java的大文件下载加速方法与流程
  20. layuiAdmin框架iframe版本个人总结

热门文章

  1. C++ 继承Employee类
  2. __attribute__ 总结
  3. js获取当前Frame在父页面中的id
  4. HashMap负载因子
  5. 虚幻4 远处的贴图模糊处理
  6. source insight 添加行号
  7. css实现图片自适应容器的几种方式
  8. Python基本数据类型之整型
  9. Python 类的属性与实例属性
  10. 配置CITRIX XML 服务与IIS 7.x共享端口