HibernateのEntityクラスからテーブル情報を逆引きする
何の因果かタイトルのような必要にせまられましたので、調べた結果などを書いておきます。
ググってもなかなかこれというのに出会えず、Hibernateのソースを見たりして調べました。
Hibernateのバージョンは3。試しに作ってみたのは以下のようなソースです。
public class Test { public static void main(String[] args) { Test me = new Test(); Table table = me.getTable(SomeEntity.class); System.out.println(table.getName()); } public Table getTable(Class<?> clazz) { Configuration config = new Configuration().configure("hibernate.cfg.xml"); PersistentClass classMapping = config.getClassMapping(clazz.getName()); return classMapping.getTable(); } }
Hibernateの設定ファイルを喰わせた Configuration から、クラス名(設定ファイルに記述してあるEntityクラス)指定で PersistentClass を取得します。
この PersistentClass から getTable() すると返ってくる Table に、テーブル名やカラム名が入っているので、あとはご随意に。