Hibernate学习(六)

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();
		}
	}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值