1

私は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());

ここに画像の説明を入力

4

0 に答える 0