>>分享JPA、Hibernate、Mybatis对象持久化技术,对《精通JPA与Hibernate:Java对象持久化详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 23695 个阅读者 刷新本主题
 * 贴子主题:  Hibernate5入门教程 回复文章 点赞(0)  收藏  
作者:Jacky    发表时间:2018-11-21 05:20:46     消息  查看  搜索  好友  邮件  复制  引用

Hello,大家好,本篇文章描述Hibernate5的基本使用。

使用环境:

1、Hibernate5.2.10
2、Eclipse neon3
3、jdk1.8
4、MySQL5.7

总所周知,在开发中我们会使用一些持久层框架,而Hibernate则是相当不错一个。在使用Hibernate之前,我们应该知道ORM框架,那么什么是ORM呢?
ORM:对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping)是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。其实就是将关系和对象通过映射文件进行联系。我们在程序中只需要操作对象即可操作对应的数据库表的数据。
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。是ORM的一种实现。

注意:POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans

我们在使用之前应该先去下载Hibernate的jar包
www.hibernate.org

首先我们来介绍下基本的使用步骤:

1、导入jar包

将XXX\Hibernate\hibernate-release-5.2.10.Final\hibernate-release-5.2.10.Final\lib\required中的jar包和对应数据库的驱动jar包加载导向项目中

2、写全局配置

创建hibernate.cfg.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的配置信息 -->
<hibernate-configuration>
    <!--配置工厂信息,全局信息 -->
    <session-factory>
        <!--1、设置四本一言  -->
        <!--四本一言 四大基本项: 1、驱动类名 2、指明需要连接的url 3、用户名 4、密码 Hibernate支持不同的数据库,但是每种数据库语法可能有区别,可以使用方言,注意版本 -->
        <!--数据库驱动类全称  -->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <!--数据库url地址  -->
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_db?characterEncoding=UTF-8</property>
        <!--用户名  -->
        <property name="hibernate.connection.username">lx</property>
        <!--密码  -->
        <property name="hibernate.connection.password">lx</property>
        <!--方言 -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
        <!--2、全局配置信息  -->
        <!--执行DDL的类别:
        create:每次都删除新建
        update:存在就修改,不存在就新建  -->
        <property name="hibernate.hbm2ddl.auto">update</property>
        <!--是否显示SQL语句  -->
        <property name="hibernate.show_sql">true</property>
        <!--是否格式化SQL语句  -->
        <property name="hibernate.format_sql">true</property>
        <!-- 启用getCurrentSession,默认未启用 -->
        <property name="hibernate.current_session_context_class">thread</property>
        <!--3、加载配置文件  -->
        <!--基于xml映射文件: 映射文件加载。路径 -->
        <mapping resource="cn/code404/domain/User.hbm.xml"></mapping>
    </session-factory>
</hibernate-configuration>

3、创建类–也就是表

public class User {
    private int id;
    private String name;
    private String pass;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPass() {
        return pass;
    }
    public void setPass(String pass) {
        this.pass = pass;
    }
    public User(String name, String pass) {
        super();
        this.name = name;
        this.pass = pass;
    }
    public User() {
        super();
    }  
}

4、类-表的映射文件

<?xml version="1.0" encoding="UTF-8"?>
<!--文档说明,设置映射文件  -->
<!DOCTYPE hibernate-mapping
        SYSTEM
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" >
<!--映射标签
package:内部类的所在的包名 -->
<hibernate-mapping package="cn.code404.domain">
    <!--需要设置的映射类:设置该类对应的表  -->
    <!--属性:
    name:类名
    table:表名  -->
    <class name="User" table="tb_user">
    <!--id:主键,name:属性名称,column:字段名称  -->
        <id name="id" column="id">
            <!--generator:主键生成策略
            class:标记主键如何生成
            取值:
            1、native:自动增长,会根据当前的数据库自动切换
            2、identity:mySQL的自增策略
            3、sequence:Oracle的自增标记
            4、uuid:32位字符串
            5、assigned:自定义字符串
            6、foreign:外键
            7、increment:自己维护自增关系
              -->
            <generator class="native"/>
        </id>
        <!--配置属性对应的字段  -->
        <property name="name" length="16" column="username"/>
        <property name="pass" length="32"/>  
    </class>
</hibernate-mapping>

5、将映射文件配置到全局配置中

<mapping resource="cn/code404/domain/User.hbm.xml"></mapping>

6、使用Hibernate

1.加载配置文件

Configuration configuration = new Configuration().configure();

2.创建Session工厂

SessionFactory factory = configuration.buildSessionFactory();

3.创建Session对象

Session session = factory.openSession();

4.操作数据

System.out.println(session.save(new User("测试", "666666")));

5.关闭,释放资源

session.close();

以下是完整的单元测试代码:

// 基本使用
    @Test
    public void test1() {
        // 1、加载配置文件
        Configuration configuration = new Configuration().configure();
        // 2、创建Session工厂
        SessionFactory factory = configuration.buildSessionFactory();
        // 3、创建Session对象
        Session session = factory.openSession();
        // 4、操作数据
        System.out.println(session.save(new User("测试", "666666")));
        // 5、关闭
        session.close();
    }

好了,以上就是我们使用Hibernate5.2.10完成的基本用法。
有什么问题,欢迎评论留言!
---------------------
原文:https://blog.csdn.net/xingfei_work/article/details/75290263



程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-02-24 10:23:01 重新编辑]
  Java面向对象编程-->面向对象开发方法概述之UML语言(下)
  JavaWeb开发-->访问数据库(Ⅰ)
  JSP与Hibernate开发-->映射对象标识符
  Java网络编程-->RMI框架
  精通Spring-->Vue组件开发基础
  Vue3开发-->创建综合购物网站应用
  什么是XA事务
  孙卫琴的《精通JPA与Hibernate》的读书笔记:JPA的配置文件
  孙卫琴的《精通JPA与Hibernate》的读书笔记:比较JPA的Entit...
  Spring JPA 使用注解方式进行事务管理
  JPA Criteria查询入门
  征求意见:正在写一本新书《精通JPA与Hibernate》
  JPA @Convert注解的用法
  JPA/Hibernate:基于版本的乐观锁并发控制
  JP注解(标注)和Hibernate注解(标注) 用法详解
  Hibernate的save()和persist()方法的区别
  JPA (Java Persistence API)2.2 的一些新特性
  hibernate 5的二级缓存案例讲解
  Spring Hibernate5入门
  解决运行Hibernate时的NoClassDefFoundError: javax/xml/bin...
  总结Hibernate5的新特性
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。