SlideShare a Scribd company logo
1 of 53
1999 S Bascom Avenue, Suite 700
Campbell, CA 95008, USA
Phone: +1-408-282-3606
Email: dperiwal@softwaretree.com
URL: http://www.softwaretree.com
Drives the Complexity out of Database Integration
on the Android Platform
(c) 2015 Software Tree, LLC.
By
Damodar Periwal
Founder
 Data integration software company specializing in Object
Relational Mapping (ORM) technology
 JDX, the core ORM technology, simplifies integration of Java
programs with relational databases by eliminating endless lines of
SQL code
 JDX ORM is powerful, practical, and patented
 JDX ORM has been adapted for the .NET and Android Platforms
(c) 2015 Software Tree, LLC.
 JDX helps achieve significant reductions in overall time, risk and
cost associated with Java/Database programming
 Released in 1998
 Customers include British Telecom, Xerox, Los Alamos National
Labs, Electronic Arts, Darden Business School, and UAB Hospital
System
(c) 2015 Software Tree, LLC.
 NJDX helps achieve significant reductions in overall time, risk and
cost associated with .NET/Database programming
 Released in 2005
 NJDX has been tightly integrated with Visual Studio .NET and can
be used with any CLR-based language including C# and VB.NET
(c) 2015 Software Tree, LLC.
 JDXA is a simple yet powerful, flexible, and lightweight ORM product
for the Android platform
 JDXA helps achieve significant reductions in overall time, risk and
cost associated with Android/SQLite programming
 Released in 2015
 Comes with many Android platform-specific utility classes to
facilitate the easy and speedy development of mobile apps
(c) 2015 Software Tree, LLC.
Testimonials for our ORM products
 I'm more impressed with the power and depth of your software every day. -
Dr. Dave Forslund, Deputy Director, Los Alamos National Laboratory
 I have evaluated JDXA ORM for Android and am very impressed by the
product's powerful features, performance, and simplicity. - Surojit Pakira, a
senior Android application developer
 JDXA is one of the easiest Android ORM frameworks I have worked with
so far. I was up and running with JDXA in literally a few minutes. It’s really
simple to use and understand. If you are looking for a simple, yet powerful
ORM framework that can significantly accelerate your Android app
development process, choose JDXA. - Lakitha Samarasinghe, Mobile Tech
Lead, Fidenz
(c) 2015 Software Tree, LLC.
More Testimonials
 JDX simplified the rapid evolution of our application design by easily
facilitating the mapping and database schema changes. JDX has met our
performance expectations very well – Greg Ball Director, Darden Information
Services
 The reverse-engineering capabilities of JDX really set it apart from the
others - Kevin Leitch, Java System Architect
 We've tried Oracle but couldn't achieve what we've achieved with JDX -
Chee-Beng Chay, Director, PalmWindow, Singapore
 I did not encounter any modeling or query requirements in our complex
application for which JDX did not have a solution - Richard Brewster, News
Corporation
(c) 2015 Software Tree, LLC.
Role of ORM in Application Architecture
 Common Application Design and Usage Pattern
 Object-Oriented (OO) Programs using RDBMS as persistence
storage for business (domain) objects
 Business (Domain) Object Examples
 A Twitter App: User, Tweet, ReTweet
 A Fitness App: User, WhatToTrack, TrackedInfo, FitnessGoal,
VitalReadingsLog
 A ToDo App: User, Task, TodoList, Location, TaskDisposition
 A Travel Journal App: User, Location, Attractions, Restaurants,
ActivityLog
(c) 2015 Software Tree, LLC.
An Example Business Domain Object Model
(c) 2015 Software Tree, LLC.
Source: http://examples.javacodegeeks.com/android/core/database/android-database-example/
package com.javacodegeeks.androiddatabaseexample;
public class Book {
private int id;
private String title;
private String author;
public Book() {}
public Book(String title, String author) {
super();
this.title = title;
this.author = author;
}
public int getId() {
return id;
}
Android Database Access Code Without ORM
(c) 2015 Software Tree, LLC.
Source: http://examples.javacodegeeks.com/android/core/database/android-database-example/
package com.javacodegeeks.androiddatabaseexample;
import java.util.LinkedList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class JCGSQLiteHelper extends SQLiteOpenHelper {
// database version
private static final int database_VERSION = 1;
// database name
private static final String database_NAME = "BookDB";
private static final String table_BOOKS = "books";
private static final String book_ID = "id";
private static final String book_TITLE = "title";
Role of ORM in Application Architecture …
 The Problems
 Difficult to bridge the object-relational paradigm (impedance
mismatch)
 Significant pieces of complex code being repeatedly developed
 Tedious, error-prone, and time-consuming exercise
 High cost of development and maintenance
 Best Practice Design Pattern
 Persistence framework based on ORM functionality
 Eliminate complex, non-intuitive and error-prone JDBC/SQL code
 Good isolation of persistence layer eliminates bigger problems
(c) 2015 Software Tree, LLC.
Android Database Access Code With JDXA ORM
(c) 2015 Software Tree, LLC.
JDXA ORM spec
Database Access Code with JDXA ORM
package com.javacodegeeks.androiddatabaseexample;
import java.util.List;
import com.javacodegeeks.androiddatabaseexample.Book;
import com.softwaretree.jdxandroid.JDXHelper;
import com.softwaretree.jdxandroid.JDXSetup;
public class JDXABookExample {
JDXSetup jdxSetup;
JDXHelper jdxHelper;
String bookClassName = Book.class.getName();
public JDXABookExample(JDXSetup jdxSetup) {
super();
this.jdxSetup = jdxSetup;
CLASS .Book TABLE Books
PRIMARY_KEY id
SQLMAP FOR id SQLTYPE 'INTEGER PRIMARY KEY AUTOINCREMENT'
(c) 2015 Software Tree, LLC.
KISS Principle
 Keep It Simple, Stupid
 Keep It Simple, Silly
 Keep It Short and Simple
 Keep It Small and Simple
 Keep It Simple and Straightforward
Most systems work best if they are kept
simple rather than made complicated
(c) 2015 Software Tree, LLC.
What are the
KISS Principles for ORM?
(c) 2015 Software Tree, LLC.
KISS Principles for ORM
#1
Solve the most important problem
(object relational impedance mismatch)
in the simplest possible way
The ORM product focuses on the most important problem and
solves it efficiently
(c) 2015 Software Tree, LLC.
KISS Principles for ORM
#2
Don’t make the solution more complex
than the original problem
Rather than becoming a development headache, the ORM
improves developer productivity
(c) 2015 Software Tree, LLC.
KISS Principles for ORM
#3
Be completely non-intrusive to the object
model
A clean object model helps in easier implementation and
smoother evolution of business logic
(c) 2015 Software Tree, LLC.
KISS Principles for ORM
#4
Give full flexibility in object modeling
Adherence to a true domain model helps in better design and
integration of the application
(c) 2015 Software Tree, LLC.
KISS Principles for ORM
#5
Make it easy to define, modify,
comprehend, and share the mapping
specification
The ORM system is easy to understand, use, and manage
(c) 2015 Software Tree, LLC.
KISS Principles for ORM
#6
Avoid source code generation for data
access
Creates a simpler, cleaner, and more dynamic solution
(c) 2015 Software Tree, LLC.
KISS Principles for ORM
#7
Keep the mapping engine as much
stateless as possible
The mapping engine remains simple and focused without
creating unnecessary runtime overhead
(c) 2015 Software Tree, LLC.
KISS Principles for ORM
#8
No mind reading
The mapping engine does not cause data corruption. The
user remains firmly in control. The usage of an ORM
engine is simple and straightforward.
(c) 2015 Software Tree, LLC.
KISS Principles for ORM
#9
Avoid creating a new query language
Fast learning curve. Easy-to-understand programs. Avoiding
the overhead related to query parsing and compilation
speeds up internal implementation.
(c) 2015 Software Tree, LLC.
KISS Principles for ORM
#10
Stick to 90/90 rule about product features
A practical product that is easy-to-understand and use.
Implementation is not overloaded with unnecessary or
rarely-used features.
(c) 2015 Software Tree, LLC.
(c) 2015 Software Tree, LLC.
Simplicity is the ultimate
sophistication
Leonardo da Vinci
(c) 2015 Software Tree, LLC.
ORM Architecture
SQLite
RDBMS
JDXA ORM
Engine
JDXAAPIs
RDBMJDX
Declarative
ORM Specification
Domain
Objects
Relational
Rows
(c) 2015 Software Tree, LLC.
Android Platform
App
There are just 3 simple steps to
use JDXA ORM
1. Define domain object model (Java classes)
2. Define a declarative ORM specification textually
3. Develop apps using intuitive and powerful JDXA APIs
(c) 2015 Software Tree, LLC.
Features/Benefits
 Declarative mapping specification based on a simple grammar
 Benefit: Mapping is easy to define, generate, modify & comprehend
 Provides simple, non-intrusive, and dynamic programming model
 Benefit: Increased developer productivity
 Handles complex object structures and class-hierarchies
 Benefit: Greater flexibility working with objects
 Powerful query facilities including object-streaming, named queries,
and object caching
 Benefit: More flexible, sophisticated, and faster apps
(c) 2015 Software Tree, LLC.
Features/Benefits
 Supports POJO (Plain Old Java Objects) friendly non-intrusive
programming model which does not require you to change your
Java classes in any way
 Benefits:
 No need to subclass your domain classes from any base
class
 No need to clutter your source code with annotations
 No source code generation (No need for DAO classes)
 No pre-processing or post-processing of your code
 Clean architecture improves developer productivity and code
maintainability
(c) 2015 Software Tree, LLC.
Features/Benefits
Object Modeling Flexibility
(c) 2015 Software Tree, LLC.
Class Hierarchies One-to-One Relationships
One-to-Many Relationships Many-to-Many Relationships
BYVALUE Relationships BYREFERENCE relationships
Implicit Attributes Persistence By Reachability
Features/Benefits
Query Flexibility
(c) 2015 Software Tree, LLC.
Shallow Query Deep Query
Directed Query Lazy Fetches
Named Query Positional Query
Aggregate Query Streaming Query
Asynchronous Query Polymorphic Query
Query by Identity Path Expressions
(c) 2015 Software Tree, LLC.
 Android specific utility classes for
o Schema creation/population
o ListActivity
o Asynchronous queries
o Streaming objects
o Sequence generators
o Object graph display
o JDXHelper – a useful façade over the core ORM methods
 Benefit: Create flexible apps quickly
 Support for persistence of JSON objects
 Benefit: Easily create apps utilizing web services
 Extensive documentation and many working examples
 Benefit: Easy-to-learn and easy-to-use
Features/Benefits
(c) 2015 Software Tree, LLC.
JDXHelper Methods
public List getObjects(String className, String predicate)
public List getObjects(String className, String predicate, long
maxObjects, boolean deep, List details)
public Object getObjectById(String className, String
primaryKeyPredicate, boolean deep, List details)
public void insert(Object object, boolean deep)
public void update(Object object, boolean deep)
public void delete(Object object, boolean deep)
public void delete2(String className, String predicate)
Partial List
Could be a
list of objects
(c) 2015 Software Tree, LLC.
JDXHelper Methods
public int getObjectCount(String className, String attribName,
String predicate)
public synchronized long getNextSeq(String seqName, long
increment)
public long SQLStatement(String statement, long statementFlags)
Partial List (Contd.)
(c) 2015 Software Tree, LLC.
JDXS Methods
public List query(String className, String predicate, long
maxObjects, long queryFlags, List queryDetails)
public void insert(Object object, long insertFlags, List
insertDetails)
public void update(Object object, long updateFlags, List
updateDetails)
public void delete(Object object, long deleteFlags, List
deleteDetails)
public void delete2(String className, String predicate, long
deleteFlags)
Partial List
Could be a
list of objects
(c) 2015 Software Tree, LLC.
Code Snippets
(c) 2015 Software Tree, LLC.
(JDXA):
Now let’s see some code snippets
One-to-One Relationship
(c) 2015 Software Tree, LLC.
SimpleDept SimpleEmp SimpleAddr
1
1
An employee works in a department (BYREFERENCE Relationship)
An employee has an address (BYVALUE Relationship)
One-to-Many Relationship
(c) 2015 Software Tree, LLC.
SimpleCompany SimpleDept
1
A company has many departments (BYVALUE Relationship)
0 : *
Online Code Snippets
(c) 2015 Software Tree, LLC.
http://www.softwaretree.com/v1/products/jdxa/code-snippets.html
JDXA ORM code snippets provided
for many different object modeling and usage pattern
at the following url
Technology Summary
 A simple and flexible ORM framework is a fundamental need for
present and future application architectures to access SQL
relational databases like SQLite
 JDXA ORM is simple, flexible, non-intrusive, and lightweight
 JDXA provides a powerful set of practical ORM features
 JDXA improves developer productivity by maximizing code
reuse, maintainability, and reliability
 JDXA helps achieve significant reductions in overall time, risk,
and cost associated with Android app development
(c) 2015 Software Tree, LLC.
Welcome and say goodbye to
Mr. Code Struggle
Ms. Project Delay
(c) 2015 Software Tree, LLC.
Questions?
(c) 2015 Software Tree, LLC.
(c) 2015 Software Tree, LLC.
Resources
Software Tree Website
http://www.softwaretree.com
More Information on JDXA
Free 30-day Trial Download
White paper: KISS Principles for ORM
(c) 2015 Software Tree, LLC.
Additional Slides
(c) 2015 Software Tree, LLC.
JDXA Tutorials
(c) 2015 Software Tree, LLC.
JDXA, simple yet powerful ORM library for
Android
Lakitha
Samarasinghe
URL: http://wp.me/p5X7bM-2w
KISS Principles for ORM
 Solve the most important problem (object relational impedance
mismatch) in the simplest possible way
 Don’t make the solution more complex than the original problem
 Be completely non-intrusive to the object model
 Give full flexibility in object modeling
 Make it easy to define, modify, comprehend, and share ORM
specification
 Avoid source code generation for data access
 Keep the mapping engine as much stateless as possible
 No mind reading
 Avoid creating a new query language
 Expose small number of simple and consistent APIs.
More ….
(c) 2015 Software Tree, LLC.
KISS Principles for ORM…
 Absorb database-specific dependencies in the internal implementation.
 Provide simple and intuitive pass-thru mechanisms for accessing
databases directly.
 Optimize data access logic automatically.
 Stick to 90/90 rule about product features.
 Keep the internal implementation simple, extensible, and efficient.
 Offer intuitive tools to deal with object models, database schema, and
the mapping.
 Provide a straightforward installer, lucid documentation, and
readymade examples.
(c) 2015 Software Tree, LLC.
More Testimonials
 We could not have finished our project in time without JDX - Paul Quirk,
PMSC, Australia
 JDX is a top-tier OR-Mapping technology. Simple definition of the mapping
in the text form is very innovative, powerful and interesting - Lubos
Hartman, Software Architect for J2EE, Unicorn, Czech Republic
 We are very impressed with JDX. In building a large-scale Java
application, the object-oriented access to DBMS, eliminating the need of
SQL code, is extremely important - Alex Elkin, VP of Engineering, IntelliFrame
Corporation
 Personally I find JDX to be the best among all that is existing out there. I
have already evaluated it on the local system and its performance is
excellent - Niranjan Joshi, Java Consultant
(c) 2015 Software Tree, LLC.
More Testimonials
 I wish we had known about JDX before getting too deep into our own
home-grown mess of the complex object-relational mapping code - Name
withheld
(c) 2015 Software Tree, LLC.

More Related Content

What's hot

Preparing for EBS R12.2-upgrade-full
Preparing for EBS R12.2-upgrade-fullPreparing for EBS R12.2-upgrade-full
Preparing for EBS R12.2-upgrade-full
Berry Clemens
 
Managing EBS Testing, Performance, Configurations, Change & User experience
Managing EBS Testing, Performance, Configurations, Change & User experienceManaging EBS Testing, Performance, Configurations, Change & User experience
Managing EBS Testing, Performance, Configurations, Change & User experience
InSync Conference
 
OEM WebLogic Server Management Pack
OEM WebLogic Server Management PackOEM WebLogic Server Management Pack
OEM WebLogic Server Management Pack
Fumiko Yamashita
 

What's hot (20)

OOW15 - Getting Optimal Performance from Oracle E-Business Suite
OOW15 - Getting Optimal Performance from Oracle E-Business SuiteOOW15 - Getting Optimal Performance from Oracle E-Business Suite
OOW15 - Getting Optimal Performance from Oracle E-Business Suite
 
Presentation oracle exalogic elastic cloud
Presentation   oracle exalogic elastic cloudPresentation   oracle exalogic elastic cloud
Presentation oracle exalogic elastic cloud
 
Java on zSystems zOS
Java on zSystems zOSJava on zSystems zOS
Java on zSystems zOS
 
Preparing for EBS R12.2-upgrade-full
Preparing for EBS R12.2-upgrade-fullPreparing for EBS R12.2-upgrade-full
Preparing for EBS R12.2-upgrade-full
 
Engineered Systems: Oracle's Vision for the Future
Engineered Systems: Oracle's Vision for the FutureEngineered Systems: Oracle's Vision for the Future
Engineered Systems: Oracle's Vision for the Future
 
Oracle EBS R12.2 - Deployment and System Administration
Oracle EBS R12.2 - Deployment and System AdministrationOracle EBS R12.2 - Deployment and System Administration
Oracle EBS R12.2 - Deployment and System Administration
 
Managing EBS Testing, Performance, Configurations, Change & User experience
Managing EBS Testing, Performance, Configurations, Change & User experienceManaging EBS Testing, Performance, Configurations, Change & User experience
Managing EBS Testing, Performance, Configurations, Change & User experience
 
Dmz aa aioug
Dmz aa aiougDmz aa aioug
Dmz aa aioug
 
Em13c features- HotSos 2016
Em13c features- HotSos 2016Em13c features- HotSos 2016
Em13c features- HotSos 2016
 
Zero Downtime for Oracle E-Business Suite on Oracle Exalogic
Zero Downtime for Oracle E-Business Suite on Oracle ExalogicZero Downtime for Oracle E-Business Suite on Oracle Exalogic
Zero Downtime for Oracle E-Business Suite on Oracle Exalogic
 
OEM WebLogic Server Management Pack
OEM WebLogic Server Management PackOEM WebLogic Server Management Pack
OEM WebLogic Server Management Pack
 
Oracle Ebiz R12.2 Features -- Ravi Sagaram
Oracle Ebiz R12.2 Features -- Ravi SagaramOracle Ebiz R12.2 Features -- Ravi Sagaram
Oracle Ebiz R12.2 Features -- Ravi Sagaram
 
EBS Upgrade to Oracle Cloud Platform
EBS Upgrade to Oracle Cloud PlatformEBS Upgrade to Oracle Cloud Platform
EBS Upgrade to Oracle Cloud Platform
 
EBS 12.1 and 12.2 strategy-roadmap-given
EBS 12.1 and 12.2 strategy-roadmap-givenEBS 12.1 and 12.2 strategy-roadmap-given
EBS 12.1 and 12.2 strategy-roadmap-given
 
JDK 9 Java Platform Module System
JDK 9 Java Platform Module SystemJDK 9 Java Platform Module System
JDK 9 Java Platform Module System
 
Windows 7 For Geeks
Windows 7 For GeeksWindows 7 For Geeks
Windows 7 For Geeks
 
10 Tips for Successful 12.2 Upgrade
10 Tips for Successful 12.2 Upgrade10 Tips for Successful 12.2 Upgrade
10 Tips for Successful 12.2 Upgrade
 
OOW15 - technical upgrade best practices for oracle e-business suite 12.2
OOW15 - technical upgrade best practices for oracle e-business suite 12.2OOW15 - technical upgrade best practices for oracle e-business suite 12.2
OOW15 - technical upgrade best practices for oracle e-business suite 12.2
 
Oracle Cloud Reference Architecture
Oracle Cloud Reference ArchitectureOracle Cloud Reference Architecture
Oracle Cloud Reference Architecture
 
OOW15 - Online Patching with Oracle E-Business Suite 12.2
OOW15 - Online Patching with Oracle E-Business Suite 12.2OOW15 - Online Patching with Oracle E-Business Suite 12.2
OOW15 - Online Patching with Oracle E-Business Suite 12.2
 

Viewers also liked

03 Object Relational Mapping
03 Object Relational Mapping03 Object Relational Mapping
03 Object Relational Mapping
Ranjan Kumar
 
Ling to SQL and Entity Framework performance analysis
Ling to SQL and Entity Framework performance analysisLing to SQL and Entity Framework performance analysis
Ling to SQL and Entity Framework performance analysis
Alexander Konduforov
 
좌충우돌 ORM 개발기 | Devon 2012
좌충우돌 ORM 개발기 | Devon 2012좌충우돌 ORM 개발기 | Devon 2012
좌충우돌 ORM 개발기 | Devon 2012
Daum DNA
 

Viewers also liked (17)

03 Object Relational Mapping
03 Object Relational Mapping03 Object Relational Mapping
03 Object Relational Mapping
 
L18 Object Relational Mapping
L18 Object Relational MappingL18 Object Relational Mapping
L18 Object Relational Mapping
 
Object-Relational Mapping and Dependency Injection
Object-Relational Mapping and Dependency InjectionObject-Relational Mapping and Dependency Injection
Object-Relational Mapping and Dependency Injection
 
What's new, what's hot in PHP 5.3
What's new, what's hot in PHP 5.3What's new, what's hot in PHP 5.3
What's new, what's hot in PHP 5.3
 
Object Relational Mapping in PHP
Object Relational Mapping in PHPObject Relational Mapping in PHP
Object Relational Mapping in PHP
 
About Orm.fm
About Orm.fmAbout Orm.fm
About Orm.fm
 
Ling to SQL and Entity Framework performance analysis
Ling to SQL and Entity Framework performance analysisLing to SQL and Entity Framework performance analysis
Ling to SQL and Entity Framework performance analysis
 
좌충우돌 ORM 개발기 2012 DAUM DEVON
좌충우돌 ORM 개발기 2012 DAUM DEVON좌충우돌 ORM 개발기 2012 DAUM DEVON
좌충우돌 ORM 개발기 2012 DAUM DEVON
 
좌충우돌 ORM 개발기 | Devon 2012
좌충우돌 ORM 개발기 | Devon 2012좌충우돌 ORM 개발기 | Devon 2012
좌충우돌 ORM 개발기 | Devon 2012
 
L16 Object Relational Mapping and NoSQL
L16 Object Relational Mapping and NoSQLL16 Object Relational Mapping and NoSQL
L16 Object Relational Mapping and NoSQL
 
Object Relational Mapping In Real World Applications
Object Relational Mapping In Real World ApplicationsObject Relational Mapping In Real World Applications
Object Relational Mapping In Real World Applications
 
ORM을 활용할 경우의 설계, 개발 과정
ORM을 활용할 경우의 설계, 개발 과정ORM을 활용할 경우의 설계, 개발 과정
ORM을 활용할 경우의 설계, 개발 과정
 
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
QnA blog using Django - ORM, 회원가입, 로그인/로그아웃
 
ORM: Object-relational mapping
ORM: Object-relational mappingORM: Object-relational mapping
ORM: Object-relational mapping
 
Automated functional size measurement for three tier object relational mappin...
Automated functional size measurement for three tier object relational mappin...Automated functional size measurement for three tier object relational mappin...
Automated functional size measurement for three tier object relational mappin...
 
기술적 변화를 이끌어가기
기술적 변화를 이끌어가기기술적 변화를 이끌어가기
기술적 변화를 이끌어가기
 
SK플래닛_README_마이크로서비스 아키텍처로 개발하기
SK플래닛_README_마이크로서비스 아키텍처로 개발하기SK플래닛_README_마이크로서비스 아키텍처로 개발하기
SK플래닛_README_마이크로서비스 아키텍처로 개발하기
 

Similar to JDXA, The KISS ORM for Android

miniprojectreport
miniprojectreportminiprojectreport
miniprojectreport
silpa mohan
 
The Strategic Role of the Enterprise Application Framework
The Strategic Role of the Enterprise Application FrameworkThe Strategic Role of the Enterprise Application Framework
The Strategic Role of the Enterprise Application Framework
Jean-Marc Desvaux
 
Sivaprasanth Rentala_Kedar profile
Sivaprasanth Rentala_Kedar profileSivaprasanth Rentala_Kedar profile
Sivaprasanth Rentala_Kedar profile
sivaprasanth rentala
 
Manoj Kumar Sinha Profile
Manoj Kumar Sinha ProfileManoj Kumar Sinha Profile
Manoj Kumar Sinha Profile
smanojku
 
Dot net education Coimbatore
Dot net education CoimbatoreDot net education Coimbatore
Dot net education Coimbatore
sathyancegon
 

Similar to JDXA, The KISS ORM for Android (20)

miniprojectreport
miniprojectreportminiprojectreport
miniprojectreport
 
The Strategic Role of the Enterprise Application Framework
The Strategic Role of the Enterprise Application FrameworkThe Strategic Role of the Enterprise Application Framework
The Strategic Role of the Enterprise Application Framework
 
Mobile-Enabling Enterprise APIs: A Case Study with MasterCard
Mobile-Enabling Enterprise APIs: A Case Study with MasterCardMobile-Enabling Enterprise APIs: A Case Study with MasterCard
Mobile-Enabling Enterprise APIs: A Case Study with MasterCard
 
AppliFire - Low Code Rapid Application Development Platform
AppliFire - Low Code Rapid Application Development PlatformAppliFire - Low Code Rapid Application Development Platform
AppliFire - Low Code Rapid Application Development Platform
 
Applying lean, dev ops, and cloud for better business outcomes
Applying lean, dev ops, and cloud for better business outcomesApplying lean, dev ops, and cloud for better business outcomes
Applying lean, dev ops, and cloud for better business outcomes
 
Applying DevOps, PaaS and cloud for better citizen service outcomes - IBM Fe...
Applying DevOps, PaaS and cloud for better citizen service  outcomes - IBM Fe...Applying DevOps, PaaS and cloud for better citizen service  outcomes - IBM Fe...
Applying DevOps, PaaS and cloud for better citizen service outcomes - IBM Fe...
 
Cloud Application Development Lifecycle
Cloud Application Development LifecycleCloud Application Development Lifecycle
Cloud Application Development Lifecycle
 
Ravindra Prasad
Ravindra PrasadRavindra Prasad
Ravindra Prasad
 
Sivaprasanth Rentala_Kedar profile
Sivaprasanth Rentala_Kedar profileSivaprasanth Rentala_Kedar profile
Sivaprasanth Rentala_Kedar profile
 
Logesh Kumaran M
Logesh Kumaran MLogesh Kumaran M
Logesh Kumaran M
 
The Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs PublicThe Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs Public
 
Resume_Dushiyant
Resume_DushiyantResume_Dushiyant
Resume_Dushiyant
 
News to Development Environments and for RDz for z/VSE
News to Development Environments and for RDz for z/VSENews to Development Environments and for RDz for z/VSE
News to Development Environments and for RDz for z/VSE
 
Orchestrating Cloud-Native and Traditional Application Architectures
Orchestrating Cloud-Native and Traditional Application ArchitecturesOrchestrating Cloud-Native and Traditional Application Architectures
Orchestrating Cloud-Native and Traditional Application Architectures
 
GDG Cloud Southlake 31: Santosh Chennuri and Festus Yeboah: Empowering Develo...
GDG Cloud Southlake 31: Santosh Chennuri and Festus Yeboah: Empowering Develo...GDG Cloud Southlake 31: Santosh Chennuri and Festus Yeboah: Empowering Develo...
GDG Cloud Southlake 31: Santosh Chennuri and Festus Yeboah: Empowering Develo...
 
Resume: DevOps/Technology Architect - Satya Prakash
Resume: DevOps/Technology Architect   -  Satya PrakashResume: DevOps/Technology Architect   -  Satya Prakash
Resume: DevOps/Technology Architect - Satya Prakash
 
Manoj Kumar Sinha Profile
Manoj Kumar Sinha ProfileManoj Kumar Sinha Profile
Manoj Kumar Sinha Profile
 
Developing apps with techstack wp-dm
Developing apps with techstack wp-dmDeveloping apps with techstack wp-dm
Developing apps with techstack wp-dm
 
Dot net coaching Coimbatore
Dot net coaching CoimbatoreDot net coaching Coimbatore
Dot net coaching Coimbatore
 
Dot net education Coimbatore
Dot net education CoimbatoreDot net education Coimbatore
Dot net education Coimbatore
 

JDXA, The KISS ORM for Android

  • 1. 1999 S Bascom Avenue, Suite 700 Campbell, CA 95008, USA Phone: +1-408-282-3606 Email: dperiwal@softwaretree.com URL: http://www.softwaretree.com Drives the Complexity out of Database Integration on the Android Platform (c) 2015 Software Tree, LLC. By Damodar Periwal Founder
  • 2.  Data integration software company specializing in Object Relational Mapping (ORM) technology  JDX, the core ORM technology, simplifies integration of Java programs with relational databases by eliminating endless lines of SQL code  JDX ORM is powerful, practical, and patented  JDX ORM has been adapted for the .NET and Android Platforms (c) 2015 Software Tree, LLC.
  • 3.  JDX helps achieve significant reductions in overall time, risk and cost associated with Java/Database programming  Released in 1998  Customers include British Telecom, Xerox, Los Alamos National Labs, Electronic Arts, Darden Business School, and UAB Hospital System (c) 2015 Software Tree, LLC.
  • 4.  NJDX helps achieve significant reductions in overall time, risk and cost associated with .NET/Database programming  Released in 2005  NJDX has been tightly integrated with Visual Studio .NET and can be used with any CLR-based language including C# and VB.NET (c) 2015 Software Tree, LLC.
  • 5.  JDXA is a simple yet powerful, flexible, and lightweight ORM product for the Android platform  JDXA helps achieve significant reductions in overall time, risk and cost associated with Android/SQLite programming  Released in 2015  Comes with many Android platform-specific utility classes to facilitate the easy and speedy development of mobile apps (c) 2015 Software Tree, LLC.
  • 6. Testimonials for our ORM products  I'm more impressed with the power and depth of your software every day. - Dr. Dave Forslund, Deputy Director, Los Alamos National Laboratory  I have evaluated JDXA ORM for Android and am very impressed by the product's powerful features, performance, and simplicity. - Surojit Pakira, a senior Android application developer  JDXA is one of the easiest Android ORM frameworks I have worked with so far. I was up and running with JDXA in literally a few minutes. It’s really simple to use and understand. If you are looking for a simple, yet powerful ORM framework that can significantly accelerate your Android app development process, choose JDXA. - Lakitha Samarasinghe, Mobile Tech Lead, Fidenz (c) 2015 Software Tree, LLC.
  • 7. More Testimonials  JDX simplified the rapid evolution of our application design by easily facilitating the mapping and database schema changes. JDX has met our performance expectations very well – Greg Ball Director, Darden Information Services  The reverse-engineering capabilities of JDX really set it apart from the others - Kevin Leitch, Java System Architect  We've tried Oracle but couldn't achieve what we've achieved with JDX - Chee-Beng Chay, Director, PalmWindow, Singapore  I did not encounter any modeling or query requirements in our complex application for which JDX did not have a solution - Richard Brewster, News Corporation (c) 2015 Software Tree, LLC.
  • 8. Role of ORM in Application Architecture  Common Application Design and Usage Pattern  Object-Oriented (OO) Programs using RDBMS as persistence storage for business (domain) objects  Business (Domain) Object Examples  A Twitter App: User, Tweet, ReTweet  A Fitness App: User, WhatToTrack, TrackedInfo, FitnessGoal, VitalReadingsLog  A ToDo App: User, Task, TodoList, Location, TaskDisposition  A Travel Journal App: User, Location, Attractions, Restaurants, ActivityLog (c) 2015 Software Tree, LLC.
  • 9. An Example Business Domain Object Model (c) 2015 Software Tree, LLC. Source: http://examples.javacodegeeks.com/android/core/database/android-database-example/ package com.javacodegeeks.androiddatabaseexample; public class Book { private int id; private String title; private String author; public Book() {} public Book(String title, String author) { super(); this.title = title; this.author = author; } public int getId() { return id; }
  • 10. Android Database Access Code Without ORM (c) 2015 Software Tree, LLC. Source: http://examples.javacodegeeks.com/android/core/database/android-database-example/ package com.javacodegeeks.androiddatabaseexample; import java.util.LinkedList; import java.util.List; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class JCGSQLiteHelper extends SQLiteOpenHelper { // database version private static final int database_VERSION = 1; // database name private static final String database_NAME = "BookDB"; private static final String table_BOOKS = "books"; private static final String book_ID = "id"; private static final String book_TITLE = "title";
  • 11. Role of ORM in Application Architecture …  The Problems  Difficult to bridge the object-relational paradigm (impedance mismatch)  Significant pieces of complex code being repeatedly developed  Tedious, error-prone, and time-consuming exercise  High cost of development and maintenance  Best Practice Design Pattern  Persistence framework based on ORM functionality  Eliminate complex, non-intuitive and error-prone JDBC/SQL code  Good isolation of persistence layer eliminates bigger problems (c) 2015 Software Tree, LLC.
  • 12. Android Database Access Code With JDXA ORM (c) 2015 Software Tree, LLC. JDXA ORM spec Database Access Code with JDXA ORM package com.javacodegeeks.androiddatabaseexample; import java.util.List; import com.javacodegeeks.androiddatabaseexample.Book; import com.softwaretree.jdxandroid.JDXHelper; import com.softwaretree.jdxandroid.JDXSetup; public class JDXABookExample { JDXSetup jdxSetup; JDXHelper jdxHelper; String bookClassName = Book.class.getName(); public JDXABookExample(JDXSetup jdxSetup) { super(); this.jdxSetup = jdxSetup; CLASS .Book TABLE Books PRIMARY_KEY id SQLMAP FOR id SQLTYPE 'INTEGER PRIMARY KEY AUTOINCREMENT'
  • 13. (c) 2015 Software Tree, LLC.
  • 14. KISS Principle  Keep It Simple, Stupid  Keep It Simple, Silly  Keep It Short and Simple  Keep It Small and Simple  Keep It Simple and Straightforward Most systems work best if they are kept simple rather than made complicated (c) 2015 Software Tree, LLC.
  • 15. What are the KISS Principles for ORM? (c) 2015 Software Tree, LLC.
  • 16. KISS Principles for ORM #1 Solve the most important problem (object relational impedance mismatch) in the simplest possible way The ORM product focuses on the most important problem and solves it efficiently (c) 2015 Software Tree, LLC.
  • 17. KISS Principles for ORM #2 Don’t make the solution more complex than the original problem Rather than becoming a development headache, the ORM improves developer productivity (c) 2015 Software Tree, LLC.
  • 18. KISS Principles for ORM #3 Be completely non-intrusive to the object model A clean object model helps in easier implementation and smoother evolution of business logic (c) 2015 Software Tree, LLC.
  • 19. KISS Principles for ORM #4 Give full flexibility in object modeling Adherence to a true domain model helps in better design and integration of the application (c) 2015 Software Tree, LLC.
  • 20. KISS Principles for ORM #5 Make it easy to define, modify, comprehend, and share the mapping specification The ORM system is easy to understand, use, and manage (c) 2015 Software Tree, LLC.
  • 21. KISS Principles for ORM #6 Avoid source code generation for data access Creates a simpler, cleaner, and more dynamic solution (c) 2015 Software Tree, LLC.
  • 22. KISS Principles for ORM #7 Keep the mapping engine as much stateless as possible The mapping engine remains simple and focused without creating unnecessary runtime overhead (c) 2015 Software Tree, LLC.
  • 23. KISS Principles for ORM #8 No mind reading The mapping engine does not cause data corruption. The user remains firmly in control. The usage of an ORM engine is simple and straightforward. (c) 2015 Software Tree, LLC.
  • 24. KISS Principles for ORM #9 Avoid creating a new query language Fast learning curve. Easy-to-understand programs. Avoiding the overhead related to query parsing and compilation speeds up internal implementation. (c) 2015 Software Tree, LLC.
  • 25. KISS Principles for ORM #10 Stick to 90/90 rule about product features A practical product that is easy-to-understand and use. Implementation is not overloaded with unnecessary or rarely-used features. (c) 2015 Software Tree, LLC.
  • 26. (c) 2015 Software Tree, LLC. Simplicity is the ultimate sophistication Leonardo da Vinci
  • 27. (c) 2015 Software Tree, LLC.
  • 28. ORM Architecture SQLite RDBMS JDXA ORM Engine JDXAAPIs RDBMJDX Declarative ORM Specification Domain Objects Relational Rows (c) 2015 Software Tree, LLC. Android Platform App
  • 29. There are just 3 simple steps to use JDXA ORM 1. Define domain object model (Java classes) 2. Define a declarative ORM specification textually 3. Develop apps using intuitive and powerful JDXA APIs (c) 2015 Software Tree, LLC.
  • 30. Features/Benefits  Declarative mapping specification based on a simple grammar  Benefit: Mapping is easy to define, generate, modify & comprehend  Provides simple, non-intrusive, and dynamic programming model  Benefit: Increased developer productivity  Handles complex object structures and class-hierarchies  Benefit: Greater flexibility working with objects  Powerful query facilities including object-streaming, named queries, and object caching  Benefit: More flexible, sophisticated, and faster apps (c) 2015 Software Tree, LLC.
  • 31. Features/Benefits  Supports POJO (Plain Old Java Objects) friendly non-intrusive programming model which does not require you to change your Java classes in any way  Benefits:  No need to subclass your domain classes from any base class  No need to clutter your source code with annotations  No source code generation (No need for DAO classes)  No pre-processing or post-processing of your code  Clean architecture improves developer productivity and code maintainability (c) 2015 Software Tree, LLC.
  • 32. Features/Benefits Object Modeling Flexibility (c) 2015 Software Tree, LLC. Class Hierarchies One-to-One Relationships One-to-Many Relationships Many-to-Many Relationships BYVALUE Relationships BYREFERENCE relationships Implicit Attributes Persistence By Reachability
  • 33. Features/Benefits Query Flexibility (c) 2015 Software Tree, LLC. Shallow Query Deep Query Directed Query Lazy Fetches Named Query Positional Query Aggregate Query Streaming Query Asynchronous Query Polymorphic Query Query by Identity Path Expressions
  • 34. (c) 2015 Software Tree, LLC.  Android specific utility classes for o Schema creation/population o ListActivity o Asynchronous queries o Streaming objects o Sequence generators o Object graph display o JDXHelper – a useful façade over the core ORM methods  Benefit: Create flexible apps quickly  Support for persistence of JSON objects  Benefit: Easily create apps utilizing web services  Extensive documentation and many working examples  Benefit: Easy-to-learn and easy-to-use Features/Benefits
  • 35. (c) 2015 Software Tree, LLC. JDXHelper Methods public List getObjects(String className, String predicate) public List getObjects(String className, String predicate, long maxObjects, boolean deep, List details) public Object getObjectById(String className, String primaryKeyPredicate, boolean deep, List details) public void insert(Object object, boolean deep) public void update(Object object, boolean deep) public void delete(Object object, boolean deep) public void delete2(String className, String predicate) Partial List Could be a list of objects
  • 36. (c) 2015 Software Tree, LLC. JDXHelper Methods public int getObjectCount(String className, String attribName, String predicate) public synchronized long getNextSeq(String seqName, long increment) public long SQLStatement(String statement, long statementFlags) Partial List (Contd.)
  • 37. (c) 2015 Software Tree, LLC. JDXS Methods public List query(String className, String predicate, long maxObjects, long queryFlags, List queryDetails) public void insert(Object object, long insertFlags, List insertDetails) public void update(Object object, long updateFlags, List updateDetails) public void delete(Object object, long deleteFlags, List deleteDetails) public void delete2(String className, String predicate, long deleteFlags) Partial List Could be a list of objects
  • 38. (c) 2015 Software Tree, LLC. Code Snippets
  • 39. (c) 2015 Software Tree, LLC. (JDXA): Now let’s see some code snippets
  • 40. One-to-One Relationship (c) 2015 Software Tree, LLC. SimpleDept SimpleEmp SimpleAddr 1 1 An employee works in a department (BYREFERENCE Relationship) An employee has an address (BYVALUE Relationship)
  • 41. One-to-Many Relationship (c) 2015 Software Tree, LLC. SimpleCompany SimpleDept 1 A company has many departments (BYVALUE Relationship) 0 : *
  • 42. Online Code Snippets (c) 2015 Software Tree, LLC. http://www.softwaretree.com/v1/products/jdxa/code-snippets.html JDXA ORM code snippets provided for many different object modeling and usage pattern at the following url
  • 43. Technology Summary  A simple and flexible ORM framework is a fundamental need for present and future application architectures to access SQL relational databases like SQLite  JDXA ORM is simple, flexible, non-intrusive, and lightweight  JDXA provides a powerful set of practical ORM features  JDXA improves developer productivity by maximizing code reuse, maintainability, and reliability  JDXA helps achieve significant reductions in overall time, risk, and cost associated with Android app development (c) 2015 Software Tree, LLC.
  • 44. Welcome and say goodbye to Mr. Code Struggle Ms. Project Delay (c) 2015 Software Tree, LLC.
  • 46. (c) 2015 Software Tree, LLC.
  • 47. Resources Software Tree Website http://www.softwaretree.com More Information on JDXA Free 30-day Trial Download White paper: KISS Principles for ORM (c) 2015 Software Tree, LLC.
  • 48. Additional Slides (c) 2015 Software Tree, LLC.
  • 49. JDXA Tutorials (c) 2015 Software Tree, LLC. JDXA, simple yet powerful ORM library for Android Lakitha Samarasinghe URL: http://wp.me/p5X7bM-2w
  • 50. KISS Principles for ORM  Solve the most important problem (object relational impedance mismatch) in the simplest possible way  Don’t make the solution more complex than the original problem  Be completely non-intrusive to the object model  Give full flexibility in object modeling  Make it easy to define, modify, comprehend, and share ORM specification  Avoid source code generation for data access  Keep the mapping engine as much stateless as possible  No mind reading  Avoid creating a new query language  Expose small number of simple and consistent APIs. More …. (c) 2015 Software Tree, LLC.
  • 51. KISS Principles for ORM…  Absorb database-specific dependencies in the internal implementation.  Provide simple and intuitive pass-thru mechanisms for accessing databases directly.  Optimize data access logic automatically.  Stick to 90/90 rule about product features.  Keep the internal implementation simple, extensible, and efficient.  Offer intuitive tools to deal with object models, database schema, and the mapping.  Provide a straightforward installer, lucid documentation, and readymade examples. (c) 2015 Software Tree, LLC.
  • 52. More Testimonials  We could not have finished our project in time without JDX - Paul Quirk, PMSC, Australia  JDX is a top-tier OR-Mapping technology. Simple definition of the mapping in the text form is very innovative, powerful and interesting - Lubos Hartman, Software Architect for J2EE, Unicorn, Czech Republic  We are very impressed with JDX. In building a large-scale Java application, the object-oriented access to DBMS, eliminating the need of SQL code, is extremely important - Alex Elkin, VP of Engineering, IntelliFrame Corporation  Personally I find JDX to be the best among all that is existing out there. I have already evaluated it on the local system and its performance is excellent - Niranjan Joshi, Java Consultant (c) 2015 Software Tree, LLC.
  • 53. More Testimonials  I wish we had known about JDX before getting too deep into our own home-grown mess of the complex object-relational mapping code - Name withheld (c) 2015 Software Tree, LLC.