使用Hibernate时的性能问题

时间:2014-03-24 04:45:11

标签: java mysql performance hibernate

我的查询需要连续运行大约200次,并且参数不同。查询(与Hibernate生成的相同)本身非常快(sub 1ms)但是每个查询的Hibernate开销为2-3 ms,大约为500 ms ......

即使我简化了查询并删除了所有参数,我也会使用Criteria或Named查询获得相同的结果。当使用简单的Session.get(Class,Id)时,获取同一个实体所需的时间不到1ms,因此我知道Hibernate能够足够快地从数据库中获取和创建对象。

数据库中只有一行,这需要3毫秒:

Criteria criteria = sessionFactory.getCurrentSession().createCriteria(TestEntity.class)
criteria.list();

虽然这需要0毫秒:

sessionFactory.getCurrentSession().get(TestEntity.class, 1);

这种开销的原因是什么?有什么方法吗?

运行:Hibernate 4.3.4.Final,Spring 4.0.2.RELEASE和MySQL 5.5.35。

编辑: 这是我正在测试的实体:

@Entity
@Table(name = "TEST")
public class TestEntity implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue
@Column(name = "ID", updatable = false, insertable = false)
public long id;

@Column(name = "VALUE")
public BigDecimal value;

public TestEntity() {
    super();
}

}

0 个答案:

没有答案