HQL入门介绍

本文介绍了Hibernate查询语言(HQL)的优势及基本用法,包括为何选择HQL而非传统SQL,以及如何使用HQL进行查询操作。此外,还探讨了数据库表设计的原则,通过实例对比了两种不同的表设计方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 为什么要学习hql(hibernate query language)
1 session的delete删除不能批量删除。
2 session的update不能批量修改。
3 sessin的load和get不能查询所有。
hql是官方推荐,功能强大。

二 HQL(Hibernate Query Language)
面向对象的查询语言,与SQL不同,HQL中的对象名是区分大小写的(除了JAVA类和属性其他部分不区分大小写);HQL中查的是对象而不是表,并且支持多态;HQL主要通过Query来操作,Query的创建方式:
Query q = session.createQuery(hql);
from Person
from User user where user.name=:name
from User user where user.name=:name and user.birthday < :birthday



三 模拟一个学生选课系统 ,创建三张表
CREATE TABLE `course` (
  `cid` int(11) NOT NULL,
  `cname` varchar(50) NOT NULL,
  `ccredit` int(11) DEFAULT NULL,
  PRIMARY KEY (`cid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `student` (
  `sid` int(11) NOT NULL,
  `sname` varchar(45) NOT NULL,
  `ssex` char(2) NOT NULL,
  `sdept` varchar(10) NOT NULL,
  `sage` int(11) DEFAULT NULL,
  `saddress` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`sid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `studcourse` (
  `stuCourseId` int(11) NOT NULL AUTO_INCREMENT,
  `sid` int(11) DEFAULT NULL,
  `cid` int(11) DEFAULT NULL,
  `grade` int(11) DEFAULT NULL,
  PRIMARY KEY (`stuCourseId`),
  KEY `sid` (`sid`),
  KEY `cid` (`cid`),
  CONSTRAINT `studcourse_ibfk_1` FOREIGN KEY (`sid`) REFERENCES `student` (`sid`),
  CONSTRAINT `studcourse_ibfk_2` FOREIGN KEY (`cid`) REFERENCES `course` (`cid`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

四 表的设计原则
hibernate设计者推荐我们在设计表的时候,应当每张表有一个主键,而且该主键最好不含业务逻辑,这样做的目的是为了保证表记录的稳定性。
例如:product表的设计好于product1表,因为productNo含有业务逻辑,如果产品号的命名规则发生变化,记录就存在不稳定性。
product 表(id为主键)
id   productNo   name      price
1    bi001            冰箱        1000
2    nj111            电脑        2000  
product1 表(productNo为主键)
productNo   name      price
bi001            冰箱        1000
nj111            电脑        2000  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值