Привет, У меня проблема с медленной JPA. Использование jps для сопоставления модели очередей, моментальных снимков очередей и событий. Вот мои Сущности:JPA вручную создает @JoinTable
@Entity
@Table(name = "cmEvent")
public class Event implements Serializable {
private static final long serialVersionUID = -3252213465022678048L;
@Id
@Column(name = "eventId")
private long eventId;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "cmEventSnap",
joinColumns = @JoinColumn(name = "eventId"),
inverseJoinColumns = @JoinColumn(name = "snapshotId"))
private List<Snapshot> snapshots = new ArrayList<Snapshot>();
// setters & getters
}
@Entity
@Table(name = "cmSnapshot")
public class Snapshot implements Serializable {
private static final long serialVersionUID = -3892306246413539227L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "snapshotId")
private long snapshotId;
@ManyToMany(mappedBy = "snapshots", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<Event> events = new ArrayList<Event>();
// setters & getters
}
@Entity
@Table(name = "cmQueue")
public class Queue implements Serializable {
private static final long serialVersionUID = 2209454705341173802L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "queueId")
private long queueId;
@OneToMany(mappedBy = "queue", cascade = CascadeType.ALL)
private List<Snapshot> snapshots = new ArrayList<Snapshot>();
// setters & getters
}
Так что моя проблема сводится к тому, что JoinTable для событий Entity автоматически создается из JPA становится все довольно большим, и это становится все медленно, как проходит время.
Я, хотя и создаю индексы для этой таблицы в столбце eventsId.
Есть ли способ сделать это, используя аннотацию? Если нет, то как я могу вручную создать соединение с новым Entity?
Спасибо.
Вы используете Hibernate, Toplink, ...? –
@ ŁukaszRżanek Я использую jpa, но могу добавить Hibernate. – inglor
'@ Index' in не будет работать ни в простой JPA, ни в Hibernate. Вы можете вручную добавить индекс. –