web-dev-qa-db-fra.com

IntelliJ IDEA 10 générer une entité (POJO) à partir du modèle DB

Comment puis-je générer une entité (POJO) à partir d'un modèle de base de données à l'aide d'IntelliJ IDEA 10. Je crée une "source de données" dans IntelliJ mais je ne sais pas comment générer le POJO.

66
pierre

MISE À JOUR:
Dans IntelliJ 16, cette fonctionnalité est désormais implémentée. Les étapes pour le faire sont:
1. Base de données afficher le menu contextuel
2. Extensions scriptées
3. Générer des POJO


Vous pouvez lire plus ici:
Demande de fonctionnalité: autoriser "générer des classes à partir du schéma de base de données" pour les développeurs plain-JDBC


Vous devez d'abord dire à intelliJ que vous utilisez Hibernate (je suppose que vous l'êtes si vous avez besoin de l'orm pojo de la table)

  1. Allez dans "Structure du projet" (alt+ctrl+shift+s)
  2. Dans "Paramètres du projet", sélectionnez "Modules"
  3. Presse + et ajoutez la facette Hibernate dans votre module.

Maintenant que vous avez configuré votre facette de configuration de mise en veille prolongée, vous pouvez extraire vos pojos.

  1. Dans votre panneau horizontal en bas à droite, vous verrez maintenant un onglet appelé "Persistance" (si vous ne trouvez pas l'onglet Persistance, vous pouvez l'afficher en choisissant Affichage> Fenêtres d'outils> Persistance)
  2. Là, vous pouvez faire un clic droit sur l'icône d'hibernation nommée comme votre module
  3. Allez dans "Générer le mappage de persistance" - "par schéma de base de données"
  4. Maintenant, je suppose que vous pouvez trouver votre chemin ...
  5. Dans les paramètres généraux, sélectionnez la source de données que vous souhaitez utiliser et vous pouvez maintenant voir toutes les tables de votre objet de source de données
  6. Maintenant, vous pouvez faire beaucoup de choses, ajouter des relations avec le signe +, changer le nom et le type des propriétés du pojo, etc. pojo n'est pas valide. Remplacez-le par celui dont vous avez besoin et vous êtes prêt à partir!
118
zpontikas

La valeur par défaut Extensions scriptéesGenerate POJOs.groovy n'est pas très bon lorsqu'il s'agit de tables avec trait de soulignement (ce qui est très courant).

Je fais donc quelques modifications.

Le code principal

def calcFields(DasObject table) {
    DasUtil.getColumns(table).reduce([]) { fields, col ->
        def spec = Case.LOWER.apply(col.dataType.specification)
        def typeStr = typeMapping.find { p, t -> p.matcher(spec).find() }.value
        fields += [[
                       name : javaName(col.name, false),
                       type : typeStr,
                       annos: """
    /**
     * $col.comment
     */"""]]
    }
}

static String javaName(String str, boolean capitalize) {
    def s = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, str);
    capitalize || s.length() == 1 ? s : Case.LOWER.apply(s[0]) + s[1..-1]
}

Vous pouvez trouver l'intégralité de Gist ici https://Gist.github.com/aristotll/ad799a7462e8b705b26103944cca24a6

7
aristotll