EclipseLink:

Beyond Relational and NoSQL to
Polyglot and HTML5
Shaun Smith
shaun.smith@oraclecom

1

Gunnar Wagenknecht
gunnar@wagenknecht.org

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
About Us
§  Shaun Smith
–  Eclipse committer on EclipseLink and related projects
–  Oracle TopLink Product Manager
–  OO developer since 1987, so I’m old enough to know Smalltalk ;)

§  Gunnar Wagenknecht
–  CTO @ AGETO
–  Committer and contributor @ Eclipse
–  Java since 1999; Eclipse since 2001

2

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Agenda—Database to Browser (and back again)
Browser
HTTP / REST
Binding Persistence
XML/JSON

Java
Database Persistence
Relational/NoSQL

Relational DB | NoSQL DB
3

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Agenda
Browser
HTTP / REST
Binding Persistence
XML/JSON

Java
Database Persistence
Relational/NoSQL

Relational DB | NoSQL DB
4

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
NoSQL Databases
§  EclipseLink is best known for relational persistence but…
§  NoSQL database are increasingly popular
§  No common definition (document, graph, columnar)
–  Differing feature sets
–  Some offer query language/API—some not

§  No standards
§  Every database offers a unique API
–  Cost in terms of learning
–  Zero portability across databases

5

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
EclipseLink NoSQL
§  Support JPA-style access to NoSQL databases
–  Leverage non-relational database support for JCA (and JDBC when

available)
§  Define annotations and XML to identify NoSQL stored entities (e.g.,

@NoSQL)
§  Support JPQL subset for each
–  Key principal: leverage what’s available

§  Initial support for MongoDB and Oracle NoSQL.
§  Support mixing relational and non-relational data in single composite

persistence unit (“polyglot persistence”)
6

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Applicability of JPA to NoSQL
§  Core JPA concepts apply to NoSQL:
–  Persistent Entities, Embeddables, ElementCollection, OneToOne,

OneToMany, ManyToOne, Version, etc.
§  Some concepts apply with some databases:
–  JPQL, NamedNativeQuery

§  Pure relational concepts don’t apply:
–  CollectionTable, Column, SecondaryTable,

SequenceGenerator, TableGenerator, etc.

7

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Querying NoSQL with JPA
§  Two kinds of queries
–  JQPL—portable query language defined by the spec
–  Native query—lets you leverage database specific features
–  Dynamic or static @NamedQuery

§  JPQL translated to underlying database query framework.

8

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Example MongoDB Mapped Entity

9

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
MongoDB Query Examples
§  JPQL
	
  	
  Select

o from Order o
where o.totalCost > 1000

Select o from Order o
join o.orderLines l where l.cost > :cost

§  Native Queries
	
  	
  query

= em.createNativeQuery(
"db.ORDER.findOne({"_id":"" +
oid + ""})", Order.class);

Order order =
(Order) query.getSingleResult();
10

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Demo EclipseLink NoSQL

11

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
“…we are gearing up for a shift to polyglot persistence - where any
decent sized enterprise will have a variety of different data storage
technologies for different kinds of data…we'll be first asking how
we want to manipulate the data and only then figuring out what
technology is the best bet for it..”
Martin Fowler
ThoughtWorks

12

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Composite Persistence Unit
Composite PU

Relational PU

13

NoSQL PU

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Demo Polyglot Persistence

14

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Agenda
Browser
HTTP / REST
Binding Persistence
XML/JSON

Java
Database Persistence
Relational/NoSQL

Relational DB | NoSQL DB
15

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Binding Persistence
XML and JSON Binding
§  EclipseLink implements
–  JAXB for Java/XML binding—covert Java to/from XML
–  Java/JSON binding—convert Java to/from JSON

§  Currently no Java/JSON binding standard
–  Java API for JSON Processing (JSR 535) is parsing, not binding

§  EclipseLink interprets JAXB XML bindings for JSON
–  Content-type selectable by setting property on Marshaller/Unmarshaller

16

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
XML and JSON from JAXB Mappings

{
"phone-numbers" : [ {
"id" : 2,
"num" : "512-555-9999",
"type" : "mobile"
} ],
"address" : {
"city" : "New York",
"id" : 1,
"street" : "Central Park
East"
},
"firstName" : "Woody",
"id" : 1,
"lastName" : “Allen"
}

17

<?xml version="1.0"
encoding="UTF-8"?>
<customer>
<phone-numbers>
<phone-number>
<id>2</id>
<num>512-555-1234</num>
<type>home</type>
</phone-number>
</phone-numbers>
<address>
<city>New York</city>
<id>1</id>
<street>Central Park East</street>
</address>
<firstName>Bill</firstName>
<id>1</id>
<lastName>Allen</lastName>
</customer>

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Challenges – Binding JPA Entities to XML/JSON
<?xml version="1.0" ?>
<employee>
<first>Mark</first>
<last>Twain</last>
<id>1</id>
</employee>

JAXB

JPA

•  Bidirectional/Cyclical Relationships
•  Composite Keys/Embedded Key Classes
•  Byte Code Weaving

18

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Bidirectional Relationship
@Entity
public class Project{
...
@OneToMany(mappedBy=“project")
private List<Employee> members;
}
@Entity
public class Employee{
...
@ManyToOne
private Project project;
}

19

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Bidirectional Relationships in JAXB
§  JAXB specification does not support bidirectional relationships. One

side must be marked @XmlTransient.
§  But that loses the relationship!

members

Employee
project

20

Project

<?xml version="1.0" ?>
<employee>
<first>Mark</first>
<last>Twain</last>
<id>1</id>
</employee>

Marshall

Unmarshall

X

Employee

Project

project

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
EclipseLink XmlInverseReference

21

@Entity
public class Project{
...
@OneToMany(mappedBy=“project")
private List<Employee> members;
}
@Entity
public class Employee{
...
@ManyToOne
@XmlInverseReference(mappedBy=“members")
private Project project;
}

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
EclipseLink XmlInverseReference
§  EclipseLink restores relationships on unmarshall!

members

members

Employee

Project

project

Marshall

22

<?xml version="1.0" ?>
<employee>
<first>Mark</first>
<last>Twain</last>
<id>1</id>
</employee>

Employee

Project

project

Unmarshall

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Demo
JAXB/JPA Fidelity
JSON Binding

23

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Agenda
Browser
HTTP / REST
Binding Persistence
XML/JSON

Java
Database Persistence
Relational/NoSQL

Relational DB | NoSQL DB
24

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
JPA-RS
Browser
HTTP
Binding Persistence
XML/JSON

JAX-RS / JPA-RS
Java
Database Persistence
Relational/NoSQL

Relational DB | NoSQL DB
25

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
JPA-RS

GET http://.../persistence/Accounting/Invoice/...
JAX-RS http://.../persistence/Accounting/Invoice/...
JAX-RS
mapped to JPA-RS service
JPA-RS
JPA-RS maps URI http://.../persistence/Accounting/

Accounting PU

Invoice/...
to Accounting PU and Invoice entityPU
Contracting PU
Human Resources
...

JPA

26

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
JPA-RS Features
§  Access relational data through REST with JSON or XML
§  Provides REST operations for entities in persistence unit (GET, PUT,

POST, DELETE)
§  Automatic generation of XML and JSON bindings
§  Supports invocation of named queries via HTTP
§  Server Caching—EclipseLink clustered cache
§  Dynamic Persistence also supported

–  Entities defined via metadata—no Java classes required
–  Enables persistence services for HTML 5/JavaScript applications

27

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Resource Model & Links
{
"firstName": "Frank",
"gender": "Male",
"id": 1,
"lastName": "Smith",
"responsibilities": [],
"salary": 1,
"version": 13,
"address": {
"_link": {
"href": "http://localhost:7001/employee.web-js/persistence/employee/entity/Address/18",
"method": "GET",
"rel": "self"
}
},
…
28

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Demo EclipseLink JPA-RS

29

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Releases & Roadmap
2010
EclipseLink 2.1
Helios
•  Query Extensions
•  TREAT AS
•  FUNC
•  Batch IN and
EXISTS
•  Attribute Group
•  Load
•  Fetch
•  Copy
•  Merge
•  eclispelinkoxm.xml
•  Dynamic MOXy

30

2011

2012

2013

EclipseLink 2.3
Indigo

EclipseLink 2.4
Juno

EclipseLink 2.5
Kepler

•  Tenant Isolation

•  JSON Binding
•  JPA-RS
•  Tenant Isolation
•  Tenant per
Table/Schema
•  ALTER Schema
•  NoSQL

•  JPA 2.1
•  JPA-RS++ …

•  SINGLE_TABLE

•  Extensible
•  External
Metadata
•  Multiple DBs
•  Data Partitioning

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Summary
§  Java is evolving—and EclipseLink is evolving too!
–  JSON Binding
–  JAXB/JPA Fidelity
–  JPA-RS
–  NoSQL
–  Polyglot Persistence

31

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
32

Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License

EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5

  • 1.
    EclipseLink: Beyond Relational andNoSQL to Polyglot and HTML5 Shaun Smith shaun.smith@oraclecom 1 Gunnar Wagenknecht gunnar@wagenknecht.org Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 2.
    About Us §  ShaunSmith –  Eclipse committer on EclipseLink and related projects –  Oracle TopLink Product Manager –  OO developer since 1987, so I’m old enough to know Smalltalk ;) §  Gunnar Wagenknecht –  CTO @ AGETO –  Committer and contributor @ Eclipse –  Java since 1999; Eclipse since 2001 2 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 3.
    Agenda—Database to Browser(and back again) Browser HTTP / REST Binding Persistence XML/JSON Java Database Persistence Relational/NoSQL Relational DB | NoSQL DB 3 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 4.
    Agenda Browser HTTP / REST BindingPersistence XML/JSON Java Database Persistence Relational/NoSQL Relational DB | NoSQL DB 4 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 5.
    NoSQL Databases §  EclipseLinkis best known for relational persistence but… §  NoSQL database are increasingly popular §  No common definition (document, graph, columnar) –  Differing feature sets –  Some offer query language/API—some not §  No standards §  Every database offers a unique API –  Cost in terms of learning –  Zero portability across databases 5 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 6.
    EclipseLink NoSQL §  SupportJPA-style access to NoSQL databases –  Leverage non-relational database support for JCA (and JDBC when available) §  Define annotations and XML to identify NoSQL stored entities (e.g., @NoSQL) §  Support JPQL subset for each –  Key principal: leverage what’s available §  Initial support for MongoDB and Oracle NoSQL. §  Support mixing relational and non-relational data in single composite persistence unit (“polyglot persistence”) 6 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 7.
    Applicability of JPAto NoSQL §  Core JPA concepts apply to NoSQL: –  Persistent Entities, Embeddables, ElementCollection, OneToOne, OneToMany, ManyToOne, Version, etc. §  Some concepts apply with some databases: –  JPQL, NamedNativeQuery §  Pure relational concepts don’t apply: –  CollectionTable, Column, SecondaryTable, SequenceGenerator, TableGenerator, etc. 7 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 8.
    Querying NoSQL withJPA §  Two kinds of queries –  JQPL—portable query language defined by the spec –  Native query—lets you leverage database specific features –  Dynamic or static @NamedQuery §  JPQL translated to underlying database query framework. 8 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 9.
    Example MongoDB MappedEntity 9 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 10.
    MongoDB Query Examples § JPQL    Select o from Order o where o.totalCost > 1000 Select o from Order o join o.orderLines l where l.cost > :cost §  Native Queries    query = em.createNativeQuery( "db.ORDER.findOne({"_id":"" + oid + ""})", Order.class); Order order = (Order) query.getSingleResult(); 10 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 11.
    Demo EclipseLink NoSQL 11 BeyondRelational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 12.
    “…we are gearingup for a shift to polyglot persistence - where any decent sized enterprise will have a variety of different data storage technologies for different kinds of data…we'll be first asking how we want to manipulate the data and only then figuring out what technology is the best bet for it..” Martin Fowler ThoughtWorks 12 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 13.
    Composite Persistence Unit CompositePU Relational PU 13 NoSQL PU Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 14.
    Demo Polyglot Persistence 14 BeyondRelational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 15.
    Agenda Browser HTTP / REST BindingPersistence XML/JSON Java Database Persistence Relational/NoSQL Relational DB | NoSQL DB 15 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 16.
    Binding Persistence XML andJSON Binding §  EclipseLink implements –  JAXB for Java/XML binding—covert Java to/from XML –  Java/JSON binding—convert Java to/from JSON §  Currently no Java/JSON binding standard –  Java API for JSON Processing (JSR 535) is parsing, not binding §  EclipseLink interprets JAXB XML bindings for JSON –  Content-type selectable by setting property on Marshaller/Unmarshaller 16 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 17.
    XML and JSONfrom JAXB Mappings { "phone-numbers" : [ { "id" : 2, "num" : "512-555-9999", "type" : "mobile" } ], "address" : { "city" : "New York", "id" : 1, "street" : "Central Park East" }, "firstName" : "Woody", "id" : 1, "lastName" : “Allen" } 17 <?xml version="1.0" encoding="UTF-8"?> <customer> <phone-numbers> <phone-number> <id>2</id> <num>512-555-1234</num> <type>home</type> </phone-number> </phone-numbers> <address> <city>New York</city> <id>1</id> <street>Central Park East</street> </address> <firstName>Bill</firstName> <id>1</id> <lastName>Allen</lastName> </customer> Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 18.
    Challenges – BindingJPA Entities to XML/JSON <?xml version="1.0" ?> <employee> <first>Mark</first> <last>Twain</last> <id>1</id> </employee> JAXB JPA •  Bidirectional/Cyclical Relationships •  Composite Keys/Embedded Key Classes •  Byte Code Weaving 18 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 19.
    Bidirectional Relationship @Entity public classProject{ ... @OneToMany(mappedBy=“project") private List<Employee> members; } @Entity public class Employee{ ... @ManyToOne private Project project; } 19 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 20.
    Bidirectional Relationships inJAXB §  JAXB specification does not support bidirectional relationships. One side must be marked @XmlTransient. §  But that loses the relationship! members Employee project 20 Project <?xml version="1.0" ?> <employee> <first>Mark</first> <last>Twain</last> <id>1</id> </employee> Marshall Unmarshall X Employee Project project Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 21.
    EclipseLink XmlInverseReference 21 @Entity public classProject{ ... @OneToMany(mappedBy=“project") private List<Employee> members; } @Entity public class Employee{ ... @ManyToOne @XmlInverseReference(mappedBy=“members") private Project project; } Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 22.
    EclipseLink XmlInverseReference §  EclipseLinkrestores relationships on unmarshall! members members Employee Project project Marshall 22 <?xml version="1.0" ?> <employee> <first>Mark</first> <last>Twain</last> <id>1</id> </employee> Employee Project project Unmarshall Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 23.
    Demo JAXB/JPA Fidelity JSON Binding 23 BeyondRelational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 24.
    Agenda Browser HTTP / REST BindingPersistence XML/JSON Java Database Persistence Relational/NoSQL Relational DB | NoSQL DB 24 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 25.
    JPA-RS Browser HTTP Binding Persistence XML/JSON JAX-RS /JPA-RS Java Database Persistence Relational/NoSQL Relational DB | NoSQL DB 25 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 26.
    JPA-RS GET http://.../persistence/Accounting/Invoice/... JAX-RS http://.../persistence/Accounting/Invoice/... JAX-RS mappedto JPA-RS service JPA-RS JPA-RS maps URI http://.../persistence/Accounting/ Accounting PU Invoice/... to Accounting PU and Invoice entityPU Contracting PU Human Resources ... JPA 26 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 27.
    JPA-RS Features §  Accessrelational data through REST with JSON or XML §  Provides REST operations for entities in persistence unit (GET, PUT, POST, DELETE) §  Automatic generation of XML and JSON bindings §  Supports invocation of named queries via HTTP §  Server Caching—EclipseLink clustered cache §  Dynamic Persistence also supported –  Entities defined via metadata—no Java classes required –  Enables persistence services for HTML 5/JavaScript applications 27 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 28.
    Resource Model &Links { "firstName": "Frank", "gender": "Male", "id": 1, "lastName": "Smith", "responsibilities": [], "salary": 1, "version": 13, "address": { "_link": { "href": "http://localhost:7001/employee.web-js/persistence/employee/entity/Address/18", "method": "GET", "rel": "self" } }, … 28 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 29.
    Demo EclipseLink JPA-RS 29 BeyondRelational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 30.
    Releases & Roadmap 2010 EclipseLink2.1 Helios •  Query Extensions •  TREAT AS •  FUNC •  Batch IN and EXISTS •  Attribute Group •  Load •  Fetch •  Copy •  Merge •  eclispelinkoxm.xml •  Dynamic MOXy 30 2011 2012 2013 EclipseLink 2.3 Indigo EclipseLink 2.4 Juno EclipseLink 2.5 Kepler •  Tenant Isolation •  JSON Binding •  JPA-RS •  Tenant Isolation •  Tenant per Table/Schema •  ALTER Schema •  NoSQL •  JPA 2.1 •  JPA-RS++ … •  SINGLE_TABLE •  Extensible •  External Metadata •  Multiple DBs •  Data Partitioning Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 31.
    Summary §  Java isevolving—and EclipseLink is evolving too! –  JSON Binding –  JAXB/JPA Fidelity –  JPA-RS –  NoSQL –  Polyglot Persistence 31 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
  • 32.
    32 Beyond Relational andNoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License