我一直在读一些水壶,但我仍然感到困惑.为什么?因为你提到的差异与绩效无关.它们与易用性有关.(Objetc(标准)和SQL(hql)).但我想知道"条件"是否因某种原因比hql慢.
我在另一个回答中读到了这个
"HQL和criteriaQuery之间的性能存在差异,每次使用criteriaQuery触发查询时,它都会为表名创建一个新别名,这不会反映在任何数据库的最后一个查询缓存中.这会导致开销编译生成的SQL,花费更多时间来执行." 作者:Varun Mehta.
这非常接近但是!我在另一个网站上阅读(http://gary-rowe.com/agilestack/tag/hibernate/)Hibernate 3.3及以上版本不再是这种情况(请阅读:9)Hibernate很慢,因为SQL生成的Criteria接口不一致)
我已经做了一些测试试图找出差异,但两者都生成qry并且它不会更改表的别名.
我很困惑.如果有人知道主要原因,请帮助我们.谢谢
我的Java应用程序使用JPA进行对象持久化.业务域非常简单(只有三个类是持久的,每个类有3-5个属性).查询也很简单.问题是我应该使用哪种方法:JPQL或Criteria API?
我已经看了JPA 2.0 Criteria API,但我发现它与Hibernate Criteria不同,太麻烦了.是否有充分的理由使用JPA 2.0 Criteria API而不是使用JPA-QL?感谢您的意见.
我想在hibernate Hql中的同一个查询中执行多个更新语句.如下:
hql = " update Table1 set prob1=null where id=:id1; "
+ " delete from Table2 where id =:id2 ";
...
query.executeUpdate();
Run Code Online (Sandbox Code Playgroud)
在同一个executeUpdate调用中,我想更新Table1中的记录并从Table2中删除记录.
那可能吗?
我是一个hibernate-beginner,在尝试使用hibernate加入2个表时遇到问题.我想要做的是根据商店ID获取某个商店的产品列表,但我得到的是每个商店下列出的数据库中所有可用产品的列表.
这是以下代码Product.java:
@Entity
@Table (name = "products")
public class Product implements Serializable{
/**
*
*/
private static final long serialVersionUID = -1001086120280322279L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column (name = "product_id")
private int product_id;
@Column(name = "product_name", unique=true)
private String product_name;
@JoinColumn(name = "store", referencedColumnName="store_id")
@ManyToOne(cascade=CascadeType.ALL)
private Store store;
Run Code Online (Sandbox Code Playgroud)
等等..
这是以下代码Store.java:
@Entity
@Table(name = "stores")
public class Store implements Serializable{
/**
*
*/
private static final long serialVersionUID = 4497252090404342019L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column (name = "store_id")
private int store_id; …Run Code Online (Sandbox Code Playgroud)