Utilisation d'une seconde source de données

32 views
Skip to first unread message

triptic

unread,
Jul 18, 2016, 12:10:51 PM7/18/16
to finemedia-oss
bonjour,
je vois que malheureusement le projet n'est plus très actif, c'est dommage car il tourne très bien !

Ma question est la suivante :
j'ai besoin d'utiliser pour une partie de mon site une nouvelle base de données et je me demandais si le framework pouvait permettre de déclarer 2 sources de données _db1 et _db2 (en faisant sans doute quelques adaptations) et d'utiliser dans les DAO les références $this->_db1 ou $this->_db2 selon les données à utiliser.

Merci d'avance à qui saura/pourra me répondre !


Amaury Bouchard

unread,
Jul 18, 2016, 12:16:20 PM7/18/16
to finemedia-oss
Oui, c'est tout à fait possible.

Dans le fichier etc/temma.json, tu peux lister plusieurs connexions :
{
    "application": {
        "dataSources": {
            "_db1": "mysqli://...",
            "_db2": "mysqli://...",
            "_db3": "redis://...",
            "_cache1": "memcache://...",
            "_cache2: "memcache://..."

silvio barahona

unread,
Jul 18, 2016, 12:16:20 PM7/18/16
to fineme...@googlegroups.com
Ca me parait compliqué, le truc reposant sur le design pattern singleton, de mémoire...

--
You received this message because you are subscribed to the Google Groups "finemedia-oss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to finemedia-os...@googlegroups.com.
To post to this group, send email to fineme...@googlegroups.com.
Visit this group at https://groups.google.com/group/finemedia-oss.
For more options, visit https://groups.google.com/d/optout.

Amaury Bouchard

unread,
Jul 18, 2016, 12:18:18 PM7/18/16
to finemedia-oss
Non, c'est basé sur une factory. Le singleton est dispo si tu appelles l'objet FineDatabase à la main ; mais le framework Temma passe bien par une factory.


Le lundi 18 juillet 2016 18:16:20 UTC+2, synbios a écrit :
Ca me parait compliqué, le truc reposant sur le design pattern singleton, de mémoire...

Le 18 juillet 2016 à 15:34 :

triptic

unread,
Jul 19, 2016, 3:21:14 AM7/19/16
to finemedia-oss
Merci Amaury,
et en utilisant cette méthode, je pourrais déclarer une connexion vers une BDD MongoDB (en m'inspirant de finebase/FineNDB.php) ?

silvio barahona

unread,
Jul 19, 2016, 3:21:14 AM7/19/16
to fineme...@googlegroups.com
Et bien autant pour moi ! :-D

--

Amaury Bouchard

unread,
Jul 19, 2016, 3:29:38 AM7/19/16
to finemedia-oss
Oui, sans problème. Il te faudra créer un objet de connexion à MongoDB (en s'inspirant de FineNDB, tu as tout à fait raison), mais aussi modifier l'objet FineDatasource pour qu'il prenne en charge le nouveau type de connexion

triptic

unread,
Jul 19, 2016, 10:42:28 AM7/19/16
to finemedia-oss
Dernière question : je ne vois pas comment indiquer dans mes DAO d'utiliser telle ou telle datasource ?
Un de mes objectifs serait en particulier que les methodes de SELECT pointent sur une connexion et les UPDATE/INSERT sur une autre.
Un second serait qu'une partie de mon appli pointe sur les données MongoDB.

Encore merci d'avance pour ta réactivité.

Amaury Bouchard

unread,
Jul 19, 2016, 10:50:05 AM7/19/16
to finemedia-oss
Ah oui, c'est là que ça coince...
Les DAO automatiques sont prévues pour le cas d'utilisation le plus simple. Donc avec une seule source de données (qui s'appelle "_db" et qui gère du MySQL derrière).

Si tu veux pouvoir utiliser plusieurs sources de données, il faut que tu codes tes propres DAO, avec leurs propres constructeurs (pour prendre en paramètre la connexion à utiliser), et utiliser directement les fonctions de l'objet de connexion à la base de données...

triptic

unread,
Jul 22, 2016, 3:50:33 AM7/22/16
to finemedia-oss
Bonjour Amaury,
c'est noté, je vais essayer de me faire mon propre DAO.
Mais dans le cas d'une utilisation classique, avec une source de données pour un DAO, comment je peux indiquer la source à utiliser ?

Amaury Bouchard

unread,
Jul 22, 2016, 3:54:21 AM7/22/16
to finemedia-oss
Comme je le disais, les DAO automatiques utilisent une source de données appelée "_db" et qui doit gérer du MySQL (pas du Redis ni du Memcache, ni une autre source de données que tu aurais codée).
Donc c'est à toi de nommer correctement tes sources de données. Par exemple "_db" pour la connexion à MySQL qui va être utilisée par les DAO automatiques, et "_ndb" pour la connexion à Redis qui sera utilisée par les DAO que tu auras codées à la main.
Reply all
Reply to author
Forward
0 new messages