您的位置:首页 > 其它

Hibernate核心API的详解

2017-02-19 16:51 429 查看

Configuration

Configuration cfg = new Configuration();
cfg.configure();

1. 到src下面找到名称hibernate.cfg.xml配置文件,创建对象,把配置文件放到对象里面(加载配置文件)


SessionFactory(重点)

使用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;
}
}


Session

类似于jdbc中connection

调用session里面不同的方法实现crud操作

添加save()

更新update()

删除delete()

根据id查询get方法

session对象为单线程对象

session对象不能共用

Transaction

事务对象

提交和回滚

commit();

rollback();

概念

原子性、一致性、隔离性、持久性

实现查询的对象

Query 对象

使用此对象,不需要写sql语句,但需写HQL语句

SQL与HQL的区别

SQLHQL
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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate