Performance Hibernate映射性能

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映射/缓存等需要大量时间。有没有办法加快速度 你

我有一个由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映射/缓存等需要大量时间。有没有办法加快速度

你有什么建议

实体看起来像这样。我已经启用了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处理的。这是慢的部分