LP DAM. BDD Client. IUT Informatique Université de Nice-Sophia Antipolis. Macha DA COSTA - machada.fr - macha.dacosta@gmail.com



Documents pareils
1. Base de données SQLite

OpenPaaS Le réseau social d'entreprise

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Stockage de données sous Android

Bases de données et fournisseurs de contenu

Outils, langage et approche Android Une introduction. Nicolas Stouls lyon.fr

Projet Android (LI260) Cours 2

Android et le Cloud Computing

Application web de gestion de comptes en banques

Introduction à JDBC. Accès aux bases de données en Java

Java Licence Professionnelle CISII,

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Programmer en JAVA. par Tama

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Auto-évaluation Programmation en Java

Mise en œuvre des serveurs d application

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

PHP 5. La base de données MySql. A. Belaïd 1

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Configurer la supervision pour une base MS SQL Server Viadéis Services

TD/TP PAC - Programmation n 3

4. Groupement d objets

Notion de base de données

CREATION WEB DYNAMIQUE

Le langage SQL (première partie) c Olivier Caron

Cours 1: Java et les objets

Education Delivery Intelligent Tool

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

as Architecture des Systèmes d Information

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

Warren PAULUS. Android SDK et Android x86

Projet de programmation (IK3) : TP n 1 Correction

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Encryptions, compression et partitionnement des données

Programmation Android L3 informatique

Package Java.util Classe générique

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

TP Programmation Java / JDBC / Oracle

WDpStats Procédure d installation

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

VIDEO RECORDING Accès à distance

Bases de données et sites WEB

Comment Accéder à des Bases de Données MySQL avec Windows lorqu'elles sont sur un Serveur Linux

Exercices sur SQL server 2000

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Tutoriel d installation de Hibernate avec Eclipse

Langage SQL : créer et interroger une base

2 Chapitre 1 Introduction

La technologie Java Card TM

Développement Logiciel

Android Publish/Subscribe, GCM, Google Cloud Messaging : une introduction

Cours Bases de données

SQL Historique

Création d une application JEE

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Optimisations des SGBDR. Étude de cas : MySQL

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing

Java et les bases de données

Start me quick! Français

Auto-évaluation Oracle: cours de base

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

Notes de cours : bases de données distribuées et repliquées

Mise en oeuvre d'une base de données mono-utilisateur avec SQLite

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

AJAX. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Une introduction à Java

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Développement sous Android

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Applet pour visualiser les variables «automate» notifiées

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

Le stockage local de données en HTML5

Cours: Administration d'une Base de Données

Bases de données cours 1

Plan du cours. Historique du langage Nouveautés de Java 7

Recommandations techniques

Les journées SQL Server 2013

Point sur les solutions de développement d apps pour les périphériques mobiles

Cours de SQL SERVER 2005 SQL SERVER 2005

Architectures haute disponibilité avec MySQL. Olivier Olivier DASINI DASINI - -

TD/TP PAC - Programmation n 3

Structure fonctionnelle d un SGBD

Un ordonnanceur stupide

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

TP au menu «UI ANDROID»

WiFi Security Camera Quick Start Guide. Guide de départ rapide Caméra de surveillance Wi-Fi (P5)

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

4D v11 SQL Release 5 (11.5) ADDENDUM

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Transcription:

LP DAM BDD Client IUT Informatique Université de Nice-Sophia Antipolis Macha DA COSTA - machada.fr - macha.dacosta@gmail.com

Résumé séances précédentes L architecture Client-Serveur Les applications Clientes App. Clientes Mobiles : connexion réseau stockage des données App. Clientes Web

Résumé séance 1 Architecture Client - Serveur

Résumé séance 2 CLIENTS RÉSEAU SERVEUR Architecture Client Mobile - Serveur

Résumé séance 2 OkHttp transfert HTTP personnalisé Retrofit transfert HTTP Glide transfert d image Android : connexion réseau HTTP

Résumé séance 2 (SCORE, 532) Moyens de stockage (USER, Mathias) Préférences partagés Shared Preferences Stockage interne Internal Storage Stockage externe External Storage BDD SQLite SQLite Databases Hack App Data (AGE, 23) HeartRate * id * value * date

Résumé séance 3 Cookies (qqles ko) Session Storage (plrs Mo) Local Storage (plrs Mo) Web SQL (WebKit, Opera) données structurées, tri IndexedDB (IE10, Chrome, Firefox) orientée JS, manipulation objets Application Cache Cache Storage

Résumé séance 3 Redux

Application Cliente Mobile

Plan A] App. Cliente Mobile : rappel B] Persistence des données structurées (Mobile) C] Communication

A] App. Cliente Mobile : rappel CLIENTS RÉSEAU SERVEUR

A] Caractéristiques des App. Clientes Mobiles Environnement ios Android Hybrid : Phone Gap, Titanium, Sencha Touch Windows Phone BlackBerry BDD Moyenne Traitement local Moyen Fréquence des échanges avec le serveur Modérée

A] App. Cliente Mobile : rappel (SCORE, 532) Moyens de stockage (USER, Mathias) Préférences partagés Shared Preferences Stockage interne Internal Storage Stockage externe External Storage BDD SQLite SQLite Databases Hack App Data (AGE, 23) HeartRate * id * value * date

A] App. Cliente Mobile : rappel SQLite syntaxe proche SQL + Java opération classique création de table insertion mise à jour recherche

B] Persistence des données structurées Librairie Realm Facile à utiliser Rapide Cross Platform Communauté importante Pinterest, GoPro, Google, SAP, Virgin, etc. Realm

B] Persistence des données structurées Librarie Realm VS SQLite Création d une instance pour manipuler la BDD Overture en écriture Fermeture Opérations classiques Realm creation de Table insertion/update recherche

B] Persistence des données structurées Librarie Realm VS SQLite Importation Création d une instance pour manipuler la BDD compile 'io.realm:realm-android:0.85.1' Realm realm = Realm.getInstance(this); SportBaseSQLite(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void oncreate(sqlitedatabase db) { db.execsql(database_create); }

B] Persistence des données structurées Librarie Realm VS SQLite Overture en écriture realm.begintransaction(); mdbhelper = new SportBaseSQLite(mCtx); mdb = mdbhelper.getwritabledatabase(); Fermeture //... add or update objects here... realm.committransaction(); realm.close(); if(mdbhelper!=null) mdbhelper.close();

B] Persistence des données structurées Librarie Realm VS SQLite private static final String TABLE_SS = "user"; private static final int NUM_COL_AGE = 1; private static final String COL_AGE = "age"; private static final int NUM_COL_NAME = 0; private static final String COL_NAME = "NAME"; Opérations classiques private static final String DATABASE_CREATE = "CREATE TABLE " + TABLE_SS + " (" + COL_NAME + " TEXT PRIMARY, " + COL_AGE + " INTEGER, ); creation /représentation Table public class User extends RealmObject { @PrimaryKey private String private int @Ignore private int name; age; sessionid; } // Standard getters & setters generated by your IDE public String getname() { return name; } public void setname(string name) { this.name = name; } public int getage() { return age; } public void setage(int age) { this.age = age; } public int getsessionid() { return sessionid; } public void setsessionid(int sessionid) { this.sessionid = session

B] Persistence des données structurées ContentValues initialvalues = new ContentValues(); initialvalues.put(col_name, ss.getname()); initialvalues.put(col_age, ss.getage()); Librarie Realm VS SQLite mdb.insert(table_ss, null, initialvalues); Opérations classiques insertion/update User user = realm.createobject(user.class); // Create a new object user.setname( John"); user.setage(12); user.setsession(271246252346352); realm.copytorealmorupdate(obj); realm.createorupdate(obj);

B] Persistence des données structurées public Cursor fetchallstatement() { return mdb.query(table_ss, new String[] {COL_NAME, COL_AGE, COL_SESSION,}, null, null, null, null, public List<User> getss(){ List<User> listss = new ArrayList<SportStatement>(); //Récupère dans un Cursor les valeur correspondant à un r Cursor c = fetchallstatement(); while(c.movetonext()){ listss.add(cursortoss(c)); } Librarie Realm VS SQLite //On ferme le cursor c.close(); return listss; } private User cursortoss(cursor c){ //si aucun élément n a été retourné dans la requête, on renvoie null if (c.getcount() == 0) Opérations classiques return null; User ss = new User(); //on lui affecte toutes les infos grâce aux infos contenues dans le Cursor recherche (requête) ss.setname(c.gettext(num_col_name)); ss.setage(c.getint(num_col_age)); return ss; } RealmResults<User> result = realm.where(user.class).equalto("name", "John").or().equalTo("name", "Peter").findAll();

B] Persistence des données structurées Realm 1. Spécifications type propriété 2. Requêtes conditions, opérateurs tri, calculs traitement résultats suppression

B] Persistence des données structurées 1. Specifications (Realm) Types des champs boolean short int long float double String Date byte[] Specifications (Realm) Propriétés des champs @Required @Ignore @Index non null non enregistré insertion lente donnée lourde recherche rapide @PrimaryKey String or Integer @Index

B] Persistence des données structurées 2. Requêtes (Realm) Conditions (dépends du type des champs) between, greaterthan(), lessthan(), greaterthanorequalto() & lessthanorequalto() equalto() & notequalto() contains(), beginswith() & endswith() Opérateurs logiques begingroup() = ( & endgroup() = ), AND in SQL or() Tri sort() Calculs sum(), max(), min(), average(), size()

B] Persistence des données structurées 2. Requêtes (Realm) Traitement résultats itération for (User u : result) { //... do something with the object... } Suppression realm.begintransaction(); // remove single match result.remove(0); result.removelast(); // remove a single object Dog dog = result.get(5); dog.removefromrealm(); // Delete all matches result.clear(); realm.committransaction()

B] Persistence des données structurées Realm Synchrone/Asynchrone 1. Lecture 2. Écriture

B] Persistence des données structurées 1. Lecture Requête Asynchrone/Synchrone dans Realm Asynchrone RealmResults<User> result = realm.where(user.class).findallasync(); if (result.isloaded()) { // Results are now available } Synchrone result.load() // FORCE : be careful, this will block the current thread until it returns RealmResults<User> result = realm.where(user.class).findall();

B] Persistence des données structurées 2. Ecriture Asynchrone/Synchrone dans Realm asynchrone RealmResults<User> result = realm.where(user.class).findallasync(); realm.executetransaction(new Realm.Transaction() { @Override public void execute(realm realm) { User user = realm.createobject(user.class); user.setname("john"); user.setemail("john@corporation.com"); } }); synchrone realm.begintransaction() realm.committransaction() realm.canceltransaction()

B] Persistence des données structurées Realm Best Practise

B] Persistence des données structurées Bonne Pratique Intégrer au cycle de vie d une Activity public class MyActivity extends Activity { private Realm realm; @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); realm = Realm.getDefaultInstance(); } } @Override protected void ondestroy() { super.ondestroy(); realm.close(); }

B] Persistence des données structurées Bonne Pratique Intégrer au cycle de vie d un Fragment public class MyFragment extends Fragment { private Realm realm; @Override public void onstart() { super.onstart(); realm = Realm.getDefaultInstance(); } } @Override public void onstop() { super.onstop(); realm.close(); }

B] Persistence des données structurées Bonne Pratique Intégrer au cycle de vie d une Activity/Fragment public void onstop () { if (transaction!= null &&!transaction.iscancelled()) { transaction.cancel(); } }

C] Communication

C] Communication Réseau RTC HTTP/S via Wifi Cellulaire GSM Bluetooth NFC Autres : ondes sonores, infrarouge, Wiimax, MIMO etc.

C] Communication Niveau de sécurité Taille des données Porté/qualité du réseau Rapidité de transfert Cadre d utilisation

C] Communication HTTP/S via Wifi Niveau de sécurité token /session Taille /Type Données échangés Cellulaire Bluetooth pairage 9,75 m NFC 4 cm Propriétaires

TD n 4 Reprenez l app. du TD N 2 rendre les données persistantes à l aide de Realm