Java Persistance API (JPA) là m t giao di n chu n cho vi c l u tr d li u ch a trong c s d li u quan h . Giao di n này c ng cung c p các ph ng th c giao ti p v i d li u s d ng query,và t ng tác v i Database s d ng Transaction. App Engine Java SDK s d ng JPA 1.0 cho c s d li u c a App Engine. JPA là m t giao di n chu n cho vi c t ng tác v i c s d li u quan h nh ng App Engine Datastore không ph i là m t c s d li u quan h . Vì th , s có m t s ch c n ng c a JPA mà App Engine không h tr .
Hình 2.10 Mô Hình JPA
̇ C u Hình đ s d ng JPA trong GAE
• Nh ng file jar c a JPA và plugin DataNucleus c a App Engine ph i đ c đ t trong th m c war/WEB-INF/lib/
• T o file c u hình tên persistence.xml và đ t nó trong th m c war/WEB-INF/classes/META-INF/
• Khi biên d ch project ph i có m t b c biên d ch “đ c bi t” đ các l p d li u đ c biên d ch và k t h p chúng v i JPA.
Khi s d ng Eclipse plugin thì các b c này s đ c Eclise làm h cho chúng ta. Ho c qua các b c c u hình b ng tay, đ c đ c p d i đây. T o file persistence.xml
Hình 2.11 Mô Hình JPA trong Google App Engine
̇ Các tính n ng h tr c a JPA
JPA cung c p m t ngôn ng dùng đ truy v n d li u t ng t SQL g i là Java Persistence Query Language(JPQL). JPA c ng cung c p các t khóa gi ng JDO nh ng tên t khóa khác so v i JDO. khai báo m t class l u tr trong datastore v i JPA, ta thêm t khóa @Entity tr c khai báo l p. Các thu c tính trong class ph i thêm t khóa @basic tr c khai báo thu c tính. M t l p d li u ph i có m t khóa chính trong class. t o khóa chính ph i thêm t khóa @ID tr c khai báo thu c tính khóa chính. D li u t ng tác v i JPA qua đ i t ng EntityManager. l y v đ i t ng EntityManager chúng ta s d ng
̇ Các tính n ng không h tr c a JPA trong GAE
• Không th c hi n đ c câu l nh truy v n “Join” nh trong c s d li u quan h
• Các câu l nh truy v n t ng h p (group by, having, sum, avg, max, min)
• Không th truy v n t i l p con trong l p. M i l p đ c bi u di n b i m t lo i th c th riêng bi t trong Datastore