{"id":20774141,"url":"https://github.com/pchmn/tp7-mongo","last_synced_at":"2026-04-18T21:33:43.720Z","repository":{"id":96223979,"uuid":"54040713","full_name":"pchmn/tp7-mongo","owner":"pchmn","description":null,"archived":false,"fork":false,"pushed_at":"2016-05-02T18:45:02.000Z","size":7,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-12-13T05:37:42.476Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pchmn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-03-16T14:51:05.000Z","updated_at":"2016-03-16T14:51:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"5589b088-460e-4fba-91c1-19a9385d7dbd","html_url":"https://github.com/pchmn/tp7-mongo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pchmn/tp7-mongo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pchmn%2Ftp7-mongo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pchmn%2Ftp7-mongo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pchmn%2Ftp7-mongo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pchmn%2Ftp7-mongo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pchmn","download_url":"https://codeload.github.com/pchmn/tp7-mongo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pchmn%2Ftp7-mongo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31986322,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"ssl_error","status_checked_at":"2026-04-18T20:23:29.375Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-17T12:28:30.728Z","updated_at":"2026-04-18T21:33:43.677Z","avatar_url":"https://github.com/pchmn.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TP Mongo - Redis\n\n## MongoDB\n\n### Object Document Mapper\nOn utilise lors de ce tp l'ODM [`Morphia`](http://mongodb.github.io/morphia/). Un ODM a la même fonction q'un ORM mais pour une base orienté document.\n\n### Annotations\nOn utilise les annotations `Morphia` sur une classe Java pour pouvoir la \"mapper\". \n* `@Entity(\"nom_entité\")` : représente le nom du document\n* `@Id` : représente l'id de l'objet dans le document\n* `@Embedded` : représente un sous-document inséré dans un document\n```java\n@Entity(\"persons\")\npublic class Person {\n    @Id\n    private ObjectId id;\n    private String name;\n    @Embedded\n    private Address address;\n}\n\n@Embedded\npublic class Address {\n    private String street;\n    private String city;\n    private String postCode;\n    private String country;\n}\n```\n\n### Fonctionnement de Morphia\n#### Instanciation\nOn instancie un objet `Moprhia` :\n```java\nMorphia morphia = new Morphia();\n```\nEnsuite on mappe les classes désirées : \n```java\nmorphia.map(Person.class).map(Address.class);\n```\nPuis on crée un `DataStore` (similaire à `EntityManager` pour JPA) : \n```java\nDatastore ds = morphia.createDatastore(new MongoClient(), \"tp7_sir\");\n```\n\n#### Persister un objet\nPour persister un objet il suffit d'appeler la fonction `save` de `DataStore` : \n```java\nPerson p1 = new Person(\"Peter\");\nAddress a1 = new Address(\"Rue des rossignols\", \"Paris\", \"75000\", \"France\");\np1.setAddress(a1);\n\n// on persiste p1\nds.save(p1);\n```\n\n## Redis\n\n### Chaînes de caractères\nOn peut stocker des strings sous forme de Clé/Valeur.\n```java\n    // Définit une chaine de caractère\n    jedis.set(\"foo\", \"bar\");\n    \n    // Récupère la valeur\n    jedis.get(\"foo\");\n```  \n### Nombre\nOn peut stocker et gérer des nombres. On peut en effet faire des opérations sur ce nombre directement sur le serveur.\n```java\n    // Incrémente la variable counter\n    jedis.incr(\"counter\");\n```\n### Liste\nDes listes de strings peuvent être définis, elles sont triés par ordre de définition.\n```java\n\t// On rajoute des éléments à une liste\n\tjedis.lpush(\"Niveau\", \"Licence\");\n\tjedis.lpush(\"Niveau\", \"Master\");\n\tjedis.lpush(\"Niveau\", \"Doctorat\");\n\t\n\t// On supprime le dernier élément rajouté\n\tjedis.lpop(\"Niveau\");\n```\n### Collection de strings\nLes collections peuvent être aussi des collections triées.\nOn peut ajouter, supprimer, modifier ces collections.\n```java\n    // Ajoute une valeur à la collection\n    jedis.sadd(cacheKey2, \"Java\");\n    \n    // Supprime une valeur de la collection\n    jedis.srem(cacheKey2, \"C#\");\n```\n\n### Objets\nOn peut stocker des objets entiers et modifier certains attributs\n```java\n    // Définit un objet avec une propriété 'lastName'\n    Map\u003cString, String\u003e userProperties = new HashMap\u003cString, String\u003e();\n\tuserProperties.put(\"lastName\", \"name\");\n\t\n\t// Ajoute l'objet entier\n\tjedis.hmset(\"user:\" + \"clem\", userProperties);\n\t\n\t// Récupère un attribut de l'objet\n\tjedis.hgetAll(\"user:\" + username).get(\"lastName\"));\n```\n\n\u003cbr\u003e\n###### Clément Goachet - Paul Chemin\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpchmn%2Ftp7-mongo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpchmn%2Ftp7-mongo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpchmn%2Ftp7-mongo/lists"}