我们在使用Hibernate的时候,有时由于hql的局限性我们不得不使用SQL,Hibernate不仅支持Hql同时也支持sql。
我们可以通过HibernateDaoSupport的getSessionFactory()拿到我们需要的Session工厂
也可以通过getHibernateTemplate()获得
然后通过工厂获取一个Session
这里有两种方法。
1.getSessionFactory().openSession();
2.getSessionFactory().getCurrentSession();
两种方法的区别,第一种直接新创建一个Session,第二种是回去查下如果有就不会新建没有就新建。这种方法需要配置声明式事务。
下面就是执行方法
session.createSQLQuery(sql);
session.createQuery(hql)
第一种执行sql语句
第二种执行hql语句
在执行sql语句的时候我们需要声明下变量类型或者是对象(Hibernate3别的不知)
即
session.createSQLQuery(sql).addScalar(“ID”,Hibernate.LONG).list()
session.createSQLQuery(sql).addEntity(arg0).list()
上面的是用来声明变量类型
下面的是用来声明对象
当然我们可以拿到Connection等然后完全按照JDBC的方式来实现。
Connection conn = session.connection();
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, "argus");
rs = ps.executeQuery();
while (rs.next()) {}