Hibernate框架——其他查询方法

Hibernate 框架的查询方法

​ 除了通过 session.get() 方法进行查询外,Hibernate 框架还提供了其他的查询方式

Query 查询对象

​ query 查询对象可以通过设置查询条件进行查询,使用 HQL 语言(Hibernate Query Language),是 Hibernate 的面向对象查询语言,最终底层要转成面向数据库查询语言

//1.查询所有用户
Query query = session.createQuery("From User");

//2.查询符合条件得用户【username 和 password 是 User 对象得属性,而不是表的字段名】
Query query = session.createQuery("From User where username = ? and password = ?");
query.setParameter(0, "lmh");
query.setParameter(1, "123");

//3.分页查询
Query query = session.creatQuery("From User");
query.setMaxResults(3);
query.setFirstResult(3);

Criteria 查询对象

​ QBC(query by criteria),是 hibernate 提供纯面向对象查询得语言,提供直接使用 PO 对象进行操作

​ PO:persistent object,用于与数据库交互数据——dao 层(JavaBean + hbm)

​ BO:business object,业务数据对象——service 层

​ VO:value object 值对象——web 层

//Criteria:hibernate 独创的查询对象,全程无 hql 语言
Criteria criteria = session.createCriteria(User.class);

//等于 =
criteria.add(Restriction.eq("lmh", "123"));

//like
criteria.add(Restriction.like("lmh", "%123%"));

//..........

SQLQuery 查询对象

​ SQLQuery:使用原生的 SQL 语句查询

​ 并不是所有的 sql 都能转成 hql

SQLQuery query = session.createSQLQuery("select * from t_user");

文件逻辑优化

使用工具类

​ 将重复代码封装进工具类中

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtils {
	private static SessionFactory sf;
	
	static{
		//1.加载配置
		Configuration cfg = new Configuration().configure();
		
		//2.创建一个sessionFactory
		sf = cfg.buildSessionFactory();
		
		//3.在虚拟机关闭时,释放SessionFactory
		Runtime.getRuntime().addShutdownHook(new Thread(){
			@Override
			public void run() {
				sf.close();
				System.out.println("释放资源");
			}
		});
		
	}
	
	public static Session openSession(){
		return sf.openSession();
	}
	
	public static Session getCurrentSession(){
		return sf.getCurrentSession();
	}
}
发布了38 篇原创文章 · 获赞 44 · 访问量 3424

猜你喜欢

转载自blog.csdn.net/scfor333/article/details/103244947
今日推荐