Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1780 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Table sans primary key avec Hibernate/JAVA

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Table sans primary key avec Hibernate/JAVA

n°1516766
zizou771
http://mobiles.forumpro.fr
Posté le 20-02-2007 à 09:22:40  profilanswer
 

Bonjour, voici mon souci.
Je veux avoir acces aux données d'une TABLE A qui n'a pas de clé primaire (car elle a été faite il y a longtemps).
Pour obtenir une clé unique de la TABLE A, je concatene 9 champs de la table (ce qui me donne un String).
Et dans mon code j'ai une variable:
List<String> listKey
qui contient l'ensemble des cles unique, et que je souhaite récupérer une liste: List<MonObject> listMonObject
correspondant au cle unique de la variable listKey.
Or la TABLE A contient + de 500 000 lignes et ca prend 2 jours au moins
 
Voici ma methode dans mon dao:

Code :
  1. @SuppressWarnings("unchecked" )
  2. public List<MonObject> listByConcatIdProperty(final List<String> propertyList) {
  3.  final String request = String.format(" from %s"
  4.    + " as monObject where (monObject .id.property1 ||'.'|| monObject .id.property2 ||'.'|| "
  5.    + "monObject .id.property3 ||'.'|| monObject .id.property4 ||'.'|| monObject .id.property5 ||'.'|| "
  6.    + "monObject .id.property6 ||'.'|| monObject .id.property7 ||'.'|| monObject .id.property8 ||'.'|| "
  7.    + "monObject .id.cdevcot ||'.'|| monObject .id.property9) in (:propertyList)", getReferenceClass()
  8.    .getName());
  9.  final Query query = this.getCacheableQuery(request);
  10.  query.setParameterList("propertyList", propertyList);
  11.  return query.list();
  12. }


 
 
Auriez-vous une idee d'une autre maniere de procéder qui serai beaucoup + rapide?
 
Merci d'avance.

mood
Publicité
Posté le 20-02-2007 à 09:22:40  profilanswer
 

n°1516803
brisssou
8-/
Posté le 20-02-2007 à 10:04:22  profilanswer
 

pas possible, il faut une clef primaire.
 
quel rapport avec hibernate ce que tu donnes là ?
 
mets tes 9 champs dans l'id de ta table, et pis voilà.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1516813
zizou771
http://mobiles.forumpro.fr
Posté le 20-02-2007 à 10:26:14  profilanswer
 

brisssou a écrit :

pas possible, il faut une clef primaire.
 
quel rapport avec hibernate ce que tu donnes là ?
 
mets tes 9 champs dans l'id de ta table, et pis voilà.


 
l'inconveignent c'est que je ne peux pas rajouter de clef primaire :(

n°1516822
brisssou
8-/
Posté le 20-02-2007 à 10:50:57  profilanswer
 

brisssou a écrit :


mets tes 9 champs dans l'id de ta table, et pis voilà.


 
http://www.hibernate.org/hib_docs/ [...] ompositeid
 
maÿssapu


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1516844
zizou771
http://mobiles.forumpro.fr
Posté le 20-02-2007 à 11:10:33  profilanswer
 

oui j'ai déjà creer une cle composite avec les 9 champs. Mais je doit copier les donnée de la TABLE A dans une TABLE B. Or il y a + de 500 000 lignes.
Donc j'ai un OutOfMemoryError si je stock les Id dans une List<MonObjectId>.
J'ai donc concatené ces 9 champs en un seul String, pour avoir une List<String>, afin d'eviter le probleme de memoire.  
Ensuite je recupere les MonObject 500 par 500 dans une List<MonObject> pour les mettre dans ma TABLE B.
Mais au bout de 10 minutes je commence a avoir des OutOfMemoryError  aussi :(

n°1516854
zizou771
http://mobiles.forumpro.fr
Posté le 20-02-2007 à 11:20:12  profilanswer
 

du coups j'essaye d'utiliser ScrollableResults mais pour l'instant c pas evident, j'essaye de comprendre...

n°1516869
brisssou
8-/
Posté le 20-02-2007 à 11:40:25  profilanswer
 

est-ce que ça serait pas plus performant de faire l'insert directement en SQL ?

Code :
  1. INSERT INTO TABLE_B
  2. SELECT *
  3. FROM TABLE_A
  4. WHERE ...


 
non ?


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1516874
cooltwan
Posté le 20-02-2007 à 11:44:14  profilanswer
 

brisssou a écrit :

est-ce que ça serait pas plus performant de faire l'insert directement en SQL ?

Code :
  1. INSERT INTO TABLE_B
  2. SELECT *
  3. FROM TABLE_A
  4. WHERE ...


 
non ?


 
euh ce genre de trucs fonctionne pas trop en general :(

n°1516879
brisssou
8-/
Posté le 20-02-2007 à 11:48:13  profilanswer
 

après un rapide (très rapide en fait) tour sur google (j'ai donc rien vérifié à fond), mySQL semble supporter ce genre de syntaxe. Si mySQL le fait, je suppose qu'un paquet d'autres doivent le faire aussi, non ?


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1516900
cooltwan
Posté le 20-02-2007 à 12:02:29  profilanswer
 

Pour remonter un cran au dessus dans un modele relationnel si tu as deux tables avec la meme structure c'est qu'il y a surement un souci de modelisation ...

Message cité 1 fois
Message édité par cooltwan le 20-02-2007 à 12:02:46
mood
Publicité
Posté le 20-02-2007 à 12:02:29  profilanswer
 

n°1516901
zizou771
http://mobiles.forumpro.fr
Posté le 20-02-2007 à 12:05:20  profilanswer
 

non elles n'ont pas le meme nombre de champs, juste une dizaine de champs en commun

n°1516903
cooltwan
Posté le 20-02-2007 à 12:12:47  profilanswer
 

pourquoi tu ecris pas dans un fichier tout ça progressivement pour pas saturer la memoire ?

n°1516928
brisssou
8-/
Posté le 20-02-2007 à 13:05:52  profilanswer
 

cooltwan a écrit :

Pour remonter un cran au dessus dans un modele relationnel si tu as deux tables avec la meme structure c'est qu'il y a surement un souci de modelisation ...


 
 
pas faux. Mais déjà, des tables sans clef primaire [:mlc] donc bon. Et puis, c'était un exemple hein !


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Table sans primary key avec Hibernate/JAVA

 

Sujets relatifs
[JSTL/JSP/JAVA] comment afficher la clé d'un .properties ? [Resolu][Java][Shell] Transfert de fichier par FTP
Question de conception d'une tablecherche livre java orienté web J2EE
livres sur le java[JAVA] Charger un fichier texte en mémoire dans un String
application java en deamon[java sources] client p2p simple
problème de tablejava et php site internet
Plus de sujets relatifs à : Table sans primary key avec Hibernate/JAVA


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR