Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] jForms et DAO ne gèrent pas les clés étrangères

Posted by madaweb_frm on 02/10/2010 11:19

Bonjour,

J'utilise une base de données MySQL INNODB donc j'utilise des clés étrangères (je me demande aussi pourquoi peut-on appeler MyIsam de relationnel!!!) Le soucis c'est que DAO ne reconnaît pas les FK! Donc le fait qu'on ne peut pas supprimer un parent, etc etc est un soucis pour mon appli web

  [Opened] Re: jForms et DAO ne gèrent pas les clés étrangères

Reply #1 Posted by laurentj on 02/10/2010 11:34

Salut,

peux-tu expliciter ton problème ? parce que là, je ne vois pas en quoi jDao est bloquant.

  [Opened] Re: jForms et DAO ne gèrent pas les clés étrangères

Reply #2 Posted by madaweb_frm on 02/14/2010 07:53

Dans jDao, il n'est pas indiqué qu'un champ est une foreign key

J'ai vu d'autres frameworks java CRUD qui gère bien les "cascade delete/update" donc si un champ est un foreign key, cela affiche une liste déroulante où il faut choisir mais pas saisir

Je ne sais pas si jForms peut faire cela?

  [Opened] Re: jForms et DAO ne gèrent pas les clés étrangères

Reply #3 Posted by foxmask on 02/14/2010 08:57

Bonjour,

je suppose que les evenements automatiques le permetttent.

cdt


@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !

  [Opened] Re: jForms et DAO ne gèrent pas les clés étrangères

Reply #4 Posted by laurentj on 02/14/2010 15:10

d'autres frameworks java CRUD qui gère bien les "cascade delete/update"

c'est pas au framework de gérer ça à mon avis (tout depend aussi ce qu'on appelle par gérer). c'est le rôle du SGBD et ils ont déjà tout ce qu'il faut pour gérer ça, ça s'appelle les triggers entre autre.

donc si un champ est un foreign key, cela affiche une liste déroulante où il faut choisir mais pas saisir

aucun rapport avec les "trigger" et les cascades. De plus, afficher une liste déroulante (quelle qu'elle soit), ce n'est pas le rôle d'un ORM, mais du système de formulaire du framework.

Dans jDao, tu peux très bien indiquer une jointure avec une autre table. donc coté ORM, il n'y a absolument rien qui manque. Et les cascades et cie, c'est dans la base que l'on définit ça, le SGBD fera la cascade bien plus sûrement et plus rapidement que si on faisait tout ça "à la main" en php.

Ce qu'il manque, éventuellement, c'est donc dans jForms, qu'il reconnaisse automatiquement la déclaration d'une table étrangère dans un dao lorsqu'on fait un initFromDao. Mais tu peux tout de même initialiser toi même tes listes déroulantes de clé étrangère via initControlFromDao. une ligne de code, ça ira ? ;-)

  [Opened] Re: jForms et DAO ne gèrent pas les clés étrangères

Reply #5 Posted by dantahoua on 02/15/2010 21:46

Bonjour! Si tu veux faire des "ondelete - cascade" ou autre, tu dois les faire au niveau de la bd, MySql est prévu pour quand tu utilises inodb... Un petit exemple vite fait, mais le site de MySql te sera fort utile:

 CREATE TABLE `classification` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `fk_network_id` int(10) unsigned NOT NULL,
  `fk_city_id` int(10) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_network_id` (`fk_network_id`),
  KEY `fk_city_id` (`fk_city_id`),
  CONSTRAINT `classification_ibfk_1` FOREIGN KEY (`fk_network_id`) REFERENCES `network` (`id`) ON DELETE CASCADE,
  CONSTRAINT `classification_ibfk_2` FOREIGN KEY (`fk_city_id`) REFERENCES `def_city` (`id`) ON DELETE CASCADE
 ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

Donc ici dans mon exemple, si j'efface une ville ou un réseau (via jDao par exemple), la classification correspondante sera effacé automatiquement par Mysql...

 
Page
  1. jForms et DAO ne gèrent pas les clés étrangères