gpt4 book ai didi

java - 哪一种最高效-HQL

转载 作者:行者123 更新时间:2023-12-01 14:57:00 24 4
gpt4 key购买 nike

在 hibernate 中,例如我有两个具有关系的对象。物体是这样的

第一个对象:客户

@Entity
@Table(name = "customer", catalog = "test")
public class Customer implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private Set<CustomerController> customerControllers = new HashSet<CustomerController>(0);
public Customer() {
}
//getter & setter
}

第二个对象:CustomerController

@Entity
@Table(name = "customer_controller", catalog = "test")
public class CustomerController implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private Customer customer;
//constructor, getter & setter
}

我想选择某个客户的customer_controller。我通过两种方式得到它。第一种方式:

@Override
public List<CustomerController> customerController(int customerId){
Customer customer = (Customer) sessionFactory.getCurrentSession().get(Customer.class, customerId);
return customer.getCustomerControllers()
}

第二种方式:

 return (List<CustomerController>)sessionFactory.getCurrentSession().createQuery("SELECT O FROM CustomerController O WHERE O.customerId=:CONDITION")
.setParameter("CONDITION", customerId)
.list();

哪种方式最有效?为什么?谢谢。

最佳答案

确保更容易“打开”显示 SQL 参数并对其进行监控。

我想在first hibernate能够生成两个带有实体映射的SQL查询。在第二种情况下,应仅生成一个选择查询。

如果我们使用 FetchType.EAGER,则认为 Hibernate 将映射 CustomerCustomerController 实体。希望 Hibernate 仅使用 HQL 获取 CustomerController。确保您应该监控 Hibernate 行为。

关于java - 哪一种最高效-HQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14233425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com