Hibernate入门

来源:互联网 发布:2g3g4g网络切换器软件 编辑:程序博客网 时间:2024/05/14 05:37

提示:在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 0
原创粉丝点击