一.Hibernate简介

下载地址:http://hibernate.org/orm/

学习地址:http://docs.jboss.org/hibernate/core/3.6/reference/zh-CN/html_single/

1.Hibernate的概述

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的ORM(即Object-Relational Mapping,它的作用就是在关系型数据库和对象之间做了一个映射。)框架,Hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。

2.Hiberanate的优缺点

优点:

(1)更加对象化

以对象化的思维操作数据库,我们只需要操作对象就可以了,开发更加对象化。

(2)移植性

因为Hibernate做了持久层的封装,你就不知道数据库,你写的所有的代码都具有可复用性。

(3)Hibernate是一个没有侵入性的框架,没有侵入性的框架我们称为轻量级框架。

对比Struts的Action和ActionForm,都需要继承,离不开Struts。Hibernate不需要继承任何类,不需要实现任何接口。这样的对象叫POJO对象。

(4)Hibernate代码测试方便。

(5)可提高效率,提高生产力。

缺点:

(1)使用数据库特性的语句,将很难调优;

(2)对大批量数据更新存在问题;

(3)系统中存在大量的攻击查询功能。

 3.Hibernate框架的组成架构

从上图中,我们可以看出Hibernate六大核心接口,两个主要配置文件,以及他们直接的关系。其中:

(1)Configuration接口:负责配置并启动Hibernate;

(2)SessionFactory接口:负责初始化Hibernate;

(3)Session接口:负责持久化对象的CRUD操作;

(4)Transaction接口:负责事务;

(5)Query接口和Criteria接口:负责执行各种数据库查询。

注意:Configuration实例是一个启动期间的对象,一旦SessionFactory创建完成它就被丢弃了。

二、简单配置使用示例

项目目录

这里我使用的一些包

hibernate.cfg.xml(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配置文件的开始 -->
<hibernate-configuration><!-- 表明以下的配置是针对session-factory配置的,SessionFactory是Hibernate中的一个类,这个类主要负责保存Hibernate的配置信息,以及对Session的操作 --><session-factory><!-- 配置数据库的驱动程序,Hibernate在连接数据库是,需要用到数据库的驱动程序 --><!-- Database connection settings --><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql://localhost:3306/hibernatestudy??useUnicode=true&amp;characterEncoding=utf8</property><property name="connection.username">root</property><property name="connection.password"></property><!-- JDBC connection pool (use the built-in) --><!-- 数据库连接池的大小 --><property name="connection.pool_size">1</property><!-- SQL dialect 只是Hibernate使用的数据库方言,就是要用hibernate连接那种类型的数据库服务器。  --><!--  <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property> --><property name="dialect">org.hibernate.dialect.MySQLDialect</property><!-- Enable Hibernate's automatic session context management --><!-- 事务的session存在当前线程 --><property name="current_session_context_class">thread</property><!-- Disable the second-level cache  --><!-- 配置使用二级缓存,此处的NoCacheProvider表示不使用二级缓存 --><property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property><!-- Echo all executed SQL to stdout --><!-- 是否在后台显示Hibernate用到的SQL语句,开发是设置为true,便于查错,程序运行时可以在Eclipse的控制台显示Hibernate的执行Sql语句。项目部署后可以设置为false,提高运行效率 --><property name="show_sql">true</property><!-- 格式化sql语句的输出,若不用,则每条sql语句会一行输出 --><property name="format_sql">true</property><!-- Drop and re-create the database schema on startup --><!-- 通过下面这句配置可自动生成数据库的结构     hbm对应实体映射文件xml,ddl数据库定义语言 --><property name="hbm2ddl.auto">update</property><!-- 指定映射文件 --><mapping resource="com/hibernatestudy/domain/Employee.hbm.xml"/></session-factory></hibernate-configuration>

Employee.java(实体类)

public class Employee {private int empId;private String empName;//...
}

Employee.hbm.xml(对应实体类的映射文件)

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.hibernatestudy.domain"><!-- 指定pojo和tb之间的映射 --><!-- schema用于区分是java中的对象还是orcl或mysql中的表,(schema="orcl"),所以一般也可不加 --><class name="Employee" table="tb_emp" ><!-- pojo属性和数据库表字段进行映射 --><!-- pojo中的主键属性id hibernate中必须配置   (数据中的主键可以不指定,但是pojo中的主键属性必须指定配置) --><id name="empId" column="empId" type="int"></id><!-- 可选属性 --><property name="empName" column="empName"></property><!-- 可选属性 type:指定java类型not-null:属性不能为空unique:记录必须唯一length:对属性的长度进行检查--><!--    <property name="name" column="name" type="string" not-null="true" length="20"></property> --></class>
</hibernate-mapping>

HibernateUtil.java(用于产生SessionFactory)

package com.hibernatestudy.util;import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;public class HibernateUtil {private static SessionFactory sf;static {//老版本的方式//buildSessionFactory是老版本的SessionFacoty生成方式,所以画了中线表示不推荐使用//sf = new Configuration().configure().buildSessionFactory();//新版本的使用方式如:Configuration config = new Configuration().configure();StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build();sf = config.buildSessionFactory(ssr);}public static SessionFactory getSessionFactory() {return sf;}
}

Test.java(测试类)

package com.hibernatestudy.test;import org.hibernate.Session;
import org.hibernate.Transaction;import com.hibernatestudy.domain.Employee;
import com.hibernatestudy.util.HibernateUtil;public class Test {public static void main(String[] args) {Session session = HibernateUtil.getSessionFactory().openSession();// select *from TB_emp where id=?Employee emp = (Employee) session.get(Employee.class, 1);System.out.println(emp);//Transaction:事务,此处开启事务,用于及时手动提交数据,避免脏数据的存在Transaction tx = session.getTransaction();tx.begin();      Employee emp2 = new Employee();emp2.setEmpId(2);;emp2.setEmpName("王五");;   //用于增加,不可用于更新session.save(emp2);//session.update(emp2);//session.delete(emp2);//saveOrUpdate() 它会去判断数据库中是否存在该id,若存在则修改,若不存在,则添加//session.saveOrUpdate(emp2);tx.commit();session.close();}}

Hibernate学习总结(一)——hibernate的简单配置使用相关推荐

  1. [原创]java WEB学习笔记80:Hibernate学习之路--- hibernate配置文件:JDBC 连接属性,C3P0 数据库连接池属性等...

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  2. maven学习--mavn安装说明和简单配置

    这一篇主要会总结maven在window上的安装,以及Eclipse安装maven插件.  会整理和贴出具体的安装步骤等!  配置大概会整理一下,方便自己查看和使用! Maven 的使用在Window ...

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

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

  4. Hibernate学习基本配置

    hibernate是一个持久层框架,是一个ORM(object,relattional mapping)对象关系映射框架,对jdbc进行了轻量级对象框架. 所谓的对象关系映射是指,一个java对象和关 ...

  5. java创建oracle序列_java学习:Hibernate学习-用oracle sequence序列生成ID的配置示例

    接 SQ_TMP_EMP 这样运行时,Hibernate就会自动从SQ_TMP_EMP中取nextval用来填充到ID字段中 示例代码: 先创建一个工具类 package app; import or ...

  6. hibernate学习——Set集合配置

    Set集合的配置 数据表的创建:表关系一个员工拥有多个身份 create table EMPLOYEE ( id INT NOT NULL auto_increment, first_name VAR ...

  7. springboot+hibernate如何简单配置多个数据源

    前言: 1,业务需求:使用原生的hibernate连接数据库,数据来源是两个数据库,并且为了后期维护,需要将数据库账号密码重hibernate.cfg.xml中抽离出来,放到properties文件中 ...

  8. Hibernate学习总结【比较与Mybatis框架之间的区别】

    经过一周的Hibernate学习,我理解了作为以JPA为核心的持久层查询标准.JPA所涉及的思想为ORM(object relational mapping),它解释了为什么我们的实体关系要和数据库一 ...

  9. Hibernate学习第一天

    Hibernate框架第一天 今天任务 1. 使用Hibernate框架完成对客户的增删改查的操作 教学导航 1. 能够说出Hibernate的执行流程 2. 能够独立使用Hibernate框架完成增 ...

  10. hibernate mysql annotation_Hibernate基于注解annotation的配置

    Annotation在框架中是越来越受欢迎了,因为annotation的配置比起XML的配置来说方便了很多,不需要大量的XML来书写,方便简单了很多,只要几个annotation的配置,就可以完成我们 ...

最新文章

  1. 开始阅读 深入理解计算机系统
  2. 什么是缓存?为什么要使用Redis?
  3. RabbitMQ和Kafka
  4. 100道JS构造函数面试题
  5. Unable to lock JVM Memory: error=12--elasticsearch
  6. Java利用stream(流)对map中的values进行过滤、排序操作
  7. mysql部署window设置分片_window配置 mysql 详细步骤
  8. Visio Professional 2016 破解教程
  9. AUTOCAD——计算面积的方法
  10. 2022年全球市场凝胶渗透色谱系统总体规模、主要生产商、主要地区、产品和应用细分研究报告
  11. addr2line的使用
  12. 【算法系列】-开根号
  13. 动态相关系数dcc_常相关系数(CCC)和动态条件相关系数(DCC)
  14. 移动硬盘上安装WIN7 WIN10系统
  15. Epub电子书的格式(二)
  16. sigmoid和softmax
  17. When Color Constancy Goes Wrong:Correcting Improperly White-Balanced Images阅读札记
  18. 空气净化器只是心理作用???
  19. Java 2 实用教程(第5版)耿祥义版 习题七
  20. Django学习之模型层---多表操作之查(一)

热门文章

  1. 数字图像处理 检测护照图像中的机器可读区域
  2. 把100PB数据迁移到阿里云,需要几步?
  3. 模版之家第三方解析下载不用开年或终身会员也能下载
  4. Maven配置pom引入本地依赖
  5. 国外天气预报接口 全球热门城市7天天气预报接口
  6. Red Hat Linux9.0操作系统安装和配置入门
  7. 苹果手机有护眼模式吗_调节明暗度等于手机护眼模式?看完真懂了
  8. webpack学习小项目
  9. H5移动端出生日期插件
  10. mysql chinanet外网连接不上_笔记本电脑无法连接到ChinaNet无线网络怎么解决?