• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Json Persistence Framework
 

Json Persistence Framework

on

  • 3,227 views

Presented at JavaForum 2011-11-24.

Presented at JavaForum 2011-11-24.

Statistics

Views

Total Views
3,227
Views on SlideShare
2,803
Embed Views
424

Actions

Likes
0
Downloads
9
Comments
0

5 Embeds 424

http://www.squeed.com 416
http://ej.sectorit.net 3
http://blog.squeed.com 3
http://146.21.22.202 1
http://feeds.feedburner.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Json Persistence Framework Json Persistence Framework Presentation Transcript

    • JSON, SQLite & Persistence Daniel Oskarsson Know IT
    • Preface24 slides and Netbeans DemoContents are more towards avoiding pitfalls than learning thebasics.
    • "Simplicity"
    • JSONjson.org
    • http://www.json.org
    • + -json size validationxml validation size
    • JAX-RS JAX-WSpublic class Tv { @GET @Path("/tv/") @Produces({"application/json"}) public List<Channel> getChannels() { List<Channel> channels = getChannels(); return channels; }}
    • JAX-B@XmlRootElementpublic class Channel { public Channel() {} @XmlElement private String id; @XmlElement private String name; @XmlElement public String getLogo() { return String.format(path, id); } @XmlElement public List<Program> getPrograms() { return getPrograms(); }}
    • { "channel":[ { "id":"svt1.svt.se", "name":"SVT1", "logo":"svt1.svt.se.png", "programs":[ { "name":"Kulturnyheterna", "start":"2011-11-23T18:00:00Z", "stop":"2011-11-23T18:15:00Z" }, { "name":"Regionala nyheter", "start":"2011-11-23T18:15:00Z", "stop":"2011-11-23T18:30:00Z" } ]}]}
    • SQLitesqlite.org
    • SQLite"SQLite is a software library that implements a self-contained,server-less, zero-configuration, transactional SQL databaseengine""SQLite does not have a separate server process""SQLite reads and writes directly to ordinary disk files""Think of SQLite not as a replacement for Oracle but as areplacement for fopen()" http://www.sqlite.org/about.html
    • Storage ClassesValues are one of the following storage classes: INTEGER (signed) REAL TEXT (UTF) NULL BLOBBOOL (INTEGER 0 or INTEGER 1)DATE (ISO8601 TEXT or Unix Time INTEGER or Julian days)TIME (ISO8601 TEXT or Unix Time INTEGER or Julian days) http://www.sqlite.org/datatype3.html
    • Type AffinityColumns are one the following type affinities:INTEGERREALNUMERICTEXT (NULL, BLOB)NONEInternally values may be casted before stored http://www.sqlite.org/datatype3.html
    • http://www.sqlite.org/lang_createtable.html
    • Foreign keys"Foreign key constraints are disabled by default (for backwardscompatibility), so must be enabled separately for eachdatabase connection separately." (http://www.sqlite.org/foreignkeys.html)Class.forName("org.sqlite.JDBC");final String url = "jdbc:sqlite:json.db";SQLiteConfig config = new SQLiteConfig();config.enforceForeignKeys(true);Connection connection = DriverManager.getConnection(url,config.toProperties());
    • As an in-memory-databaseClass.forName("org.sqlite.JDBC");final String url = "jdbc:sqlite::memory:";Connection connection = DriverManager.getConnection(url);
    • JDBChttp://www.xerial.org/trac/Xerial/wiki/SQLiteJDBC<dependency> <groupId>org.xerial</groupId> <artifactId>sqlite-jdbc</artifactId></dependency>
    • 1+1=3
    • JSON Persistence Frameworkgithub.com/danieloskarsson/json-persistence
    • CharacteristicsKey-value-based persistenceZero configuration No database setup No mappingsNo modifications of domain objects No serializable No annotationsApache 2.0 License
    • Design decisionsSerialization & Deserialization JSON Serialization and Deserialization is NOT provided The user selects their favorite JSON library for the taskVersioning is NOT supported Some JSON libraries support versioning Some JSON libraries navigates the tree of the desired type As opposed to navigating the tree of the input The data type is used as the key / id E.g. tv.domain.Channel[] or tv.domain.Channel Multiple instance of the same class must be in a list JSON should be parsed before it is persisted
    • A perfect match with Smartphones
    • SmartPhones often...Comes bundled with support for JSONComes bundled with support for SQLiteReceive JSON data from a REST callJSON Persistence Framework is forthcoming on Android iOS Windows Phone
    • github.com/danieloskarsson linkedin.com/in/danieloskarsson