Hiberante4 原生SQL查询 例子
By:Roy.LiuLast updated:2014-01-16
用hibernate4, 完全用ORM 做项目,原则上可以,其实有时候没有必要, 我见过有的项目为了取一个表的一条数据,而且只有一个字段的查询,居然也用hibernate 去做,更绝的是,这个查询里面还配置了 one to many 等关联,而且FetchType也不是lazy, 有必要这么做吗?我不是完全否决hibernate ,但用查询的时候,要注意什么时候该用Hibernate orM 去查,什么时候该自己去写 native sql 去查。
Hibernate4 native sql 查询其实很简单, 在前面的例子基础上,继续测试, 前面的例子可以参考这里,因为用到里面的数据表以及一些基本配置:
参考一:Hibernate4 mysql 采用XML 配置方式入门例子
参考一: Hibernate4 一对一双向主键关联测试例子
本例子用到的环境基本一样,唯一的区别在于测试类不同,原生SQL的测试类如下;
查看结果,可以看到hibernate native sql 正确的工作了,但请注意,在程序中用到了 .addEntity(Stock.class) ,如果没有这句话,那么程序的写法又不一样了。参考下面的例子:
这个时候,Hibernate 返回的是一个 List
Hibernate4 native sql 查询其实很简单, 在前面的例子基础上,继续测试, 前面的例子可以参考这里,因为用到里面的数据表以及一些基本配置:
参考一:Hibernate4 mysql 采用XML 配置方式入门例子
参考一: Hibernate4 一对一双向主键关联测试例子
本例子用到的环境基本一样,唯一的区别在于测试类不同,原生SQL的测试类如下;
package com.yihaomen.hibernate4.test;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import com.yihaomen.hibernate.domain.Stock;
import com.yihaomen.hibernate.util.HibernateUtil;
public class AppTest
{
public static void main( String[] args )
{
System.out.println("Hibernate + MySQL");
Session session = HibernateUtil.getSessionFactory().openSession();
//session.beginTransaction();
Query query = session.createSQLQuery(
"select * from stock s where s.STOCK_CODE = :stockCode")
.addEntity(Stock.class)
.setParameter("stockCode", "4715");
List result = query.list();
for(Stock stock : result){
System.out.println((stock.getStockName()));
}
//session.getTransaction().commit();
}
}
查看结果,可以看到hibernate native sql 正确的工作了,但请注意,在程序中用到了 .addEntity(Stock.class) ,如果没有这句话,那么程序的写法又不一样了。参考下面的例子:
public static void main( String[] args )
{
System.out.println("Hibernate + MySQL");
Session session = HibernateUtil.getSessionFactory().openSession();
Query query = session.createSQLQuery(
"select * from stock s where s.STOCK_CODE = :stockCode")
.setParameter("stockCode", "4715");
List result = query.list();
for(Object stock : result){
Object[] tmp = (Object[])stock;
System.out.println(tmp[0].toString());
}
}
这个时候,Hibernate 返回的是一个 List
Previous:django 一次性上传多个文件, 批量上传

COMMENTS