Piszę aplet. Ma łączyć się z bazą danych za pomocą serwletu. Jak rozwiązać wymianę danych między klientem a serwerem?
Operacje na bazie na serwlecie:
- Pobierz uczniów z ID klasy i ocenami z każdego przedmiotu
- Pobierz przedmioty**
- Dodaj lub zmień ucznia
- Dodaj lub zmień klasę
- Dodaj lub zmień przedmiot
- Popraw uczniowi ocenę(y)
- Mogą być też inne, np. popraw oceny wielu uczniom
Tabele są następujące:
Uczniowie
- ID
- imie
- nazwisko
- ID_klasy
Klasy
- ID
- nazwa
Przedmioty
- ID
- nazwa
Oceny
- ID
- ID_ucznia
- ID_przedmiotu
- ocena
Na serwlecie wykorzystuję mechanizm Persistence. Przykładowo wszystkie dane o uczniach lądują do List<Uczen>.
EntityManagerFactory emf = Persistence.createEntityManagerFactory("DziennikPU");
EntityManager em = emf.createEntityManager();
q = em.createQuery("SELECT u FROM Uczen u");
List<Uczen> uczenList = q.getResultList();
ObjectOutputStream out = new ObjectOutputStream(response.getOutputStream());
out.writeObject(uczenList);
Skopiowałem obiekty Uczen, Ocena, Przedmiot, Klasa do projektu apletu i wyrzuciłem adnotacje. Niestety, przy próbie odbioru danych pojawia się błąd:
ObjectInputStream in = new ObjectInputStream(con.getInputStream());
uczenList = (List<Uczen>)in.readObject();
//java.lang.ClassNotFoundException: org.eclipse.persistence.indirection.IndirectList
Czy da się to naprawić?
Jaki format jest najlepszy do komunikacji między serwletem a apletem? XML, JSON, czysty tekst, inny format?