JEE Optymalizacje

0

Witam
Zastanawiam się jak i czy jest możliwość zoptymalizowania pewnych operacj używając EntityManagera (i nie tylko)

1.Chodzi mi np o to jak najlepiej wykonać zapisanie (persist) np 2000 encji. Czy funkcja w stylu :

 
public void save(Foo foo, int object){
for(int i = 0 ; i <= object ; i++){
  //tutaj utworzenie oraz inicjalizacja obiektu np
 Foo foo = new Foo();
 foo.setName("name");
 entityManager.persist(foo)
}
}

Jest dobrym (odpowiednim) rozwiązaniem ??

2.Jak można zoptymalizować funkcje zliczania encji czyli wykonanie entityManager Select count(n) from NazwaKlasy.
Ja myślałem nad następującym rozwiązaniem o ile można coś takiego zrobić i jest to sensowne:
Wykonać zapytanie , następnie użyć jakiegoś narzędzia do cache np EhCahe, i odświeżać cache tylko w przypadku gdy ktoś doda lub usunie daną encję ?

Są to moje rozważania teoretyczne .. :) Proszę mi powiedzieć jeśli ktoś spotkał się z podobnymi problemami jak można i czy jest sens optymalizacji ?

0
  1. http://docs.oracle.com/javaee/6/api/javax/persistence/EntityManager.html#setFlushMode%28javax.persistence.FlushModeType%29
    z FlushModeType.COMMIT
    Pomoże to jednak jedynie, gdy tabela nie klucza z idenitity:
    http://stackoverflow.com/questions/2773302/jpa-hibernate-bulkbatch-insert

  2. Najprościej dać na zapytaniu zliczającym setCachable(true).
    Jest to ok, jeżeli ta liczba ma być jedynie orientacyjna.

0

Rozumiem dziękuję za odpowiedź
1.)Niestety Id będzie generowane przez hibernate

2)Wartość zwracana nie może być niestety orientacyjna (błąd podczas wyświetlania wyników na stronie):/

1 użytkowników online, w tym zalogowanych: 0, gości: 1