Stefan Evert, IMS - Uni Stuttgart Brigitte Krenn, ÖFAI Wien IMS Association Measures.
Javantura v2 - Morphia - painfree JPA for MongoDB - Philipp Krenn
-
Upload
hujak-hrvatska-udruga-java-korisnika-croatian-java-user-association -
Category
Technology
-
view
528 -
download
1
description
Transcript of Javantura v2 - Morphia - painfree JPA for MongoDB - Philipp Krenn
MorphiaJPA for MongoDB
Philipp Krenn@xeraa
Who uses
JPA?
Who uses
MongoDB?
Who uses
Morphia?
Like JPA for MongoDB
...but better
@OneToMany(mappedBy = "destCustomerId")@ManyToMany@Fetch(FetchMode.SUBSELECT)@JoinTable(name = "customer_dealer_map", joinColumns = { @JoinColumn(name = "customer_id", referencedColumnName = "id")}, inverseJoinColumns = { @JoinColumn(name = "dealer_id", referencedColumnName = "id")})private Collection<Client> dealers;
Relations vs Objects
MongoDB
Table = CollectionSchemaless
Row = DocumentJSON
{ "name": "Philipp", "isAlive": true, "age": 30, "height_cm": 181.5, "address": { "city": "Vienna", "postalCode": "1190" }, "phoneNumbers": [ { "type": "mobile", "number": "+43 123 4567890" } ], "children": []}
Morphia
Object-Document Mapping
POJO + AnnotationsObject-Relational Mapping
FeaturesLightweight
Type safe & preserving
Required librarieshttps://github.com/mongodb/
mongo-java-driver (2.12.4)+
https://github.com/mongodb/morphia (0.108)
Show me some codehttps://github.com/xeraa/
morphia-demo
TODO: final class diagram
Annotations
@Entity
@Entity( value = "company", noClassnameStored = true)public class CompanyEntity {
Tip: Avoid dashes in the collection name
Queries
Patterns
Base Class
Converters
Auto Increments
Encryption
Future