thread
getCurrentSession获取当前线程的session对象,创建session对象之后不需要调用close方法,在线程结束的时候会自动将session关闭
(3)测试类
package com.itzheng.hibernate.demo01;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import com.itzheng.hibernate.utils.HibernateUtils;
/*
- 测试当前线程绑定的Session
*/
public class HibernateDemo04 {
@Test
public void demo01() {
//会按照配置的好的事务处理方式去存储数据
Session session = HibernateUtils.getCurrentSession();//保证每一个对象在调用该方法的时候都使用的是同一个session
Transaction transaction = session.beginTransaction();
Customer customer = new Customer();
customer.setCust_name(“王西”);
session.save(customer);
transaction.commit();
//session.close();不需要二次关闭session。因为在当前线程结束的时候就会关闭session对象,也就缓存
}
}
以下API在运行的时候需要配置好核心文件当中
<?xml version="1.0" encoding="UTF-8"?>com.mysql.jdbc.Driver
jdbc:mysql:///hibernate_day02
root
root
org.hibernate.dialect.MySQLDialect
true
true
update
org.hibernate.connection.C3P0ConnectionProvider
5
20
120
3000
4
thread
以及准备好对应的工具类
public class HibernateUtils {
public static final Configuration cfg;
public static final SessionFactory sf;
static {
cfg = new Configuration().configure();
sf = cfg.buildSessionFactory();
}
public static Session openSession() {
return sf.openSession();
}
public static Session getCurrentSession() {
return sf.getCurrentSession();
}
}
一、Query
Query接口用于接收HQL,查询多个对象。
HQL:Hibernate Query Language :Hibernate查询语言。这种语言与SQL的语法及其类似,是一个面向对象的查询语言。
1、查询所有表当中信息
public class HibernateDemo5 {
@Test
// Query
public void demo01() {
Session session = HibernateUtils.getCurrentSession();
Transaction transaction = session.beginTransaction();
// 通过Session活动Query接口
String hql = “from Customer”;
Query query = session.createQuery(hql);
List list = query.list();
for (Customer customer : list) {
System.out.println(customer);
}
transaction.commit();
}
}
2、查询指定字符的数据(条件查询)
/*
- Hibernate的其他的API
*/
public class HibernateDemo5 {
@Test
// Query
public void demo01() {
Session session = HibernateUtils.getCurrentSession();
Transaction transaction = session.beginTransaction();
// 通过Session活动Query接口
// String hql = “from Customer”;
String hql = “from Customer where cust_name like ?”;
Query query = session.createQuery(hql);
query.setParameter(0, “王%”);
List list = query.list();
for (Customer customer : list) {
System.out.println(customer);
}
transaction.commit();
}
}
分页查询
/*
- Hibernate的其他的API
*/
public class HibernateDemo5 {
@Test
// Query
public void demo01() {
Session session = HibernateUtils.getCurrentSession();
Transaction transaction = session.beginTransaction();
// 通过Session活动Query接口
//分页查询
String hql = “from Customer”;
Query query = session.createQuery(hql);
//设置分页
query.setFirstResult(0);//相当于MySQL当中limit的第一个参数
query.setMaxResults(3);
//query.setParameter(0, “王%”);
List list = query.list();
for (Customer customer : list) {
System.out.println(customer);
}
transaction.commit();
}
}
改变初始值
@Test
// Query
public void demo01() {
Session session = HibernateUtils.getCurrentSession();
Transaction transaction = session.beginTransaction();
// 通过Session活动Query接口
//分页查询
String hql = “from Customer”;
Query query = session.createQuery(hql);
//设置分页—》会根据不同的数据库切换SQL语句
query.setFirstResult(3);//相当于MySQL当中limit的第一个参数
query.setMaxResults(3);
//query.setParameter(0, “王%”);
List list = query.list();
for (Customer customer : list) {
System.out.println(customer);
}
transaction.commit();
}
二、Criteria
Criteria:QBC(Query By Criteria);
更加面向对象的一种查询方式。
@Test
// Criteria
public void demo02() {
Session session = HibernateUtils.getCurrentSession();
Transaction transaction = session.beginTransaction();
// 通过Session获得Criteria接口
Criteria criteria = session.createCriteria(Customer.class);// 返回
List list = criteria.list();
for (Customer customer : list) {
System.out.println(customer);
}
transaction.commit();
}
条件查询
@Test
// Criteria
public void demo02() {
Session session = HibernateUtils.getCurrentSession();
Transaction transaction = session.beginTransaction();
// 通过Session获得Criteria接口
感受:
其实我投简历的时候,都不太敢投递阿里。因为在阿里一面前已经过了字节的三次面试,投阿里的简历一直没被捞,所以以为简历就挂了。
特别感谢一面的面试官捞了我,给了我机会,同时也认可我的努力和态度。对比我的面经和其他大佬的面经,自己真的是运气好。别人8成实力,我可能8成运气。所以对我而言,我要继续加倍努力,弥补自己技术上的不足,以及与科班大佬们基础上的差距。希望自己能继续保持学习的热情,继续努力走下去。
也祝愿各位同学,都能找到自己心动的offer。
分享我在这次面试前所做的准备(刷题复习资料以及一些大佬们的学习笔记和学习路线),都已经整理成了电子文档
teria
public void demo02() {
Session session = HibernateUtils.getCurrentSession();
Transaction transaction = session.beginTransaction();
// 通过Session获得Criteria接口
感受:
其实我投简历的时候,都不太敢投递阿里。因为在阿里一面前已经过了字节的三次面试,投阿里的简历一直没被捞,所以以为简历就挂了。
特别感谢一面的面试官捞了我,给了我机会,同时也认可我的努力和态度。对比我的面经和其他大佬的面经,自己真的是运气好。别人8成实力,我可能8成运气。所以对我而言,我要继续加倍努力,弥补自己技术上的不足,以及与科班大佬们基础上的差距。希望自己能继续保持学习的热情,继续努力走下去。
也祝愿各位同学,都能找到自己心动的offer。
分享我在这次面试前所做的准备(刷题复习资料以及一些大佬们的学习笔记和学习路线),都已经整理成了电子文档
[外链图片转存中…(img-iEmCdBgd-1714231475827)]