搭建环境

1、创建普通的Java工程

2、添加相应的jar包,下载链接:https://files.cnblogs.com/files/AmyZheng/required.rar

第一个实例

1、引用jar包

2、创建数据库和表

DROP TABLE IF EXISTS t_customer ;CREATE TABLE t_customer (id  INT(5) PRIMARY KEY ,email  VARCHAR(60)  UNIQUE NOT NULL,password VARCHAR(32) NOT NULL ,nickname VARCHAR(150) ,gender VARCHAR(3) ,birthdate DATE ,married     CHAR(1)
);

3、创建一个Customer类

package ecut.orm.entity;import java.util.Date;/*** source命令加上 .sql的完整路径导入来创建表* 实体类 Customer <================> 数据库表: t_customer*            属性            <================>        列*        id                 <================>       id*        emial             <================>         email*        password     <================>         password*        nickname         <================>         nickname*        gender         <================>         gender*        birthdate     <================>         birthdate*        married         <================>         married*        *        从对象到关系型数据库之间的映射(对应关系) object relation mapping*   new Customer();         <==========>    一条记录 (关系)*   *   hibernate作用 :把对象存入数据库变成记录或者从数据库查询一条记录包装成一对象个(orm框架)*   */
public class Customer {// 对象标识符 ( Object Identifier,id的值是对象标识符 ) 属性 ( 对应数据库主键 )private Integer id;private String email;private String password;private String nickname;private char gender;private Date birthdate;private boolean married;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getNickname() {return nickname;}public void setNickname(String nickname) {this.nickname = nickname;}public char getGender() {return gender;}public void setGender(char gender) {this.gender = gender;}public Date getBirthdate() {return birthdate;}public void setBirthdate(Date birthdate) {this.birthdate = birthdate;}public boolean isMarried() {return married;}public void setMarried(boolean married) {this.married = married;}}

我们接下来要做的事情就是实现表和实体类中的映射,即类中属性要和表中的列相对应, hibernate的作用就是把对象存入数据库变成记录或者从数据库查询一条记录包装成一对象个(object relational mapping框架)。

4、编写映射文件(以hbm.xml为后缀)

首先将jar中的dtd文件保存在本地,依据hibernate-core-5.2.10.Final.jar中的/org/hibernate/hibernate-mapping-3.0.dtd编写Customer.hbm.xml

让Eclipse支持映射文件的智能提示,将dtd文件复制到容易查找的目录下,在Eclipse的导航选择Widow下的preferences,选择如下目录

点击Add,显示如下页面,Key Type选择URI

Location 选择dtd文件所在路径,Key填http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd

根据dtd文件的提示编写配置文件如下:

<?xml version="1.0" encoding="UTF-8"?><!-- 映射文件告诉hibernate列与属性的对应关系  --><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping><!-- 指定 那个类 ( name 指定类名 ) 对应 那个表 ( table 指定表名 ) --><class name="ecut.orm.entity.Customer" table="t_customer"><!-- 对于 与 数据库主键 对应的 对象标识符属性 来说,要单独使用 id 标签来映射 <id name="id" type="java.lang.Integer" column="id" >即使不指定完整类名也可以通过id的类型反射来确定<id name="id" type="int" column="id" >--><id name="id" type="integer" column="id" ><generator class="increment" /> <!-- 由 hibernate 提供的 对象标识符 生成策略 --></id><!-- 指定 那个属性 ( name 指定属性名 )  对应 那个列 ( column 属性指定 列名 ) --><property name="email" type="string" column="email" /><!-- 使用 type 属性指定 映射类型 ( 既不是 Java 类型,也不是 数据库类型,而是 中间类型 ( 媒婆 ) ) --><property name="password" type="string" column="password" /><property name="nickname" type="string" column="nickname" /><!-- Java 中的 char 类型在 hibernate 中对应的映射类型是 character --><property name="gender" type="character" column="gender" /><property name="birthdate" type="date"  column="birthdate" /><!-- Java 中的 boolean  类型在 hibernate 中对应的映射类型可以是 true_false 、yes_no(true就存y,fals 存y),bit(存0,1)--><property name="married" type="yes_no" column="married" /></class></hibernate-mapping>

class标签内必须要有id标签,要使用 id 标签来单独映射与 数据库主键 对应的 对象标识符属性,使用property标签中通过指定name和column使数据库中的列和类中的属性相关联,且需要使用 type 属性指定 映射类型 ( 既不是 Java 类型,也不是 数据库类型,而是 中间类型 )。

5、创建Hibernate的配置文件hibernate.cfg.xml(以cfg.xml为后缀)

首先将jar中的dtd文件保存在本地,依据hibernate-core-5.2.10.Final.jar中的/org/hibernate/hibernate-configuration-3.0.dtd编写hibernate.cfg.xml

根据上面映射文件一样的方式,让Eclipse支持struts.xml的智能提示,并编写配置文件如下:

<?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-configuration><session-factory><!-- 指定连接数据库的基本信息 --><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><!-- & 符号需要转义 为&amp; --><property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF8</property><property name="hibernate.connection.username">root</property><property name="hibernate.connection.password">123456</property><!--  通用性的工具,对所有的数据库都是通用的,所以还需要根据所用数据库的类型指定数据方言类(在hibernate core 包中的dialect中)--><property name="dialect">org.hibernate.dialect.MySQLDialect</property><!-- 指示是否显示 执行过的 SQL 语句 --><property name="show_sql">true</property><!-- 指示是否对 SQL 语句进行格式化输出 --><property name="format_sql">true</property><!--导入映射文件  --><mapping resource="ecut/orm/entity/Customer.hbm.xml"/></session-factory></hibernate-configuration>

在hibernate配置文件配置数据库相关信息,并指定数据方言,最重要要的是导入映射文件。

6、编写测试类

DML语句的测试案例:

package ecut.orm.test;import java.io.Serializable;
import java.util.Date;import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;import ecut.orm.entity.Customer;public class TestSaveCustomer {public static void main(String[] args) {// 对象 <======>  记录Customer c = new Customer();// c.setId( 100 ); // 不要指定 对象标识符 ,而是期望由 Hibernate 维护c.setEmail( "sanfeng@qq.com" );c.setPassword( "hello2017" );Date birthdate = null ;c.setBirthdate( birthdate );c.setGender( '男' );c.setNickname( "君宝" );c.setMarried( false );// 创建一个 Configuration 对象,用来读取配置文件 ( 默认位置、默认名称 )Configuration config = new Configuration();// 读取配置文件config.configure("ecut/orm/hibernate.cfg.xml");//config.configure(); // 读取 默认位置 ( 当前 classpath ) 的 默认名称 ( hibernate.cfg.xml ) 的配置文件// 使用 Configuration 创建 SessionFactorySessionFactory factory = config.buildSessionFactory();// 创建 Session 对象 ( 这里的 Session 是 Java 程序 跟 数据库 之间的 会话 )Session session = factory.openSession();System.out.println( session );// 如果执行的是 DML 语句,则需要 开启事务session.getTransaction().begin();// 保存指定的对象 到数据库中Serializable s = session.save( c ); // DML(数据操纵语言) : insert 、update 、delete System.out.println( "返回 : " + s );// 如果执行的是 DML 语句,则需要 提交事务session.getTransaction().commit();session.close();factory.close();}}

通过Configuration类读取配置文件hibernate.cfg.xml,再通过这个Configuration 对象创建 SessionFactory,再创建 Session 对象 ( 这里的 Session 是 Java 程序 跟 数据库 之间的 会话 ),通过这个session对象完成数据库操作。如果执行的是DML语句还需要开启事务。

查询的测试案例:

package ecut.orm.test;import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;import ecut.orm.entity.Customer;
public class TestGetCustomer {public static void main(String[] args) {// 创建一个 Configuration 对象,用来读取配置文件 ( 默认位置、默认名称 )Configuration config = new Configuration();// 读取配置文件config.configure("ecut/orm/hibernate.cfg.xml");//config.configure(); // 读取 默认位置 ( 当前 classpath ) 的 默认名称 ( hibernate.cfg.xml ) 的配置文件// 使用 Configuration 创建 SessionFactorySessionFactory factory = config.buildSessionFactory();// 创建 Session 对象 ( 这里的 Session 是 Java 程序 跟 数据库 之间的 会话 )Session session = factory.openSession();System.out.println( session );Customer c  = session.get( Customer.class ,  2 );System.out.println( c.getEmail() );session.close();factory.close();}}

转载请于明显处标明出处:

https://www.cnblogs.com/AmyZheng/p/9300838.html

Hibernate学习(一)相关推荐

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

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

  2. hibernate学习笔记二

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

  3. hibernate学习和各种关系总结

    2019独角兽企业重金招聘Python工程师标准>>> 原文地址 http://yifanxiang.blog.163.com/blog/static/500008342010527 ...

  4. Hibernate学习之Hibernate注解总结

    Hibernate学习之Hibernate注解总结http://www.bieryun.com/3269.html 一.类级别的注解 @Entity name:表的名字(可选)一般表名和类名相同 必须 ...

  5. hibernate 学习之——hql 语句

    hibernate 学习之--hql 语句 hibernatre hql 语句:是对于hibernate的orm模式的一种类似于JDBC语句的面对对象的操作语句 特点 : 1.对于类名属性名区分大小写 ...

  6. hibernate学习笔记(总结)

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

  7. Hibernate 学习心得1: 多对多关系中,中间表无法插入数据。

    Hibernate 学习心得之一 多对多关系中,中间表无法插入数据. 最近学习 spring4+hibernate4,学习中遇到了很多坑. 在这里我来说说我遇到的坑,这里就不介绍如何spring如何集 ...

  8. 马士兵Hibernate学习笔记

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

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

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

  10. Hibernate学习(九)———— 二级缓存和事务级别详讲

    序言 这算是hibernate的最后一篇文章了,下一系列会讲解Struts2的东西,然后说完Struts2,在到Spring,然后在写一个SSH如何整合的案例.之后就会在去讲SSM,在之后我自己的个人 ...

最新文章

  1. JavaScript学习笔记(6)BOM(浏览器对象模型)pc网页特效(停止学习)
  2. 在Ubuntu18.04系统下彻底删除MySQL的方法
  3. samba 端口_无需公网IP,易有云支持SAMBA远程连接家里设备
  4. h5配合css和js如何自定义单选框
  5. linux如何更改ssh配置文件,Linux系统下ssh的相关配置详细解析
  6. go-callvis:Go调用关系图(call graph)
  7. TCP的带宽估计和丢包恢复
  8. springboot交通事故档案管理系统答辩PPT免费下载
  9. 第15条:使可变性最小化
  10. 在ubuntu 上安装pycharm
  11. cmd无法运行python_为什么CMD无法运行python程序
  12. 如何学习Vim(转)
  13. Week 10 homework
  14. 宠物网页代码 html静态网页设计制作 dw静态网页成品模板素材网页 web前端网页设计与制作 div静态网页设计
  15. postgresql10中的pg_stat_statements
  16. 面试官问你什么是单点登录,把这篇甩给他!
  17. 手机CMWAP上网设置(完全版)
  18. P2P行业大数据征信前瞻
  19. 《恋爱厚黑学》杨冰阳
  20. 【数据结构功法】第2话 · 一篇文章带你彻底吃透·算法复杂度

热门文章

  1. 碗碗腔《杨贵妃》、青春版秦腔《杨门女将》在上海舞台上演
  2. 2022-2028年中国LED灯珠行业竞争格局分析及投资发展研究报告
  3. 三参数坐标转换matlab,Coordinate-conversion
  4. Security注解:@PreAuthorize,@PostAuthorize, @Secured, EL实现方法安全
  5. 时代不同了,CPU至少要4核了
  6. 博客设置中 html,博客大巴Blog设置 -如何在自定义Html中添加背景音乐?
  7. 全球与中国废电池回收市场现状及未来发展趋势2022
  8. 谷歌收购摩托罗拉,这消息太重磅了
  9. SVM ValueError: y should be a 1d array, got an array of shape (1, 250) instead. Found input variable
  10. 白嫖freenom免费顶级域名