上篇内容的简单回顾
1、表与表之间关系
一对多关系:两张表,多的表加外键。
多对多关系:三张表,关系表加外键。
一对一关系:一张表。两张表,外键唯一,或者主键对应。
2、Hibernate中的一对多配置
搭建Hibernate基本环境,引入jar包
创建表
创建实体:
一的一方,放的是多的一方的集合
多的一方,放的是一的一方的对象
创建映射:
一的一方,配置set
多的一方,配置<many-to-one>
编写测试类
Hibernate的一对多的操作:
级联操作:cascade,用于操作其关联的对象。
级联保存或更新
级联删除
测试对象导航
一的一方放弃外键维护权:inverse为true
3、Hibernate的多对多配置
搭建Hibernate环境:
创建表
创建实体
放置的是对方的集合
创建映射
配置的是对象的<set>
编写测试类
Hibernate的多对多操作:
级联操作
级联保存或更新
级联删除(了解)
其他的操作:
给用户选择角色
给用户改选角色
给用户删除角色
Hibernate中的五种查询方式
1、OID查询
OID检索:Hibernate根据对象的OID(主键)进行检索。
即使用get(), load()方法。
测试代码:
package com.pipi.hibernate04;
import myutils.HibernateUtil;
import org.hibernate.Session;
import org.hibernate.Transaction;
// OID方式查询:get(), load()
public class Test01 {
public static void main(String[] args) {
Session session = HibernateUtil.getCurrentSession();
Transaction transaction = session.beginTransaction();
// OID方式查询:get()
Emp emp1 = session.get(Emp.class, 7369);
// OID方式查询:load()
Emp emp2 = session.load(Emp.class, 7839);
System.out.println(emp1);
System.out.println(emp2);
transaction.commit();
}
}
2、对象导航查询
对象导航检索:Hibernate根据一个已经查询到的对象,获得其关联的对象的一种查询方式。
测试代码:
package com.pipi.hibernate04;
import myutils.HibernateUtil;
import org.hibernate.Session;
import org.hibernate.Transaction;
import java.util.Set;
// 导航对象方式查询
public class Test02 {
public static void main(String[] args) {
Session session = HibernateUtil.getCurrentSession();
Transaction transaction = session.beginTransaction();
// 给定员工的编号7839,能导航查询到他所在部门的信息
Emp emp = session.get(Emp.class, 7839);
Dept dept = emp.getDept();
System.out.println(emp);
System.out.println(dept);
System.out.println("---------------------------------------------------------");
// 给定部门编号10,能导航查询到该部门的所有员工信息
Dept dept1 = session.get(Dept.class, 10);
Set<Emp> emps = dept1.getEmps();
System.out.println(dept1);
for (Emp e : emps) {
System.out.println(e);
}
transaction.commit();
}
}
3、HQL查询(重点掌握)
HQL查询:Hibernate Query Language。
是一种面向对象的方式的查询语言。
HQL语法类似于sql语句。
通过session.createQuery(),用于接收一个HQL语句进行查询的方式。
注意:HQL语句中不能出现select * 选择。
HQL语句中出现的名字全是类中定义的名字,毕竟是面向对象查询。
下一篇详细介绍HQL查询。
4、QBC查询(重点掌握)
QBC查询:Query By Criteria,条件查询。是一种更加面向对象化的查询的方式。
完全看不到sql语句。
通过session.createCriteria()创建。
下一篇详细介绍QBC查询。
5、SQL查询
SQL查询:通过使用sql语句进行查询。
测试代码:
package com.pipi.hibernate05;
import com.pipi.hibernate04.Dept;
import com.pipi.hibernate04.Emp;
import myutils.HibernateUtil;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;
import java.util.Arrays;
import java.util.List;
// SQL查询方式
public class Test07_SQL {
public static void main(String[] args) {
Session session = HibernateUtil.getCurrentSession();
Transaction transaction = session.beginTransaction();
String sql = "select * from dept";
SQLQuery sqlQuery = session.createSQLQuery(sql);
List<Object[]> list = sqlQuery.list();
for (Object[] objs : list) {
System.out.println(Arrays.toString(objs));
}
System.out.println("--------------------------------------------");
String sql2 = "select * from dept";
SQLQuery sqlQuery2 = session.createSQLQuery(sql2);
sqlQuery2.addEntity(Dept.class); // 添加实体,封装到实体对象中
List<Dept> list2 = sqlQuery2.list();
for (Dept d : list2) {
System.out.println(d);
}
transaction.commit();
}
}
本文回顾了Hibernate中的关系配置,如一对多、多对多,并详细介绍了五种查询方式:OID查询、对象导航查询、HQL查询、QBC查询和SQL查询。重点讨论了HQL和QBC,这两种面向对象的查询方法。

739

被折叠的 条评论
为什么被折叠?



