Hibernate和MyBatis的简单入门

Hibernate

Hibernate是开发者社区比较流行的持久化框架

它不仅提供了基本的对象关系映射,还提供了作为ORM工具所应有的复杂功能

比如:缓存、延迟加载、预先抓取和分布式缓存

使用Hibernate的主要接口是org.hibernate.Session

Session接口提供了基本的数据访问功能

如保存、更新、删除以及从数据库中加载对象的功能

获取Hibernaate Session对象的标准方式是借助于Hibernate的Session Factory接口的实现类

除了一些其它的任务,SessionFactory主要负责Hibernate Session的打开、关闭以及管理

OK,那么我们开始创建一个最简单的例子来学习Hibernate

环境:IDEA 2019 3.3、Maven、Mysql

1.工程建立

借助IDEA先创建一个maven的quick start工程

然后最终的得到的完整的项目结构为:

** *.xml文件直接通过new->file的方式建立 **

2.导入依赖

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-core</artifactId>
      <version>5.4.9.Final</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.19</version>
    </dependency>

3.持久化类的建立

所谓的持久化类,即是需要将该类的对象存储到数据库中

package org.example;

public class User {
    private String id;
    private String username;
    private int password;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public int getPassword() {
        return password;
    }

    public void setPassword(int password) {
        this.password = password;
    }
}

4.hibernate.cfg.xml

hibernate.cfg.xml配置文件是Hibernate的全局配置文件

它主要包含了与数据库连接的基本信息

hibernate.cfg.xml的配置内容如下:

<?xml version=‘1.0‘ encoding=‘utf-8‘?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!--数据库连接的基本信息-->
        <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/hibernate?serverTimezone=UTC</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root</property>
        <property name="connection.characterEncoding">utf8</property>
        <!--hibernate.dialect 只是Hibernate使用的数据库方言,就是要用Hibernate连接哪种类型的数据库服务器-->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <!--是否在后台显示Hibernate用到的SQL语句-->
        <property name="show_sql">true</property>
        <!--将SQL脚本进行格式化后再输出-->
        <property name="format_sql">true</property>

        <!--指定自动生成数据表的策略 -->
        <property name="hbm2ddl.auto">update</property>
        <!--
           create: 先删表,再建表。
           create-drop: 启动时建表,退出前删表。
           update: 如果表结构不一致,就创建或更新。
           validate: 启动时验证表结构,如果不致就抛异常。
        -->

        <!--映射文件,可指定多个-->
        <mapping resource="mapping/User.hbm.xml"/>
        <!--一个持久化的类对应一个映射文件-->
    </session-factory>
</hibernate-configuration>

5. User.hbm.xml

*.hbm.xml配置文件包含了Hibernate的基本映射信息

即每一个需要持久化的类与其对应的数据库表之间的关联信息

在Hibernate工作的初始阶段,这些信息通过hibernate.cfg.xml的mapping节点

加载到Configuration和SessionFactory实例

<?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="org.example.User" table="user" schema="hibernate">
        <id name="id" column="id"/>
        <property name="username" column="username"/>
        <property name="password" column="password"/>
    </class>
</hibernate-mapping>

6.数据库表的生成

在Hibernate中,不需要自己手动在数据库中生成持久化的表

因为在hibernate.cfg.xml配置文件中,我们设置了

<property name="hbm2ddl.auto">update</property>

而update意味着:如果表结构不一致,就创建或更新

所以,我们可以不创建数据库表,等着Hibernate给我们创建

7.测试

// 加载Hibernate默认配置文件
Configuration configuration = new Configuration().configure();
// 用Configuration创建SessionFactory
SessionFactory factory = configuration.buildSessionFactory();
// 创建Session
Session session = factory.openSession();
// 开启事务
Transaction transaction = session.beginTransaction();
// 实例化持久化类
User user = new User();
user.setId("3");
user.setUsername("you");
user.setPassword(123456);
session.persist(user);
//session.delete(user);
//session.update(user);
// 提交事务
transaction.commit();
// 关闭Session,释放资源
session.close();
factory.close();

Mybatis

Hibernate和Mybatis的区别

原文地址:https://www.cnblogs.com/ASE265/p/12682809.html

时间: 2024-10-13 05:38:13

Hibernate和MyBatis的简单入门的相关文章

mybatis简单入门介绍

mybatis入门 简介 什么是mybatis? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型.接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录. 核心sqlSessionFactory mybatis核心是以sqlSessionFactory

mybatis的简单知识

mybatis的简单入门: 1,关于Mybatis(ORM[对象关系映射]{关系型数据库和业务实体对象之间作一个映射})的说明: MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录. 2,mybatis的流程(即:加载配置-接收请求并处理-返回结果): (1)加载配置并初始化 触发条件:加载

myBatis简单入门

本文主要介绍一个现在比较流行的数据库操作框架Mybatis,只是简单的介绍入门用法 全部代码下载: Github链接:链接 写文章不易,欢迎大家采我的文章,以及给出有用的评论,当然大家也可以关注一下我的github:多谢: 1.MyBatis 是什么? MyBatis 是一款一流的支持自定义 SQL.存储过程和高级映射的持久化框架.MyBatis 几乎消除了所有的 JDBC 代码,也基本不需要手工去设置参数和获取检索结果.MyBatis 能够使用简单的XML 格式或者注解进行来配置,能够映射基本

Mybatis 3.2.7 简单入门Demo

对最新版本 Mybatis 3.2.7 做了一个demo,做个记录 需要的基本jar: mybatis-3.2.7.jar mysql-connector-java-5.1.27.jar 首先配置xml文件 mybatis-config.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config

JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结(转)

hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和学习,使自己在做项目中更加得心应手. 第一方面:开发速度的对比 就开发速度而言,Hibernate的真正掌握要比Mybatis来得难些.Mybatis框架相对简单很容易上手,但也相对简陋些.个人觉得要用好Mybatis还是首先要先理解好Hibernate. 比起两者的开发速度,不仅仅要考虑到两者的特性及性能,更要根据项目需求

Hibernate 与 mybatis 区别

JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结 我是一名java开发人员,hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和学习,使自己在做项目中更加得心应手. 第一方面:开发速度的对比 就开发速度而言,Hibernate的真正掌握要比Mybatis来得难些.Mybatis框架相对简单很容易上手,但也相对简陋些.个人觉得要用好Mybatis还

iBatis简单入门教程

iBatis 简介: iBatis 是apache 的一个开源项目,一个O/R Mapping 解决方案,iBatis 最大的特点就是小巧,上手很快.如果不需要太多复杂的功能,iBatis 是能够满足你的要求又足够灵活的最简单的解决方案,现在的iBatis 已经改名为Mybatis 了. 官网为:http://www.mybatis.org/ 搭建iBatis 开发环境: 1 .导入相关的jar 包,ibatis-2.3.0.677.jar .mysql-connector-java-5.1.6

Hibernate与 MyBatis的比较

最近做了一个Hibernate与MyBatis的对比总结,希望大家指出不对之处. 第一章     Hibernate与MyBatis Hibernate 是当前最流行的O/R mapping框架,它出身于sf.net,现在已经成为Jboss的一部分. Mybatis 是另外一种优秀的O/R mapping框架.目前属于apache的一个子项目. MyBatis 参考资料官网:http://www.mybatis.org/core/zh/index.html Hibernate参考资料: http

Hibernate 与Mybatis之比较

1. hibernate是全自动,而mybatis是半自动.hibernate完全可以通过对象关系模型实现对数据库的操作,拥有完整的JavaBean对象与数据库的映射结构来自动生成sql.而mybatis仅有基本的字段映射,对象数据以及对象实际关系仍然需要通过手写sql来实现和管理.2. hibernate数据库移植性远大于mybatis.hibernate通过它强大的映射结构和hql语言,大大降低了对象与数据库(oracle.MySQL等)的耦合性,而mybatis由于需要手写sql,因此与数