Red5 + Flex + JPA – mapowanie encji
Udało mi się zamapować klasę Java (reprezentującą encję JPA) do klasy Flash AS3. Serwerem jest RED5, protokołem RTMP, kodowanie obiektów AMF0. Miałem dwa problemy:
- wybór dostawcy JPA,
- typ Number we Flashu,
Zacząłem od OpenJPA. Napotkałem na następujący problem. Obiekty klas Java nie zawsze były mapowane do odpowiedników AS3. Otóż gdy OpenJPA pobiera encje z bazy to zwraca klasy Proxy dziedziczące po klasach encji. RED5 nie potrafi sobie z tym poradzić, i nie wie jak ma mapować klasy Proxy dla Flasha. Doraźnym rozwiązaniem problemu jest wybór innego dostawcy JPA – Hibernate. Fajnie, że tak można.
Drugi problem, to mapowanie typu Number. Typ Number występuje w Flashu i teoretycznie nie należy mu przypisywać wartości NULL. Gdy ustawię w Flashu typ Number na NULL i wyślę go do serwera RED5, to w Javie otrzymam 0 (zero) – prawie to samo a działa bardzo źle. Doraźnym rozwiązaniem problemu jest dla mnie zastąpienie typu Number typem String w klasach AS3.