Hibernate入门

提示:在Mysql数据库连接的时候可以配置参数 useSSL=true,实现HTTPS连接

WEB内容回顾:

JavaEE三层结构:

三层结构及要用到的框架

  • web层:struts2框架
  • service层:spring框架
  • dao层:hibernate框架

对数据库进行crud操作

MVC思想:

  • M:模型
  • V:视图
  • C:控制器

Hibernate概述

框架:写程序时,使用框架自后,帮我们实现一部分功能,使用框架的好处,少些一部分代码就能够实现功能。

什么是Hibernate框架:

  • hibernate框架应用在JavaEE三层结构中的 dao层框架。
  • 在dao层里面做数据库crud操作,使用hibernate实现crud操作,hibernate底层代码就是jdbc,hibernate对jdbc进行封装,使用hibernate好处,不需要写复杂jdbc代码了,不需要写sql语句实现。
  • hibernate开源的轻量级的框架。

轻量级:导包较少,不需要其它东西就能够实现。

hibernate版本:

  • 目前使用版本5.x版本

什么是orm思想

  • Hibernate使用orm思想对数据库进行crud操作。
  • 在web阶段学习javabean,更正确的叫法 实体类。
  • orm:Object Relational Mapping,对象关系映射

描述:

  1. 让实体类和数据表进行一一对应关系,让实体类首先和数据表进行对应,让实体类属性和表里面字段进行对应。
  2. 不需要直接操作数据库表,而操作表对应实体类对象。

怎样通过操作实体类对象就能够实现操作数据表?

  • 通过配置文件让实体类和数据表进行一一对应关系。
  • 配置映射关系后,通过hibernate封装的一个对象session就能够操作数据表。
  • 比如现在有一个user对象(有name属性和password属性),通过session.save(user);就能够把user对象中的相关属性数据保存到映射数据表里面。

Hibernate入门

Hibernate环境搭建:

导包:

  • 在官网下载Hibernate完整包。
  • 解压进入Hibernate包会发现有一个require文件夹,这里面的jar包都是必须的。
  • 导入,在Hibernate文件夹下jap文件夹下的jar包。
  • 最后还有mysql的驱动jar包。

因为在使用Hibernate的时候,有日志信息输出(比如底层的sql语句等),Hibernate本身没有日志输出的jar包,导入第三方的日志jar包。

  • log4j-1.2.16.jar
  • slf4j-api-1.6.1.jar
  • slf4j-log4j12-1.7.2.jar

笔者用的是Hibernate5.0.7版本的。这里是Hibernate5.0.7的必须包,以及日志所需包

要用高一点的版本这里有:Hibernate5.2.8提取包下载

使用Hibernate

第一步:创建实体类:

  • 这里强调hibernate要求实体类有一个属性,其属性值是唯一的
//实体类
package cn.domarvel.entity;

public class User {
    private int uid;
    private String usernameString;
    private String passwordString;
    private String addrString;
    public int getUid() {
        return uid;
    }
    public void setUid(int uid) {
        this.uid = uid;
    }
    public String getUsernameString() {
        return usernameString;
    }
    public void setUsernameString(String usernameString) {
        this.usernameString = usernameString;
    }
    public String getPasswordString() {
        return passwordString;
    }
    public void setPasswordString(String passwordString) {
        this.passwordString = passwordString;
    }
    public String getAddrString() {
        return addrString;
    }
    public void setAddrString(String addrString) {
        this.addrString = addrString;
    }
    @Override
    public String toString() {
        return "User [uid=" + uid + ", usernameString=" + usernameString + ", passwordString=" + passwordString
                + ", addrString=" + addrString + "]";
    }
}

第二步:创建数据表

  • 使用Hibernate的时候,不需要自己手动创建表,Hibernate会帮你创建表。

第三步:配置实体类和数据库表一一对应关系(对象关系映射)

  • 使用配置文件实现映射关系。

    1. 创建xml格式的配置文件
    2. 映射配置文件名称和位置没有固定要求
    3. 建议:在实体类所在包里面创建 实体类名称.hbm.xml
  • 配置是xml格式,在配置文件中首先引入xml约束。

    1. 学过约束 dtd、scheme,在Hibernate里面目前引入的是dtd约束

下载核心配置文件和映射文件的dtd约束

  • 找到hibernate-mapping3.0.dtd
<!-- 拿出里面的约束 -->
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- 其中hibernate-mapping是根标签 -->

完整的空hibernate配置的xml代码:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>


</hibernate-mapping>
  • 下面开始配置实体类和表的映射关系:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <!-- 配置类和表对应 -->
    <class name="cn.domarvel.entity.User" table="user">
    <!-- 这里的name属性为实体类的全路径,table为表名,可以随便写(不能中文),这个名称是最终生成的 -->

        <!-- 配置实体类id和表id对应
             Hibernate中要求实体类有一个属性唯一值
             Hibernate中要求表有字段作为唯一值
         -->
         <!-- id标签
              name属性:实体类里面id属性名称
              column属性:最终生成的表字段名称
          -->
        <id name="uid" column="uid">
            <!-- 设置数据库表id增长策略
                 native:生成表id值就是主键自动增长。
             -->
             <generator class="native"></generator>
        </id>

        <!-- 配置其它的属性和表字段的对应
             name属性:实体类属性名称
             column属性:最终生成表字段名称
         -->
        <property name="username" column="username"/>
        <property name="password" column="password"/>
        <property name="addr" column="addr"/>
    </class>
</hibernate-mapping>

创建Hibernate核心配置文件

核心配置文件格式xml,但是核心配置文件名称和位置是固定的

  • 位置:必须在src下面。
  • 名称:必须为hibernate.cfg.xml
  • 引入dtd约束
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

Hibenate操作过程中只会加载核心配置文件,其它配置文件不会加载。

下载核心配置文件的对照表

第一部分:配置数据库信息。(必须)

第二部分:配置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-configuration>
    <session-factory>
        <!-- 第一部分:配置数据库信息 -->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql:///hibernate</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password"></property>

        <!-- 第二部分:配置Hibernate信息 -->
        <!-- 输出sql底层代码并且格式化代码,不进行格式化就是一整行! -->
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.format_sql">true</property>
        <!-- 
            hibernate.hbm2ddl.auto:帮创建表,需要配置之后。
            update:如果已经有表,更新,如果没有,创建。
         -->
        <property name="hibernate.hbm2ddl.auto">update</property>
        <!-- 
            配置数据库方言:
            在mysql里面实现分页 关键字limit,只能使用在mysql里面
            在oracle数据库,实现分页rownum
            让Hibernate框架实现不同数据库的自己特有的语句
         -->
        <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>

        <!-- 第三部分:把映射文件放到核心配置文件中 -->
        <mapping resource="cn/domarvel/entity/User.hbm.xml"/>


    </session-factory>


</hibernate-configuration>

实现添加操作:

第一步:加载Hibernate核心配置文件

Configuration cfg=new Configuration();
cfg.configure();
//执行configure();后会到src下面找到名称是hibernate.cfg.xml文件,并且会把文件给读取到对象里面。

第二步:创建SessionFactory对象

//在这里会读取Hibernate核心配置文件内容,创建sessionFactory
//在过程中,根据映射关系,在配置数据库里面把表创建
SessionFactory sessionFactory = cfg.buildSessionFactory();

第三步:使用SessionFacktory创建session对象

//session类似于连接(connect):
Session session=sessionFactory.openSession();

第四步:开启事务

//事务就是操作的基本单元,里面有多个操作,如果其中一个失败,那么都失败。
Transaction tx=session.beginTransaction();

第五步:写具体逻辑 crud 操作

//添加功能
User user=new User();
user.setUsernameString("FireLang");
user.setPassword("langsheng");
user.setAddress("成都");

session.save(user);

第六步:提交事务

tx.commit();

第七步:关闭资源

session.close();
sessionFactory.close();

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值