hibernate入门学习笔记

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: hibernate入门学习笔记

 hibernate框架应用在javaee三层结构中 dao层框架,在dao层里面做对数据库crud操作,使用hibernate实现crud操作,hibernate底层代码就是jdbc,hibernate对jdbc进行封装,使用hibernate好处,不需要写复杂jdbc代码了,

不需要写sql语句实现。


   hibernate不需要创建表,你只要创建实体类,通过配置实体类和数据库表一一对应关系,他就会帮助我们在数据库中自己创建表。


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://localhost/hibernate_day01</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">123</property>
    <!-- 第二部分: 配置hibernate信息  可选的-->
    <!-- 输出底层sql语句 -->
    <property name="hibernate.show_sql">true</property>
    <!-- 输出底层sql语句格式 -->
    <property name="hibernate.format_sql">true</property>
    <!-- hibernate帮创建表,需要配置之后 
      update: 如果已经有表,更新,如果没有,创建
    -->
    <property name="hibernate.hbm2ddl.auto">update</property>
    <!-- 配置数据库方言
      在mysql里面实现分页 关键字 limit,只能使用mysql里面
      在oracle数据库,实现分页rownum
      让hibernate框架识别不同数据库的自己特有的语句
     -->
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <!-- 第三部分: 把映射文件放到核心配置文件中 必须的-->
    <mapping resource="cn/itcast/entity/User.hbm.xml"/>
  </session-factory>
</hibernate-configuration>

实体类:

package cn.itcast.entity;
public class User {
  /*hibernate要求实体类有一个属性唯一的*/
  private int uid;
  private String username;
  private String password;
  private String address;
  public String getUsername() {
    return username;
  }
  public int getUid() {
    return uid;
  }
  public void setUid(int uid) {
    this.uid = uid;
  }
  public void setUsername(String username) {
    this.username = username;
  }
  public String getPassword() {
    return password;
  }
  public void setPassword(String password) {
    this.password = password;
  }
  public String getAddress() {
    return address;
  }
  public void setAddress(String address) {
    this.address = address;
  }
}

实体类的映射配置:

<?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>
<!-- 1 配置类和表对应 
    class标签
    name属性:实体类全路径
    table属性:数据库表名称
  -->
  <class name="cn.itcast.entity.User" table="t_user">
    <!-- 2 配置实体类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>
    <property name="password" column="password"></property>
    <property name="address" column="address"></property>
  </class>
</hibernate-mapping>

加载核心配置文件:静态代码块的作用是,在创建sessionFactory过程中特别耗资源,一个项目中一般只创建一个,静态代码块在类加载时候执行,执行一次。

package cn.itcast.utils;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtils { 
  private static Configuration cfg = null;
  private static SessionFactory sessionFactory = null;
  //静态代码块实现
  static {
    //加载核心配置文件
    cfg = new Configuration();
    cfg.configure();
    sessionFactory = cfg.buildSessionFactory();
  }
  //提供方法返回sessionFactory
  public static SessionFactory getSessionFactory() {
    return sessionFactory;
  }
}

Crud操作:

package cn.itcast.hibernatetest;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import cn.itcast.entity.User;
import cn.itcast.utils.HibernateUtils;
public class HibernateDemo {
  @Test
  public void testAdd() { 
//      第一步,加载核心配置文件
    SessionFactory sessionFactory = HibernateUtils.getSessionFactory();
//    第二步 使用SessionFactory创建session对象
    // 类似于连接
    Session session = sessionFactory.openSession();
//    第三步 开启事务
    Transaction tx = session.beginTransaction();
//    第四步 写具体逻辑 crud操作
    //添加功能
    System.out.println(User.class+"aaaaa");
    User user = new User();
    user.setUsername("小明");
    user.setPassword("123456");
    user.setAddress("中国");
    //调用session的方法实现添加
    session.save(user);
//    第五步 提交事务
    tx.commit();
//    第六步 关闭资源
    session.close();
    sessionFactory.close();
  }
}
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
SQL XML Java
一篇文章让你马上入门Hibernate
一篇文章让你马上入门Hibernate
|
3月前
|
Java 数据库连接 数据库
告别繁琐 SQL!Hibernate 入门指南带你轻松玩转 ORM,解锁高效数据库操作新姿势
【8月更文挑战第31天】Hibernate 是一款流行的 Java 持久层框架,简化了对象关系映射(ORM)过程,使开发者能以面向对象的方式进行数据持久化操作而无需直接编写 SQL 语句。本文提供 Hibernate 入门指南,介绍核心概念及示例代码,涵盖依赖引入、配置文件设置、实体类定义、工具类构建及基本 CRUD 操作。通过学习,你将掌握使用 Hibernate 简化数据持久化的技巧,为实际项目应用打下基础。
198 0
|
5月前
|
Oracle Java 关系型数据库
[学习笔记] 在Eclipse中使用Hibernate,并创建第一个Demo工程,数据库为Oracle XE
[学习笔记] 在Eclipse中使用Hibernate,并创建第一个Demo工程,数据库为Oracle XE
|
5月前
|
Java 数据库连接
杨老师课堂之JavaEE三大框架Hibernate入门第一课
杨老师课堂之JavaEE三大框架Hibernate入门第一课
30 0
|
6月前
|
SQL Java 数据库连接
Java从入门到精通:3.1.2深入学习Java EE技术——Hibernate与MyBatis等ORM框架的掌握
Java从入门到精通:3.1.2深入学习Java EE技术——Hibernate与MyBatis等ORM框架的掌握
|
6月前
|
Java 关系型数据库 数据库连接
Hibernate学习笔记(一)快速入门
Hibernate学习笔记(一)快速入门
|
6月前
|
SQL Java 数据库连接
Hibernate - 基础入门详解
Hibernate - 基础入门详解
121 1
|
6月前
|
SQL 缓存 Java
Hibernate - 检索策略入门与详解
Hibernate - 检索策略入门与详解
57 0
|
SQL Java 数据库连接
Hibernate_学习笔记
Hibernate_学习笔记
|
存储 SQL Java
hibernate学习笔记之二(映射关系与懒加载)
hibernate学习笔记之二(映射关系与懒加载)
hibernate学习笔记之二(映射关系与懒加载)