私はhibernate4によってマップされた単純なオブジェクトを持っていて、このようにそれらをフェッチします
Criteria crit = session.createCriteria(Entity.class);
crit.add(Restrictions.in("id", ids));
System.out.println(crit.list().size());
約 2000 個のオブジェクトをフェッチします。純粋な SQL クエリには約 100 ミリ秒かかります。ジョインなどはありませんが、休止状態では約4秒かかります。そのため、or-mapping/caching などには多くの時間がかかります。それをスピードアップする方法はありますか?
何を提案できますか?
実体はこんな感じ。SQL ロギングを有効にしましたが、熱心に ManyToOne の選択がありません
@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 クエリでも休止状態が遅いようです
SQLQuery sql = session.createSQLQuery("select * from Entity");
System.out.println(sql.list().size());