标量查询和实体查询之间有什么区别?

时间:2014-03-25 20:18:53

标签: hibernate

我正在从这个链接学习Hibernate Native SQL:

http://www.tutorialspoint.com/hibernate/hibernate_native_sql.htm

通过本教程,我仍然不知道标量查询和实体查询之间的区别。

在示例中,它们都返回一个列表。所以我认为任何Scalar查询都可以写成实体查询,反之亦然。是吗?

1 个答案:

答案 0 :(得分:1)

标量查询: - 就像一个普通的JDBC,您将在其中编写SQL查询,您将根据所需的列数据得到结果

Ex : - Select fname,lname,gender from person where fname="ex1";

Person.java(实体类)

personObj.setFname(fname);
personObj.setLname(lname);
personObj.setGender(gender);

在上面的查询中,您有三个值fname,lname,gender现在您可以单独处理这三个值,如果您为person创建了任何POJO类,那么您将逐个设置这些值。因此,您可以根据需要获得需要处理或解析的原始值,

实体查询: - 在实体查询的帮助下,您不需要通过SQL处理单个列返回,它将直接解析为您的Entitiy类(pojo类)。以前在标量查询中,您必须使用getter和setter来分配实体中的值,但在实体查询中,结果将自动解析为Entity类(POJO类)

String sql = "SELECT * FROM EMPLOYEE";
SQLQuery query = session.createSQLQuery(sql);
query.addEntity(Employee.class);

无需解析或用户的getter setter类Employee将自动拥有数据库中的值。