使用configuration對(duì)象創(chuàng)建sessionFactory對(duì)象 – 自動(dòng)創(chuàng)建表時(shí)需配置的項(xiàng)目 update
創(chuàng)建sessionFactory過(guò)程中,特別消耗資源
在hibernate操作的過(guò)程中,建議一個(gè)項(xiàng)目一般創(chuàng)建一個(gè)sessionFactory對(duì)象具體實(shí)現(xiàn)(創(chuàng)建一個(gè)sessionFactory對(duì)象)
寫工具類,寫靜態(tài)代碼塊實(shí)現(xiàn) 靜態(tài)代碼塊在類中加載時(shí),只執(zhí)行一次 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; //靜態(tài)代碼塊實(shí)現(xiàn)sessionFactory對(duì)象創(chuàng)建 static{ cfg = new Configuration(); cfg.configure(); sessionFactory = cfg.buildSessionFactory(); } public static SessionFactory getSessionFactory(){ return sessionFactory; }}類似于jdbc中connection
調(diào)用session里面不同的方法實(shí)現(xiàn)crud操作
添加save()更新update()刪除delete()根據(jù)id查詢get方法session對(duì)象為單線程對(duì)象
session對(duì)象不能共用事務(wù)對(duì)象
提交和回滾 commit(); rollback();
概念 原子性、一致性、隔離性、持久性
Query 對(duì)象
使用此對(duì)象,不需要寫sql語(yǔ)句,但需寫HQL語(yǔ)句
SQL與HQL的區(qū)別
| SQL | HQL |
|---|---|
| SQL操作的是表和字段 | HQL操作實(shí)體類和屬性 |
HQL查詢語(yǔ)句
查詢所有記錄
from 實(shí)體類名稱Query對(duì)象的使用
創(chuàng)建Query對(duì)象方法里寫HQL語(yǔ)句調(diào)用Query方法得到獲取結(jié)果集 //1. 創(chuàng)建Query對(duì)象// 方法里面寫HQL語(yǔ)句Query query = session.createQuery("from User");//2. 調(diào)用query方法得到結(jié)果List<User> userList = query.list();for (User user : userList) { System.out.println(user.toString());}/* -- 運(yùn)行結(jié)果 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(標(biāo)準(zhǔn))對(duì)象
不需要使用語(yǔ)句實(shí)現(xiàn)過(guò)程
創(chuàng)建Criteria對(duì)象
調(diào)用對(duì)象相應(yīng)的查詢方法//1. 創(chuàng)建Criteria對(duì)象Criteria criteria = session.createCriteria(User.class);//2. 調(diào)用對(duì)象方法得到結(jié)果List<User> userList = criteria.list();SQLQuery 對(duì)象
實(shí)現(xiàn)原始SQL查詢//1. 創(chuàng)建SQLQuery對(duì)象SQLQuery sqlQuery = session.createSQLQuery("select * from t_user");//2. 調(diào)用對(duì)象方法得到結(jié)果List<Object[]> list = sqlQuery.list();for (Object[] obj : list) { //將數(shù)組轉(zhuǎn)為字符串形式 String arrayToStr = Arrays.toString(obj); System.out.println(arrayToStr);}/* -- 運(yùn)行結(jié)果 -- Hibernate: select * from t_user [1, Jeff, 123456, 廣東茂名] [2, 李白, 123456, 廣東廣州] [3, 小馬, 123456, China]*/- SQLQuery對(duì)象的查詢方法未作處理時(shí)返回的是對(duì)象數(shù)組集實(shí)現(xiàn)返回結(jié)果集是對(duì)象的方法//1. 創(chuàng)建SQLQuery對(duì)象SQLQuery sqlQuery = session.createSQLQuery("select * from t_user");//得到返回對(duì)象的方法sqlQuery.addEntity(User.class);//2. 調(diào)用對(duì)象方法得到結(jié)果List<User> list = sqlQuery.list();新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注