Hibernate 执行原生SQL

本文详细介绍了在Hibernate框架中如何使用SQL和HQL进行数据查询,包括通过SessionFactory和HibernateTemplate获取Session,以及如何执行SQL和HQL语句。文章还解释了两种获取Session方法的区别,并提供了实例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们在使用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()) {}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值