https://github.com/pchmn/tp7-mongo
https://github.com/pchmn/tp7-mongo
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/pchmn/tp7-mongo
- Owner: pchmn
- Created: 2016-03-16T14:51:05.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2016-05-02T18:45:02.000Z (about 10 years ago)
- Last Synced: 2025-12-13T05:37:42.476Z (7 months ago)
- Language: Java
- Size: 6.84 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# TP Mongo - Redis
## MongoDB
### Object Document Mapper
On 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.
### Annotations
On utilise les annotations `Morphia` sur une classe Java pour pouvoir la "mapper".
* `@Entity("nom_entité")` : représente le nom du document
* `@Id` : représente l'id de l'objet dans le document
* `@Embedded` : représente un sous-document inséré dans un document
```java
@Entity("persons")
public class Person {
@Id
private ObjectId id;
private String name;
@Embedded
private Address address;
}
@Embedded
public class Address {
private String street;
private String city;
private String postCode;
private String country;
}
```
### Fonctionnement de Morphia
#### Instanciation
On instancie un objet `Moprhia` :
```java
Morphia morphia = new Morphia();
```
Ensuite on mappe les classes désirées :
```java
morphia.map(Person.class).map(Address.class);
```
Puis on crée un `DataStore` (similaire à `EntityManager` pour JPA) :
```java
Datastore ds = morphia.createDatastore(new MongoClient(), "tp7_sir");
```
#### Persister un objet
Pour persister un objet il suffit d'appeler la fonction `save` de `DataStore` :
```java
Person p1 = new Person("Peter");
Address a1 = new Address("Rue des rossignols", "Paris", "75000", "France");
p1.setAddress(a1);
// on persiste p1
ds.save(p1);
```
## Redis
### Chaînes de caractères
On peut stocker des strings sous forme de Clé/Valeur.
```java
// Définit une chaine de caractère
jedis.set("foo", "bar");
// Récupère la valeur
jedis.get("foo");
```
### Nombre
On peut stocker et gérer des nombres. On peut en effet faire des opérations sur ce nombre directement sur le serveur.
```java
// Incrémente la variable counter
jedis.incr("counter");
```
### Liste
Des listes de strings peuvent être définis, elles sont triés par ordre de définition.
```java
// On rajoute des éléments à une liste
jedis.lpush("Niveau", "Licence");
jedis.lpush("Niveau", "Master");
jedis.lpush("Niveau", "Doctorat");
// On supprime le dernier élément rajouté
jedis.lpop("Niveau");
```
### Collection de strings
Les collections peuvent être aussi des collections triées.
On peut ajouter, supprimer, modifier ces collections.
```java
// Ajoute une valeur à la collection
jedis.sadd(cacheKey2, "Java");
// Supprime une valeur de la collection
jedis.srem(cacheKey2, "C#");
```
### Objets
On peut stocker des objets entiers et modifier certains attributs
```java
// Définit un objet avec une propriété 'lastName'
Map userProperties = new HashMap();
userProperties.put("lastName", "name");
// Ajoute l'objet entier
jedis.hmset("user:" + "clem", userProperties);
// Récupère un attribut de l'objet
jedis.hgetAll("user:" + username).get("lastName"));
```
###### Clément Goachet - Paul Chemin