Google App Engine pilvipalvelu ja Java EE 6, osa 2

Jahas, seuraava episodi pilvipalveluiden opiskelussa. Virittelin Maven 3 projektin siten että sen ohella että pilvipalveluiden Hello World onnistuu, myös JSF 2.0 ja JPA on tuettuna. Näin on mahdollista tehdä Solakka Java-periaatteiden mukaan hyvinkin nopeasti ja helposti yksikkötestattavaa sovelluskoodia. Samalla kävi ilmi myös Google App Engine JPA:n rajoitukset:

– JPA 1.0 on tuettuna, JPA 2.0 ei ole (ainakaan nyt). Erona on lähinnä piirteet joita en muutenkaan käyttäisi, Criteria Query on yksi niistä.
– Alla oleva DataNucleus engine EI ole relaatiotietokanta, vaan se on NoSQL kanta, joten kaikki JPA piirteet eivät toimi ollenkaan, esim.
– Many-to-Many ei toimi,
– Join kyselyt eivät toimi (lapsi-entiteetin kenttiä ei voi käyttää hakuehtoina),
– group by, having, sum, avg, max, min ei toimi
– polymorfiset kyselyt eivät toimi

Aika tyly lista rajoituksia, siis. Kuitenkin.. Kaikki nuo piirteet tulevat relaatiokantateorian puolelta, ja tässä meillä on uuden ajan kanta jota käytetään uudella tapaa. Aika näyttää riittääkö siinä rahkeet, mutta hieman pitää suunnittelua miettiä tarkemmin.

Aluksi oli hieman ongelmia sen kanssa että mitä kirjastoja tarvitaan, ja puuttuvat kirjastot antoivat kryptisiä virheilmoituksia. Hyvä myös huomata että  DataNucleus käyttää bytekoodin vahvistamista, eli tarvitaan post-processor plugin maveniin kääntäjän lisäksi. Lisäksi CDI:n ja injektioiden sijaan pelasin toistaiseksi varman päälle ja en käyttänyt niitä, vaan EntityManagerFactory saadaan singletonilta, ja annotaatioissa käytin JSF:n omia ManagedBean jne annotaatioita, enkä CDI:n Named ja Inject annotaatioita. Jatkossa tarkoitus muokata ympäristöstä parempaa, mutta nyt se näyttäisi toimivan kivasti, ja App Enginestä löytyy jopa työkalut joilla voi tarkastella logeja ja tietokannan sisältöä.

Lueksin että Spring framework toimii ongelmattomammin App Enginessä, ja JDO on JPA:ta luontevampi rajapinta tässä tapauksessa, kun kanta ei olekaan relaatiokanta. Mutta itselleni tärkeämpää on standardoidut rajapinnat ja ydinstandardit ohi kolmannen osapuolen frameworkien, eli katsotaan miten tässä käy.

Advertisements

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s