使用configuration对象创建sessionFactory对象 – 自动创建表时需配置的项目 update
创建sessionFactory过程中,特别消耗资源
在hibernate操作的过程中,建议一个项目一般创建一个sessionFactory对象具体实现(创建一个sessionFactory对象)
写工具类,写静态代码块实现 静态代码块在类中加载时,只执行一次 package com.jeff.util;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class HibernateUtil { PRivate final static Configuration cfg; private final static SessionFactory sessionFactory; //静态代码块实现sessionFactory对象创建 static{ cfg = new Configuration(); cfg.configure(); sessionFactory = cfg.buildSessionFactory(); } public static SessionFactory getSessionFactory(){ return sessionFactory; }}类似于jdbc中connection
调用session里面不同的方法实现crud操作
添加save()更新update()删除delete()根据id查询get方法session对象为单线程对象
session对象不能共用事务对象
提交和回滚 commit(); rollback();
概念 原子性、一致性、隔离性、持久性
Query 对象
使用此对象,不需要写sql语句,但需写HQL语句
SQL与HQL的区别
SQL | HQL |
---|---|
SQL操作的是表和字段 | HQL操作实体类和属性 |
HQL查询语句
查询所有记录
from 实体类名称Query对象的使用
创建Query对象方法里写HQL语句调用Query方法得到获取结果集 //1. 创建Query对象// 方法里面写HQL语句Query query = session.createQuery("from User");//2. 调用query方法得到结果List<User> userList = query.list();for (User user : userList) { System.out.println(user.toString());}/* -- 运行结果 Hibernate: select user0_.uid as uid1_0_, user0_.username as username2_0_, user0_.passWord as password3_0_, user0_.address as address4_0_ from t_user user0_ User [uid=1, username=Jeff, password=123456, address=广东茂名] User [uid=2, username=李白, password=123456, address=广东广州] User [uid=3, username=小马, password=123456, address=China]*/Criteria(标准)对象
不需要使用语句实现过程
创建Criteria对象
调用对象相应的查询方法//1. 创建Criteria对象Criteria criteria = session.createCriteria(User.class);//2. 调用对象方法得到结果List<User> userList = criteria.list();SQLQuery 对象
实现原始SQL查询//1. 创建SQLQuery对象SQLQuery sqlQuery = session.createSQLQuery("select * from t_user");//2. 调用对象方法得到结果List<Object[]> list = sqlQuery.list();for (Object[] obj : list) { //将数组转为字符串形式 String arrayToStr = Arrays.toString(obj); System.out.println(arrayToStr);}/* -- 运行结果 -- Hibernate: select * from t_user [1, Jeff, 123456, 广东茂名] [2, 李白, 123456, 广东广州] [3, 小马, 123456, China]*/- SQLQuery对象的查询方法未作处理时返回的是对象数组集实现返回结果集是对象的方法//1. 创建SQLQuery对象SQLQuery sqlQuery = session.createSQLQuery("select * from t_user");//得到返回对象的方法sqlQuery.addEntity(User.class);//2. 调用对象方法得到结果List<User> list = sqlQuery.list();新闻热点
疑难解答