Hibernate绑定session
1 session类似于jdbc的connection,之前web阶段学过threadLocal
2 帮实现与本地线程绑定session
3 获取与本地线程session
(1)在hibernate核心配置文件(hibernate.cfg.xml)配置
<!-- 在hiabernate核心配置文件中配置 -->
<property name="hibernate.current_session_context_class">thread</property>
(2)调用sessionFactory里面的方法得到
public static Session getSessionObject() {
return sessionFactory.getCurrentSession();
}
4 获取与本地线程绑定session时候,关闭session报错,不需要手动关闭了。如果手动则报错如下:
Query对象查询所有记录
Query对象
1 使用query对象,不需要写sql语句,但是写hql语句。
(1)hql:hibernate query language,hibernate提供查询语言,这个hql语句和普通sql语句很相似
(2)hql和sql语句的差别
使用sql操作表和表字段
使用hql操作实体类和属性
2 查询所有的hql语句
(1)from 实体类名称
3 Query对象的使用
(1)创建Query对象
(2)调用query对象里面的方法得到结果。
Criterica对象
1 使用这个对象进行查询操作,但是使用这个对象时候,不需要写语句,直接调用方法实现
2 实现过程
(1)创建criteria对象
(2)调用对象里面的方法
//使用Criteria对象
@Test
public void testCriteria() {
SessionFactory sessionFactory=null;
Session session=null;
Transaction tx=null;
try {
sessionFactory=HibernateUtils.getSessionFactory();
session=sessionFactory.openSession();
tx=session.beginTransaction();
//1 创建criteria对象
//方法里面的参数是实体类class
Criteria c=session.createCriteria(User.class);
List<User> list=c.list();
for(User user : list) {
System.out.println(user);
}
tx.commit();
}
catch(Exception e){
tx.rollback();
}finally {
session.close();
sessionFactory.close();
}
}
SQLQuery对象
1 使用hibernate时候,也可以使用底层sql实现
2 实现过程
(1)创建对象
(2)调用对象的方法得到结果
//使用SQLSQLQuery对象
@Test
public void testQuery() {
SessionFactory sessionFactory=null;
Session session=null;
Transaction tx=null;
try {
sessionFactory=HibernateUtils.getSessionFactory();
session=sessionFactory.openSession();
tx=session.beginTransaction();
//1 创建SQLQuery对象
//参数 普通sql语句
SQLQuery sqlQuery=session.createSQLQuery("select * from t_user");
List<Object[]> list=sqlQuery.list();
for(Object[] objects : list) {
System.out.println(Arrays.toString(objects));
}
tx.commit();
}
catch(Exception e){
tx.rollback();
}finally {
session.close();
sessionFactory.close();
}
}
返回list几何每部分是数组。
返回list中每部分是对象形式。
@Test
public void testQuery() {
SessionFactory sessionFactory=null;
Session session=null;
Transaction tx=null;
try {
sessionFactory=HibernateUtils.getSessionFactory();
session=sessionFactory.openSession();
tx=session.beginTransaction();
//1 创建SQLQuery对象
//参数 普通sql语句
SQLQuery sqlQuery=session.createSQLQuery("select * from t_user");
//返回的list中每部分是对象形式
sqlQuery.addEntity(User.class);
//调用sqlQuery里面的方法
List<User> list=sqlQuery.list();
for(User user : list) {
System.out.println(user);
}
/* List<Object[]> list=sqlQuery.list();
for(Object[] objects : list) {
System.out.println(Arrays.toString(objects));
}*/
tx.commit();
}
catch(Exception e){
tx.rollback();
}finally {
session.close();
sessionFactory.close();
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/1333f18748fba8367cf7470893d2afe1.png)