samedi 24 mai 2014

La différence entre Fetch Type & Fetch Mode dans hibernate :

Parmi les difficultés d'Hibernate est savoir différencié entre Fetch Type et Fetch Mode et combiné entre eux d'une facon optimal et efficace. Dans ce beiilet, je vais essayer de parler sur ces deux éléments :
  • Fetch type (lazy/eager) : quand Hibernate chargera les associations, soit à l’avance en mode eager, soit à la demande en mode lazy. 
  • Fetch mode (select/subselect/join) comment Hibernate chargera les associations, par exemple est qu'il va utiliser des requêtes SELECT supplémentaire ou ou faut-il utiliser une jointure.
Certaines combinaisons de ces deux éléments n'ont pas de sens. Dans le tableau suivante donne un récupulatif des différent combinausons possibles :
  • Fetch Type EAGER
    1. Fetch Mode SELECT : Hibernate charge les éléments des collection grâce à des requêtes SELECT supplémentaires. L’exécution de ces requêtes se fait immédiatement après la première requête.
    2. Fetch Mode SUBSELECT : Comme le cas précédent mais au lieu des requêtes SELECT on utilise des requêtes Select imbriqué.
    3. Fetch Mode JOIN : Le mode join quand a lui concerne l'utilisation des jointure pour retrouver les éléments des assocations.
  • Fetch Type LAZY
    1. Fetch Mode SELECT : Hibernate charge les éléments de la collection a la demande grâce a une requête SELECT supplémentaire
    2. Fetch Mode SUBSELECT : Pas de sens.
    3. Fetch Mode JOIN : Pas de sens.
Read more ...

jeudi 30 mai 2013

Quelle est la différence entre EAGER et LAZY dans le Fetch Type d'Hibernate? Et lequel choisir?

Pour récupérer les élément d'une collection contenu dans un objet, on a deux possibilités :
  • Soit on effectue la récupération des éléments de la collection, dès que l'on récupère l'objet et donc on initialise la collection. C'est le Fetch Type "eager" (fetch=FetchType.EAGER).
  • Soit on n'effectue la récupération des éléments de la collection que à la demande, c'est à dire dès que l'on aura besoin de la collection. C'est le Fetch Type "lazy" (fetch=FetchType.LAZY).
Le Fetch Type recommandé est le "lazy" car on ne fait pas des requêtes inutiles vers la base de données surtout si on n'a pas besoin d'utiliser cette collection.

La stratégie que l'on utilise si on besoin de la collection, c'est que l'on crée une requête HQL en précisant à la main les jointures : left outer join, etc.
Read more ...

Comment installer Open ERP 7 sous Ubuntu 13.4

Open ERP est l’ERP open-source le plus connu au monde. Dans cette billet, je vous montre comment installer Open ERP version 7 sous Ubuntu 13.4.

Étape - 1 : Installer postgresql

$sudo apt-get install postgresql

Puis on crée l' utilisateur de base de données "openerp"

$ sudo -su postgres
postgres:~$ createuser openerp
postgres:~$ exit

Étape -2 : Installer les dépendances

$sudo apt-get install python-dateutil python-docutils python-feedparser python-gdata python-jinja2 python-ldap python-libxslt1 python-lxml python-mako python-mock python-openid python-psycopg2 python-psutil python-pybabel python-pychart python-pydot python-pyparsing python-reportlab python-simplejson python-tz python-unittest2 python-vatnumber python-vobject python-webdav python-werkzeug python-xlwt python-yaml python-zsi


Étape - 3 : Installer la dernière version de Open ERP 7

$wget http://nightly.openerp.com/7.0/nightly/src/openerp-7.0-latest.tar.gz
$tar zxvf openerp-7.0-latest.tar.gz
$cd openerp-7.0-20130528-231047/
$sudo python setup.py install


Étape - 4 : Lancer le service

$./openerp-server

Étape - 5 : Allez dans votre navigateur

http://localhost:8069/

Créer votre base de donnée et ...
Read more ...