Salve a tutti,
Sto cercando di mappare delle tabelle in un database con la seguente struttura. (utilizzando il framework hibernate)
codice:
+-------------+ +-----------------+ +----------------+
|country | | country_i18n | | language |
+-------------+ 1..1 --------- 0..n +-----------------+ 0..n ------------- 1..1+----------------+
| id (pk) | | id (pk) | | id (pk) |
| code (uk) | | name | | code (uk) |
+-------------+ | language_id (fk)| | name |
| country_id (fk) | +----------------+
+-----------------+
Lo scopo finale è quello di poter gestire l'internazionalizzazione a livello dei dati (nome delle località, nazioni, e altri termini,...)
Vorrei fare in modo di mappare in uno di questi modi:
1) country e countryI18n diventano in una sola classe i18n
2) country come classe astratta e countryI18n che eredita da country
3) composizione fra country e countryi18n senza usare delle collezioni (quindi invece di avere List<CountryI18n> nella classe country ci sarebbe solo CountryI18n country) --> sarebbe la soluzione che desidererei
In pratica il risultato sarebbe:
1) soluzione 1
codice:
public class CountryI18n {
Integer id
String code
String nome_tradotto
}
Soluzione 2)
codice:
public abstract class Country {
Integer id
String code
}
public class CountryI18n extends Country {
String nome_tradotto
Language language
}
Soluzione 3)
codice:
public class Country {
Integer id
String code
CountryI18n paese_tradotto
}
public class CountryI18n {
Integer id
String nome_tradotto
Language language
}
Come potrei fare per mappare le classi in uno dei tre modi. Secondo voi quale soluzione è la più elegante e concettualmente giusta?
Grazie