HQL数据查询基础(一)

2023-05-16

源自 imooc 的学习
       什么是HQL呢?
       HQL 是Hibernate Query Language,Hibernate查询语言;同时HQL是一种面向对象的查询语言,HQL查询的主体是映射配置的持久化类及其属性。而SQL查询的主体是数据库表,它们两者查询主体是完全不同的。SQL能实现的查询功能,HQL几乎同样也都能实现。实际上Hibernate框架会解析HQL语句,并将HQL语句转化为SQL语句,来完成数据库的操作。
       HQL提供了丰富灵活的查询特性,是Hibernate官方推荐的查询方式。
       HQL语句形式:
select...  from... where... group by... having... order by...
       注:from... 子句是HQL语句中不可或缺的组成部分,一个最简单的HQL语句只需要一个from子句就可以成立了,其他的子句我们都可以省略。这点与我们的SQL语句是不同的。
       初学HQL应该注意的问题:
1、HQL是面向对象的查询语言,它查询的主体是映射配置的持久化类及其属性,对Java类与属性大小写敏感;而SQL,查询的主体是数据库表,对数据库名、表名大小写不敏感;
2、HQL对关键字不区分大小写,如: select、from、where、group by、having、order by等(只要拼写正确即可),但是为了代码的可读性和美观,习惯上我们将HQL的关键字全部小写。
Query 接口简介
       在编写HQL语句的过程中,如果没有Query接口,HQL语句就只是普通的字符串;当有了Query接口后,我们就可以执行HQL语句。HQL语句通过Hibernate支持的Query接口,解析HQL语句,根据配置信息生成SQL语句,使用SQL语句进行数据库的操作。
org.hibernate.Query接口
1)Query接口定义有执行查询的方法,该方法完成了HQL的解析和执行过程,并返回查询的结果;
2)Query接口支持方法链编程风格,使得程序代码更为简洁。
Query实例的创建
1)Session的createQuery()方法创建Query实例;
2)createQuery方法包含一个HQL语句参数,createQuery(hql)。
创建完Query实例后,可以调用Query实例中的方法完成查询操作
1)Query接口的list() 方法执行HQL查询;
2)list()方法返回结果数据类型为 java.util.List,List集合中存放符合查询条件的持久化对象。
示例:网上商店
创建 webshop 数据库:
数据库表设计如下:
1)一个商家有多种商品,一种商品只属于一个商家;
2)一个客户有多个订单,一个订单只属于一个客户;
3)一个商品可以有多份订单,一个订单中可以有多个商品;(需要生成中间表——订单明细表)
具体设计如下:
测试信息如下:
sql文件如下:
<span style="font-size:18px;">/*# MySQL-Front 5.1  (Build 3.80)*/

/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE */;
/*!40101 SET SQL_MODE='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES */;
/*!40103 SET SQL_NOTES='ON' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS */;
/*!40014 SET FOREIGN_KEY_CHECKS=0 */;


/*# Host: 127.0.0.1    Database: webshop
# ------------------------------------------------------
# Server version 5.1.36-community*/

DROP DATABASE IF EXISTS `webshop`;
CREATE DATABASE `webshop` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `webshop`;

/*#
# Source for table commodity
#*/

DROP TABLE IF EXISTS `commodity`;
CREATE TABLE `commodity` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  `price` double(11,2) DEFAULT NULL,
  `unit` varchar(50) DEFAULT NULL,
  `category` varchar(100) DEFAULT NULL,
  `description` varchar(1000) DEFAULT NULL,
  `seller` int(11) DEFAULT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;

/*#
# Dumping data for table commodity
#*/

LOCK TABLES `commodity` WRITE;
/*!40000 ALTER TABLE `commodity` DISABLE KEYS */;
INSERT INTO `commodity` VALUES (1,'中式童装',120,'套','童装','中式童装',1);
INSERT INTO `commodity` VALUES (2,'女士套装',200,'套','女装','女士职业套装',1);
INSERT INTO `commodity` VALUES (3,'男士西服',200,'套','男装','男士西服套装',1);
INSERT INTO `commodity` VALUES (4,'笔记本电脑',4000,'台','电脑','双核笔记本电脑',2);
INSERT INTO `commodity` VALUES (5,'移动硬盘',400,'块','电脑周边','1t移动硬盘',2);
INSERT INTO `commodity` VALUES (6,'液晶电视',5000,'台','电视','4k高清液晶电视',3);
INSERT INTO `commodity` VALUES (7,'滚筒洗衣机',4000,'台','洗衣机','滚筒洗衣机',3);
INSERT INTO `commodity` VALUES (8,'《hibernate编程》',30,'本','实体书','介绍hibernate编程',4);
INSERT INTO `commodity` VALUES (9,'《Java核心》',50,'本','实体书','介绍Java编程核心',4);
INSERT INTO `commodity` VALUES (10,'《海底两万里》',40,'本','电子书','经典科幻小说',4);
INSERT INTO `commodity` VALUES (11,'优盘',30,'个','电脑周边','16G优盘',2);
/*!40000 ALTER TABLE `commodity` ENABLE KEYS */;
UNLOCK TABLES;

/*#
# Source for table customer
#*/

DROP TABLE IF EXISTS `customer`;
CREATE TABLE `customer` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  `tel` varchar(50) DEFAULT NULL,
  `address` varchar(1000) DEFAULT NULL,
  `email` varchar(300) DEFAULT NULL,
  `sex` varchar(30) DEFAULT NULL,
  `description` varchar(4000) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `birthday` date DEFAULT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

/*#
# Dumping data for table customer
#*/

LOCK TABLES `customer` WRITE;
/*!40000 ALTER TABLE `customer` DISABLE KEYS */;
INSERT INTO `customer` VALUES (1,'张三','13800000000','中国上海××区××路','13800000000@138.com','男','热爱编程的程序员',25,'1990-01-01');
INSERT INTO `customer` VALUES (2,'李四','13888888888','中国北京××区××路','13888888888@138.com','女','酷爱网购的白领',20,'1995-02-21');
INSERT INTO `customer` VALUES (3,'王五','15888888888','中国深圳××区××路','15888888888@158.com','男','这个家伙很懒,什么也没有留下',35,'1980-04-14');
INSERT INTO `customer` VALUES (4,'赵六','13900000000',NULL,NULL,'男',NULL,40,'1975-01-01');
/*!40000 ALTER TABLE `customer` ENABLE KEYS */;
UNLOCK TABLES;

/*#
# Source for table orderform
#*/

DROP TABLE IF EXISTS `orderform`;
CREATE TABLE `orderform` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `customer` int(11) DEFAULT NULL,
  `tradedate` date DEFAULT NULL,
  `status` varchar(10) DEFAULT NULL,
  `amount` double(11,2) DEFAULT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

/*#
# Dumping data for table orderform
#*/

LOCK TABLES `orderform` WRITE;
/*!40000 ALTER TABLE `orderform` DISABLE KEYS */;
INSERT INTO `orderform` VALUES (1,1,'2015-04-30','已收货',4400);
INSERT INTO `orderform` VALUES (2,2,'2015-05-11','已发货',520);
INSERT INTO `orderform` VALUES (3,3,'2015-05-13','已付款',9120);
/*!40000 ALTER TABLE `orderform` ENABLE KEYS */;
UNLOCK TABLES;

/*#
# Source for table orderitem
#*/

DROP TABLE IF EXISTS `orderitem`;
CREATE TABLE `orderitem` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `ORDERID` int(11) DEFAULT NULL,
  `COMMODITY` int(11) DEFAULT NULL,
  `DISCOUNT` double(11,2) DEFAULT NULL,
  `ACTPRICE` double(11,2) DEFAULT NULL,
  `AMOUNT` double(11,2) DEFAULT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;

/*#
# Dumping data for table orderitem
#*/

LOCK TABLES `orderitem` WRITE;
/*!40000 ALTER TABLE `orderitem` DISABLE KEYS */;
INSERT INTO `orderitem` VALUES (1,1,4,1,4000,1);
INSERT INTO `orderitem` VALUES (2,1,5,1,400,1);
INSERT INTO `orderitem` VALUES (3,2,1,1,120,1);
INSERT INTO `orderitem` VALUES (4,2,2,1,200,1);
INSERT INTO `orderitem` VALUES (5,2,3,1,200,1);
INSERT INTO `orderitem` VALUES (6,3,6,1,5000,1);
INSERT INTO `orderitem` VALUES (7,3,7,1,4000,1);
INSERT INTO `orderitem` VALUES (8,3,8,1,30,1);
INSERT INTO `orderitem` VALUES (9,3,9,1,50,1);
INSERT INTO `orderitem` VALUES (10,3,10,1,40,1);
/*!40000 ALTER TABLE `orderitem` ENABLE KEYS */;
UNLOCK TABLES;

/*#
# Source for table seller
#*/

DROP TABLE IF EXISTS `seller`;
CREATE TABLE `seller` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  `tel` varchar(1000) DEFAULT NULL,
  `address` varchar(2000) DEFAULT NULL,
  `website` varchar(500) DEFAULT NULL,
  `star` int(11) DEFAULT NULL,
  `business` varchar(2000) DEFAULT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

/*#
# Dumping data for table seller
#*/

LOCK TABLES `seller` WRITE;
/*!40000 ALTER TABLE `seller` DISABLE KEYS */;
INSERT INTO `seller` VALUES (1,'A服装店','13000000000','中国北京××区','www.a.com',5,'经营各式服装');
INSERT INTO `seller` VALUES (2,'B数码店','15800000000','中国浙江杭州市××区','www.b.com',4,'经营各类数码电子产品');
INSERT INTO `seller` VALUES (3,'C电器店','13012341234','中国广东深圳市××区','www.c.com',4,'经营各类家电');
INSERT INTO `seller` VALUES (4,'D书店','18600000000','中国陕西西安市××区','www.d.com',5,'经营各类实体书与电子书');
/*!40000 ALTER TABLE `seller` ENABLE KEYS */;
UNLOCK TABLES;

/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
</span>


       可以将该SQL文件导入phpmyadmin中执行创建好数据库和数据表,同时插入测试信息,成功生成后,如下:
      
       在IntelliJ IDEA中创建HqlBasic项目,目录结构如下:(项目中需要增加 Hibernate jar包、mysql jdbc的驱动、junit jar包)
       在 com.imooc.util 包中创建开启和关闭session的工具类 HibernateUtil.java:
<span style="font-size:18px;">package com.imooc.util;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

/**
 * Created by DreamBoy on 2016/5/19.
 */

/**
 * 通过这个Hibernate初始化类,就可以有效地管理Session,避免了Session的多线程共享数据问题。
 */
public class HibernateUtil {
    private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
    private static SessionFactory sessionFactory = null; //SessionFactory对象

    static {
        try {
            Configuration cfg = new Configuration().configure(); //加载Hibernate配置文件
            //创建服务注册对象
            ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();
            //创建会话工厂对象
            sessionFactory = cfg.buildSessionFactory(serviceRegistry);
        } catch (Exception e) {
            System.err.println("创建会话工厂失败");
            e.printStackTrace();
        }
    }

    //获取session
    public static Session getSession() throws HibernateException {
        Session session = threadLocal.get();
        if(session == null || !session.isOpen()) {
            if(sessionFactory == null) {
                rebuildSessionFactory();
            }

            session = (sessionFactory != null) ? sessionFactory.openSession() : null;
            threadLocal.set(session);
        }
        return session;
    }

    /**
     * 重建会话工厂
     */
    public static void rebuildSessionFactory() {
        try {
            Configuration cfg = new Configuration().configure(); //加载Hibernate配置文件
            //创建服务注册对象
            ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();
            //创建会话工厂对象
            sessionFactory = cfg.buildSessionFactory(serviceRegistry);
        } catch (Exception e) {
            System.err.println("创建会话工厂失败");
            e.printStackTrace();
        }
    }

    //获取SessionFactory对象
    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
    //关闭Session
    public static void closeSession() throws HibernateException {
        Session session = threadLocal.get();
        threadLocal.set(null);
        if(session != null) {
            session.close(); //关闭session
        }
    }
}
</span>
       在 com.imooc.model 包中创建 Seller.java 持久化类:
<span style="font-size:18px;">package com.imooc.model;

/**
 * Created by DreamBoy on 2016/5/19.
 */

import java.io.Serializable;

/**
 * 商家信息持久化类
 */
public class Seller implements Serializable {
    private long id; //主键
    private String name; //名称
    private String tel; //电话
    private String address; //地址
    private String website; //网站
    private Integer star; //星级
    private String business; //经营范围

    public long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getWebsite() {
        return website;
    }

    public void setWebsite(String website) {
        this.website = website;
    }

    public Integer getStar() {
        return star;
    }

    public void setStar(Integer star) {
        this.star = star;
    }

    public String getBusiness() {
        return business;
    }

    public void setBusiness(String business) {
        this.business = business;
    }

    @Override
    public String toString() {
        return "主键:" + this.getId() +
                " | 名称:" + this.getName() +
                " | 电话:" + this.getTel() +
                " | 星级:" + this.getStar() +
                " | 网址:" + this.getWebsite() +
                " | 地址:" + this.getAddress() +
                " | 经营范围:" + this.getBusiness();
    }
}
</span>

       Seller 持久化类对应的映射配置文件如下:
Seller.hbm.xml
<span style="font-size:18px;"><?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="com.imooc.model.Seller" table="SELLER">
        <id name="id" type="java.lang.Long">
            <column name="ID"/>
            <generator class="increment"/>
        </id>
        <property name="name" type="java.lang.String">
            <column name="NAME"/>
        </property>
        <property name="tel" type="java.lang.String">
            <column name="TEL"/>
        </property>
        <property name="address" type="java.lang.String">
            <column name="ADDRESS"/>
        </property>
        <property name="website" type="java.lang.String">
            <column name="WEBSITE"/>
        </property>
        <property name="star" type="java.lang.Integer">
            <column name="STAR"/>
        </property>
        <property name="business" type="java.lang.String">
            <column name="BUSINESS"/>
        </property>
    </class>
</hibernate-mapping></span>

       Hibernate 项目的配置文件如下:
hibernate.cfg.xml
<span style="font-size:18px;"><?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.username">root</property>
        <property name="connection.password"></property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql:///webshop?useUnicode=true&characterEncoding=UTF-8</property>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <property name="hbm2ddl.auto">update</property>

        <mapping resource="com/imooc/model/Seller.hbm.xml"/>
        <!-- DB schema will be updated if needed -->
        <!-- <property name="hbm2ddl.auto">update</property> -->
    </session-factory>
</hibernate-configuration></span>

       创建test目录,在test目录下创建 com.imooc.model 包,在该包中创建 SellerTest 测试类:
在 testSeller 方法中 创建HQL语句、 Query 对象,调用list方法实现查询操作。
<span style="font-size:18px;">package com.imooc.model;

import com.imooc.util.HibernateUtil;
import org.hibernate.Query;
import org.hibernate.Session;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.util.List;

/**
 * Created by DreamBoy on 2016/5/19.
 */
public class SellerTest {
    private Session session = null;

    @Before
    public void setUp() throws Exception {
        session = HibernateUtil.getSession();
    }

    @After
    public void tearDown() throws Exception {
        HibernateUtil.closeSession();
    }

    @Test
    public void testSeller() {
        String hql = " from Seller ";
        //创建Query实例对象
        Query query = session.createQuery(hql);
        List<Seller> sellers = query.list();

        for(Seller seller : sellers) {
            System.out.println(seller);
        }
    }
}
</span>

       运行测试方法 testSeller ,结果如下:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HQL数据查询基础(一) 的相关文章

随机推荐

  • 伸缩自如的时光轴实现

    上回说到简单时间轴的实现 xff0c 这一次针对上回的实现的时光轴 xff0c 增加时光轴收起的功能 为了方便重用 xff0c 我分离css样式和js 使用过程中主要注意一下尽量使用css定义的时光轴样式即可 时光轴收起功能的实现过程可以查
  • 伸缩自如的时光轴实现——改进版

    上回讲到的是时光轴 伸缩自如 的实现 xff0c 如果基于响应式制作的话 xff0c 可能存在着许多潜在的BUG 如 xff1a 窗口变化时 xff0c 时光轴的 收起 和 展开 xff0c 都发生了一些变形 为此 xff0c 对原来的 t
  • 伸缩自如的时光轴实现_样式改版

    针对前几篇文章中实现的 伸缩自如 的时光轴 xff0c 对时光轴的样式进行又一次修改 xff0c 效果如下 xff1a 点击 收起 后 xff1a 修改后的 timeline css xff0c 如下 xff1a vertical time
  • ThinkPHP中的create方法与自动令牌验证

    转载自 xff1a Thinkphp中Create方法深入探究 ThinkPHP中的create方法与自动令牌验证实例教程 Thinkphp中Create方法深入探究 由于工作原因在thinkPHP的create 方法上遇到了问题 xff0
  • web安全之token和CSRF攻击

    上文我转载了两篇关于ThinkPHP令牌验证的文章 xff08 ThinkPHP中的create方法与自动令牌验证 xff09 其中提及到了 token xff0c 这里针对 token 的作用 xff0c 转载了另外两篇文章 xff08
  • java中的==、equals和hashCode以及hashCode生成

    转载自 xff1a xff08 点击打开链接 xff09 前言 java中 61 61 equals hashCode 都和对象的比较有关 xff0c 在java中这三者各有什么用处呢 xff0c 即java中为什么需要设计这三种对象的比较
  • javascript调用微信或QQ扫一扫

    项目里为了体验做的好点 xff0c 想直接通过js调用手机的扫一扫 xff1a 服务的用户主要是通过 xff1a 微信或QQ 之前使用过 微信或QQ的分享 腾讯移动WEB开发平台的 39 对外分享组件接口文档 39 http open mo
  • Java中的反射机制

    获取类的类类型的3种方式 xff0c 以及如何通过类的类类型创建实例对象 xff1f ClassDemo1 java package com reflect public class ClassDemo1 public static voi
  • Java中的自定义注解

    自定义注解 Description java xff08 这里自定义Description注解 xff09 package com ann test import java lang annotation Documented import
  • Java中自定义注解的应用

    来自 慕课网 的学习 我们可以使用自定义注解 xff0c 实现ORM xff0c 即对象 关系的映射 通过自定义注解 xff0c 定义对象对应数据表的属性 xff0c 如表名 xff0c 表字段等 Table java xff08 Tabl
  • Intellij IDEA下的第一个Hibernate项目

    参考 xff1a intellij配置hibernate自动生成hbm xml文件 从零开始用Intellij idea14创建hibernate项目 下面我要讲的创建方式 xff0c 可能更加原生态 xff0c 更加类似于Eclipse下
  • Intellij IDEA使用注解创建Hibernate项目中的OR映射类

    上回说到 xff1a Intellij IDEA下的第一个Hibernate项目 我们需要创建 对象到关系的映射配置文件 xff0c 如 entity hbm xml xff08 其中 entity 是我们将要创建的实体 xff09 下面讲
  • Hibernate中Blob对象类型的使用

    使用Intellij IDEA创建Hibernate项目 xff0c 目录结构如下 xff1a 其中 assets app png 为将要存储的照片 xff0c src hibernate cfg xml 为Hibernate的配置文件 x
  • Hibernate组件映射

    转载自 xff1a 点击打开链接 在Hibernate中 component 是某个实体的逻辑组成部分 xff0c 它与实体的根本区别是没有oid xff08 对象标识符 xff09 xff0c component是一个被包含的对象 它作为
  • Hibernate中的单向一对多关联

    源自 imooc 中的学习 Hibernate中的单向一对多关联 xff0c 这里举例 班级对学生 的单向一对多关联 xff0c 即一个班级可以有多个学生 那么在Hibernate中实体对象间如何体现出单向一对多的关联关系呢 xff1f 如
  • Hibernate中的单向多对一关联

    继上回讲到 Hibernate中的单向一对多关联 xff0c 这次来实现一下Hibernate中的单向多对一关联 对原来的项目修改如下 xff1a Hibernate中的单向多对一关联 xff0c 需要我们在多方增加一个一方的属性 xff0
  • Hibernate中的双向多对一关联以及 inverse属性、cascade属性的用法

    上回 说了 Hibernate中的单向一对多关联 和 Hibernate中的单向多对一关联 这次针对这两个 单向 进行整合即可实现双向的多对一关联 如 xff1a 学生与班级的关系 在Grade类中需要添加 Set集合保存Student对象
  • 优化器 optimizer

    优化器 optimizer optimizer 优化器 xff0c 用来根据参数的梯度进行沿梯度下降方向进行调整模型参数 xff0c 使得模型loss不断降低 xff0c 达到全局最低 xff0c 通过不断微调模型参数 xff0c 使得模型
  • Hibernate中的多对多关联

    源自 imooc 的学习 多对多关联是一种常见的关联关系 多对多关联关系一般采用中间表的形式来实现 xff0c 即新增一张包含关联双方主键的关联表 那么 xff0c 在Hibernate中如何实现多对多的关联关系呢 xff1f 多对多关联可
  • HQL数据查询基础(一)

    源自 imooc 的学习 什么是HQL呢 xff1f HQL 是Hibernate Query Language xff0c Hibernate查询语言 xff1b 同时HQL是一种面向对象的查询语言 xff0c HQL查询的主体是映射配置