SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
1 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License1 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
EclipseLink: From NoSQL to HTML5
Shaun Smith
shaun.smith@oracle.com
@shaunMsmith
2 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License2 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
About Me
§  Shaun Smith
–  Eclipse committer on EclipseLink and related projects
–  Oracle TopLink Product Manager
–  OO developer since 1987
§  “Old guy who knows Smalltalk” ;-)
3 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License3 EclipseLink: From NoSQL to 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
4 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License4 EclipseLink: From NoSQL to 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
5 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License5 EclipseLink: From NoSQL to 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 databases 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 each database
–  Zero portability across databases
6 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License6 EclipseLink: From NoSQL to 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
7 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License7 EclipseLink: From NoSQL to 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.
8 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License8 EclipseLink: From NoSQL to 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.
9 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License9 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Example MongoDB Mapped Entity
10 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License10 EclipseLink: From NoSQL to 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();
11 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License11 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Demo EclipseLink NoSQL
12 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License12 EclipseLink: From NoSQL to 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
13 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License13 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Composite Persistence Unit
Composite PU
Relational PU NoSQL PU
14 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License14 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Demo Polyglot Persistence
15 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License15 EclipseLink: From NoSQL to 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
16 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License16 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Binding Persistence
§  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
XML and JSON Binding
17 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License17 EclipseLink: From NoSQL to 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"
}
<?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>
18 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License18 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Challenges – Binding JPA Entities to XML/JSON
•  Bidirectional/Cyclical Relationships
•  Composite Keys/Embedded Key Classes
•  Byte Code Weaving
<customer>
<phone-numbers>
<phone-number>
<id>1</id>
...
<type>mobile</type>
</phone-number>
</phone-numbers>
</customer>
JPAJAXB
19 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License19 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Bidirectional Relationship
@Entity
public class Customer{
...
@OneToMany(mappedBy="owner")
private List<Phone> phones;
}
@Entity
public class Phone{
...
@ManyToOne
private Customer owner;
}
20 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License20 EclipseLink: From NoSQL to 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!
Customer Phone
<customer>
<phone-numbers>
<phone-number>
<id>1</id>
...
<type>mobile</type>
</phone-number>
</phone-numbers>
</customer>
Marshall
Customer Phone
Unmarshall
X
owner
phones phones
21 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License21 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
EclipseLink XmlInverseReference
@Entity
public class Customer{
...
@OneToMany(mappedBy=“owner")
private List<Phone> phones;
}
@Entity
public class Phone{
...
@ManyToOne
@XmlInverseReference(mappedBy=“phones")
private Customer owner;
}
22 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License22 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
EclipseLink XmlInverseReference
§  EclipseLink restores relationships on unmarshall!
<customer>
<phone-numbers>
<phone-number>
<id>1</id>
...
<type>mobile</type>
</phone-number>
</phone-numbers>
</customer>
Marshall
Customer Phone
owner
phones
Unmarshall
Customer Phone
owner
project
23 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License23 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Demo
JAXB/JPA Fidelity
JSON Binding
24 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License24 EclipseLink: From NoSQL to 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
25 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License25 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
JPA-RS
Browser
JAX-RS / JPA-RS
Binding Persistence
XML/JSON
Java
Database Persistence
Relational/NoSQL
Relational DB | NoSQL DB
HTTP
26 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License26 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
JPA-RS
JPA-RS
JAX-RS
Accounting PU Human Resources PUContracting PU
...
JPA
GET http://.../persistence/Accounting/Invoice/...
JPA-RS maps URI http://.../persistence/Accounting/
Invoice/...
to Accounting PU and Invoice entity
JAX-RS http://.../persistence/Accounting/Invoice/...
mapped to JPA-RS service
27 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License27 EclipseLink: From NoSQL to 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
28 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License28 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Resource Model
JPA Entity Model
Resource
Model
29 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License29 EclipseLink: From NoSQL to 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"
}
},
…
30 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License30 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Demo EclipseLink JPA-RS
31 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License31 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
EclipseLink Roadmap
EclipseLink 2.3
Indigo
•  Tenant Isolation
•  SINGLE_TABLE
•  Extensible
•  External
Metadata
•  Multiple DBs
•  Data Partitioning
2010 2011 2012 2013
EclipseLink 2.1
Helios
•  Query Extensions
•  TREAT AS
•  FUNC
•  Batch IN and
EXISTS
•  Attribute Group
•  Load
•  Fetch
•  Copy
•  Merge
•  eclispelink-
oxm.xml
•  Dynamic MOXy
EclipseLink 2.4
Juno
•  JSON Binding
•  JPA-RS
•  Tenant Isolation
•  Tenant per
Table/Schema
•  ALTER Schema
•  NoSQL
EclipseLink 2.5
Kepler
•  JPA 2.1
•  JPA-RS++…
32 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License32 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License
Summary
§  Java application needs are changing—and EclipseLink is evolving too!
§  Support for NoSQL and Polyglot Persistence
§  Support for building apps that go from Database to Browser
–  JSON Binding
–  JAXB/JPA Fidelity
–  JPA-RS automating RESTful persistence service

Weitere ähnliche Inhalte

Ähnlich wie EclipseLink: From NoSQL to HTML5 by Shaun Smith

Ed presents JSF 2.2 at a 2013 Gameduell Tech talk
Ed presents JSF 2.2 at a 2013 Gameduell Tech talkEd presents JSF 2.2 at a 2013 Gameduell Tech talk
Ed presents JSF 2.2 at a 2013 Gameduell Tech talkEdward Burns
 
Coding for desktop and mobile with HTML5 and Java EE 7 - Geertjan Wielenga
Coding for desktop and mobile with HTML5 and Java EE 7 - Geertjan WielengaCoding for desktop and mobile with HTML5 and Java EE 7 - Geertjan Wielenga
Coding for desktop and mobile with HTML5 and Java EE 7 - Geertjan WielengaJAXLondon_Conference
 
10 Building Blocks for Enterprise JavaScript
10 Building Blocks for Enterprise JavaScript10 Building Blocks for Enterprise JavaScript
10 Building Blocks for Enterprise JavaScriptGeertjan Wielenga
 
Best Practices for Interoperable XML Databinding with JAXB
Best Practices for Interoperable XML Databinding with JAXBBest Practices for Interoperable XML Databinding with JAXB
Best Practices for Interoperable XML Databinding with JAXBMartin Grebac
 
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache CalciteEnable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache CalciteVMware Tanzu
 
GlassFish Roadmap
GlassFish RoadmapGlassFish Roadmap
GlassFish Roadmapglassfish
 
O Mundo Oracle e o Que Há de Novo no Java
O Mundo Oracle e o Que Há de Novo no JavaO Mundo Oracle e o Que Há de Novo no Java
O Mundo Oracle e o Que Há de Novo no JavaBruno Borges
 
B1 roadmap to cloud platform with oracle web logic server-oracle coherence ...
B1   roadmap to cloud platform with oracle web logic server-oracle coherence ...B1   roadmap to cloud platform with oracle web logic server-oracle coherence ...
B1 roadmap to cloud platform with oracle web logic server-oracle coherence ...Dr. Wilfred Lin (Ph.D.)
 
Node.js and Oracle Database: New Development Techniques
Node.js and Oracle Database: New Development TechniquesNode.js and Oracle Database: New Development Techniques
Node.js and Oracle Database: New Development TechniquesChristopher Jones
 
Solution Use Case Demo: The Power of Relationships in Your Big Data
Solution Use Case Demo: The Power of Relationships in Your Big DataSolution Use Case Demo: The Power of Relationships in Your Big Data
Solution Use Case Demo: The Power of Relationships in Your Big DataInfiniteGraph
 
112815 java ee8_davidd
112815 java ee8_davidd112815 java ee8_davidd
112815 java ee8_daviddTakashi Ito
 
ODTUG_NoPlsql_vs_SmartDB_Part1_and_2.pptx
ODTUG_NoPlsql_vs_SmartDB_Part1_and_2.pptxODTUG_NoPlsql_vs_SmartDB_Part1_and_2.pptx
ODTUG_NoPlsql_vs_SmartDB_Part1_and_2.pptxToon Koppelaars
 
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache CalciteEnable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache CalciteChristian Tzolov
 
Ed presents JSF 2.2 and WebSocket to Gameduell.
Ed presents JSF 2.2 and WebSocket to Gameduell.Ed presents JSF 2.2 and WebSocket to Gameduell.
Ed presents JSF 2.2 and WebSocket to Gameduell.Edward Burns
 
Presente e Futuro: Java EE.next()
Presente e Futuro: Java EE.next()Presente e Futuro: Java EE.next()
Presente e Futuro: Java EE.next()Bruno Borges
 

Ähnlich wie EclipseLink: From NoSQL to HTML5 by Shaun Smith (20)

Ed presents JSF 2.2 at a 2013 Gameduell Tech talk
Ed presents JSF 2.2 at a 2013 Gameduell Tech talkEd presents JSF 2.2 at a 2013 Gameduell Tech talk
Ed presents JSF 2.2 at a 2013 Gameduell Tech talk
 
Imworld.ro
Imworld.roImworld.ro
Imworld.ro
 
Coding for desktop and mobile with HTML5 and Java EE 7 - Geertjan Wielenga
Coding for desktop and mobile with HTML5 and Java EE 7 - Geertjan WielengaCoding for desktop and mobile with HTML5 and Java EE 7 - Geertjan Wielenga
Coding for desktop and mobile with HTML5 and Java EE 7 - Geertjan Wielenga
 
10 Building Blocks for Enterprise JavaScript
10 Building Blocks for Enterprise JavaScript10 Building Blocks for Enterprise JavaScript
10 Building Blocks for Enterprise JavaScript
 
Session at Oredev 2016.
Session at Oredev 2016.Session at Oredev 2016.
Session at Oredev 2016.
 
Slovenian Oracle User Group
Slovenian Oracle User GroupSlovenian Oracle User Group
Slovenian Oracle User Group
 
Best Practices for Interoperable XML Databinding with JAXB
Best Practices for Interoperable XML Databinding with JAXBBest Practices for Interoperable XML Databinding with JAXB
Best Practices for Interoperable XML Databinding with JAXB
 
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache CalciteEnable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite
 
Cloud based database
Cloud based databaseCloud based database
Cloud based database
 
GlassFish Roadmap
GlassFish RoadmapGlassFish Roadmap
GlassFish Roadmap
 
O Mundo Oracle e o Que Há de Novo no Java
O Mundo Oracle e o Que Há de Novo no JavaO Mundo Oracle e o Que Há de Novo no Java
O Mundo Oracle e o Que Há de Novo no Java
 
B1 roadmap to cloud platform with oracle web logic server-oracle coherence ...
B1   roadmap to cloud platform with oracle web logic server-oracle coherence ...B1   roadmap to cloud platform with oracle web logic server-oracle coherence ...
B1 roadmap to cloud platform with oracle web logic server-oracle coherence ...
 
Node.js and Oracle Database: New Development Techniques
Node.js and Oracle Database: New Development TechniquesNode.js and Oracle Database: New Development Techniques
Node.js and Oracle Database: New Development Techniques
 
Solution Use Case Demo: The Power of Relationships in Your Big Data
Solution Use Case Demo: The Power of Relationships in Your Big DataSolution Use Case Demo: The Power of Relationships in Your Big Data
Solution Use Case Demo: The Power of Relationships in Your Big Data
 
112815 java ee8_davidd
112815 java ee8_davidd112815 java ee8_davidd
112815 java ee8_davidd
 
ODTUG_NoPlsql_vs_SmartDB_Part1_and_2.pptx
ODTUG_NoPlsql_vs_SmartDB_Part1_and_2.pptxODTUG_NoPlsql_vs_SmartDB_Part1_and_2.pptx
ODTUG_NoPlsql_vs_SmartDB_Part1_and_2.pptx
 
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache CalciteEnable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite
 
Ed presents JSF 2.2 and WebSocket to Gameduell.
Ed presents JSF 2.2 and WebSocket to Gameduell.Ed presents JSF 2.2 and WebSocket to Gameduell.
Ed presents JSF 2.2 and WebSocket to Gameduell.
 
Oracle NoSQL
Oracle NoSQLOracle NoSQL
Oracle NoSQL
 
Presente e Futuro: Java EE.next()
Presente e Futuro: Java EE.next()Presente e Futuro: Java EE.next()
Presente e Futuro: Java EE.next()
 

Mehr von Codemotion

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Codemotion
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyCodemotion
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaCodemotion
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserCodemotion
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Codemotion
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Codemotion
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Codemotion
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 - Codemotion
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Codemotion
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Codemotion
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Codemotion
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Codemotion
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Codemotion
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Codemotion
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Codemotion
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...Codemotion
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Codemotion
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Codemotion
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Codemotion
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Codemotion
 

Mehr von Codemotion (20)

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending story
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storia
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
 

Kürzlich hochgeladen

UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsSafe Software
 

Kürzlich hochgeladen (20)

UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
20150722 - AGV
20150722 - AGV20150722 - AGV
20150722 - AGV
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
 

EclipseLink: From NoSQL to HTML5 by Shaun Smith

  • 1. 1 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License1 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License EclipseLink: From NoSQL to HTML5 Shaun Smith shaun.smith@oracle.com @shaunMsmith
  • 2. 2 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License2 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License About Me §  Shaun Smith –  Eclipse committer on EclipseLink and related projects –  Oracle TopLink Product Manager –  OO developer since 1987 §  “Old guy who knows Smalltalk” ;-)
  • 3. 3 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License3 EclipseLink: From NoSQL to 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
  • 4. 4 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License4 EclipseLink: From NoSQL to 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
  • 5. 5 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License5 EclipseLink: From NoSQL to 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 databases 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 each database –  Zero portability across databases
  • 6. 6 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License6 EclipseLink: From NoSQL to 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
  • 7. 7 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License7 EclipseLink: From NoSQL to 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.
  • 8. 8 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License8 EclipseLink: From NoSQL to 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.
  • 9. 9 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License9 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License Example MongoDB Mapped Entity
  • 10. 10 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License10 EclipseLink: From NoSQL to 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();
  • 11. 11 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License11 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License Demo EclipseLink NoSQL
  • 12. 12 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License12 EclipseLink: From NoSQL to 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
  • 13. 13 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License13 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License Composite Persistence Unit Composite PU Relational PU NoSQL PU
  • 14. 14 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License14 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License Demo Polyglot Persistence
  • 15. 15 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License15 EclipseLink: From NoSQL to 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
  • 16. 16 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License16 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License Binding Persistence §  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 XML and JSON Binding
  • 17. 17 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License17 EclipseLink: From NoSQL to 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" } <?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>
  • 18. 18 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License18 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License Challenges – Binding JPA Entities to XML/JSON •  Bidirectional/Cyclical Relationships •  Composite Keys/Embedded Key Classes •  Byte Code Weaving <customer> <phone-numbers> <phone-number> <id>1</id> ... <type>mobile</type> </phone-number> </phone-numbers> </customer> JPAJAXB
  • 19. 19 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License19 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License Bidirectional Relationship @Entity public class Customer{ ... @OneToMany(mappedBy="owner") private List<Phone> phones; } @Entity public class Phone{ ... @ManyToOne private Customer owner; }
  • 20. 20 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License20 EclipseLink: From NoSQL to 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! Customer Phone <customer> <phone-numbers> <phone-number> <id>1</id> ... <type>mobile</type> </phone-number> </phone-numbers> </customer> Marshall Customer Phone Unmarshall X owner phones phones
  • 21. 21 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License21 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License EclipseLink XmlInverseReference @Entity public class Customer{ ... @OneToMany(mappedBy=“owner") private List<Phone> phones; } @Entity public class Phone{ ... @ManyToOne @XmlInverseReference(mappedBy=“phones") private Customer owner; }
  • 22. 22 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License22 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License EclipseLink XmlInverseReference §  EclipseLink restores relationships on unmarshall! <customer> <phone-numbers> <phone-number> <id>1</id> ... <type>mobile</type> </phone-number> </phone-numbers> </customer> Marshall Customer Phone owner phones Unmarshall Customer Phone owner project
  • 23. 23 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License23 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License Demo JAXB/JPA Fidelity JSON Binding
  • 24. 24 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License24 EclipseLink: From NoSQL to 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
  • 25. 25 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License25 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License JPA-RS Browser JAX-RS / JPA-RS Binding Persistence XML/JSON Java Database Persistence Relational/NoSQL Relational DB | NoSQL DB HTTP
  • 26. 26 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License26 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License JPA-RS JPA-RS JAX-RS Accounting PU Human Resources PUContracting PU ... JPA GET http://.../persistence/Accounting/Invoice/... JPA-RS maps URI http://.../persistence/Accounting/ Invoice/... to Accounting PU and Invoice entity JAX-RS http://.../persistence/Accounting/Invoice/... mapped to JPA-RS service
  • 27. 27 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License27 EclipseLink: From NoSQL to 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
  • 28. 28 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License28 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License Resource Model JPA Entity Model Resource Model
  • 29. 29 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License29 EclipseLink: From NoSQL to 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" } }, …
  • 30. 30 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License30 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License Demo EclipseLink JPA-RS
  • 31. 31 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License31 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License EclipseLink Roadmap EclipseLink 2.3 Indigo •  Tenant Isolation •  SINGLE_TABLE •  Extensible •  External Metadata •  Multiple DBs •  Data Partitioning 2010 2011 2012 2013 EclipseLink 2.1 Helios •  Query Extensions •  TREAT AS •  FUNC •  Batch IN and EXISTS •  Attribute Group •  Load •  Fetch •  Copy •  Merge •  eclispelink- oxm.xml •  Dynamic MOXy EclipseLink 2.4 Juno •  JSON Binding •  JPA-RS •  Tenant Isolation •  Tenant per Table/Schema •  ALTER Schema •  NoSQL EclipseLink 2.5 Kepler •  JPA 2.1 •  JPA-RS++…
  • 32. 32 Beyond Relational and NoSQL to Polyglot and HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License32 EclipseLink: From NoSQL to HTML5 | © 2013 Oracle and AGETO; Licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License Summary §  Java application needs are changing—and EclipseLink is evolving too! §  Support for NoSQL and Polyglot Persistence §  Support for building apps that go from Database to Browser –  JSON Binding –  JAXB/JPA Fidelity –  JPA-RS automating RESTful persistence service