Hibernate Books

All times are UTC - 5 hours [ DST ]



Post new topic Reply to topic  [ 1 post ] 
Author Message
 Post subject: Comprendre et améliorer l'utilisation du reverse engineering
PostPosted: Mon Dec 14, 2015 6:04 am 
Newbie

Joined: Mon Mar 17, 2014 12:00 pm
Posts: 1
Bonjour,

J'utilise Hibernate 4.2.7.

il y a un an, j'ai voulu développer un application à partir d'une base de données existante.
Cette base de données a pour caractéristiques notables :
- Plus de 200 tables
- Aucune des tables n'est caractérisée par une clé primaire
- Presque toutes les tables sont caractérisées par un champ ou plusieurs champs avec une contrainte d'unicité (qui pourraient servir de clé primaire)

Pour garder une certaine rétrocompatibilité avec l'existant, je ne pouvais pas modifier la base de données.

J'ai utilisé l'outil de reverse engineering, hbm2java, pour récupérer le modèle de données sous forme de classes Java.
Mon fichier de description ressemble à ceci :

Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd" >
<hibernate-reverse-engineering>
  <table-filter match-schema="MYSCHEMA" match-name="MYTABLE1" />
  <table-filter match-schema="MYSCHEMA" match-name="MYTABLE2" />
  <table-filter match-schema="MYSCHEMA" match-name="MYTABLE3" />
  <!-- ... -->
  <table-filter match-schema="MYSCHEMA" match-name="MYTABLE300" exclude="true" />
  <table-filter match-schema="MYSCHEMA" match-name="MYTABLE301" exclude="true" />
</hibernate-reverse-engineering>


Ce qui a eu pour effect de générer trois classes Java pour chacune des tables non exclues :
- une classe nommée TableX :
Code:
@Entity
@Table(name = "MYTABLE1", schema = "MYSCHEMA", uniqueConstraints = @UniqueConstraint(columnNames = "MYFIELD1"))
public class Mytable1 implements java.io.Serializable { ... }

- une classe nommée TableXId
Code:
@Embeddable
public class Mytable1Id implements java.io.Serializable { ... }

- une classe nommée TableXHome
Code:
public class FdutitHome {
  @Autowired
  private SessionFactory sessionFactory;
  /* some generated methods for CRUD operations... */
}


Voici mes questions :
  1. Aurais-je pu générer qu'une seule classe TableX à la place de TableX et TableXId ?
  2. Comment aurais-je dû procéder ?
  3. Aurais-je pu lier deux classes entre elles et décrire quelque part les dépendances ?
  4. Par exemple il y a une table qui représente les clients et une autre table qui contient les conseillers, comment aurais-je pu faire le lien entre les deux sans modifier la base de données ?


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.