Performance Hibernate映射性能
我有一个由hibernate4映射的简单对象,并像这样获取它们Performance Hibernate映射性能,performance,hibernate,orm,Performance,Hibernate,Orm,我有一个由hibernate4映射的简单对象,并像这样获取它们 Criteria crit = session.createCriteria(Entity.class); crit.add(Restrictions.in("id", ids)); System.out.println(crit.list().size()); 它可以获取大约2000个对象。纯SQL查询大约需要100毫秒。没有连接等,但在hibernate中大约需要4秒。因此,or映射/缓存等需要大量时间。有没有办法加快速度 你
Criteria crit = session.createCriteria(Entity.class);
crit.add(Restrictions.in("id", ids));
System.out.println(crit.list().size());
它可以获取大约2000个对象。纯SQL查询大约需要100毫秒。没有连接等,但在hibernate中大约需要4秒。因此,or映射/缓存等需要大量时间。有没有办法加快速度
你有什么建议
实体看起来像这样。我已经启用了sql日志记录,但是没有为许多人选择
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorFormula("type")
public abstract class Entity extends ResourceEntity implements Cloneable {
@Id
@NotNull
@GeneratedValue(strategy = GenerationType.AUTO)
@JsonProperty(value = "id")
private Integer id;
@NotNull
private Type type; //Enum
private Date expirationDate;
@NotNull
private boolean shared;
private int orderID;
@ManyToOne
private MaappedEntity me;
private String strinvar;
mh,即使使用简单的sql查询,hibernate似乎也很慢
SQLQuery sql = session.createSQLQuery("select * from Entity");
System.out.println(sql.list().size());
我们可以查看您实体的映射吗?您确定没有任何迫切需要获取的属性吗?这可能是问题所在。你说没有连接,但有。JPA表示,@ManyToOne协会被热切地吸引。实际上,最好的情况是在发送到数据库的查询中加入一个连接。最坏情况下,它意味着n+1选择。如果希望Entity.me是惰性的,则需要显式地将其映射为惰性。这也是JPA的要求。我正在使用hibernate,它并不急于获取,也没有额外的查询。Hibernate只提交一个查询,正如您在屏幕截图中所看到的,问题是每一列都是用nullSafeGet处理的。这是慢的部分