1-1.Hibernate/cfg.xml/hbm.xml/propertiesの設定

2020-10-25

今日は管理人(@vip___p)です。

今回はhibernateの設定を行ったのでまとめています。
備忘録用です。

初めてHibernateを使用することになったのですが
hibernateの環境設定を行ってみると意外と
参考にできる資料がなく苦労しました。
mavenなどは使用していません。

またVersionが古いものばかりで正直正しいのかわからなかったです。
私のものはVersion5を使用しています。

少し適当な内容かもしれませんが
気になる点があればコメントお願いします。

同じような方は是非参考にしてください。

HibernateのSessionの保存や削除について

HibernateのExpressionの代わり

HibernateのcreateCriteriaの代案や苦労点について

Hibernateの環境設定での苦労点

Hibernate

  • Hibernate.cfg.xml
  • sample.hbm.xml
  • hibernate.properties

この3点で苦労しました。
順に確認していきましょう。

Hibernate.cfg.xml

簡単に言うとDBの接続とかHibernate特有のmappingの設定を行ったりします。

DOCTYPEの宣言部分で間違えており苦労しました。

ですがcfg.xmlはダウンロードしたHibernateのファイルのetcの中に入っているのです。

これを知っていれば苦労が減りました。

基盤となる部分ができているので動きを確認するには十分です。
あとはクラスパスなど注意して配置してください。
不適切な場所に配置すると当然読み込まれないことがあります。

sample.hbm.xml

こっちのsample.hbm.xmlはHibernate.cfg.xmlでmappingで設定したテーブルの定義みたいなイメージです。

直感で分かる内容が多いと思います。

hibernate-mappingの中の記述は意外とわかりやすかったですが
DOCTYPEの部分に誤りがあり苦労しました。

正確なエラー内容は忘れてしまったのですが

  • ダウンロードできない
  • mapping,class,idとかの宣言する必要がある

とかならDOCTYPEの部分を疑ってみてください。

あとはPOJOクラスの設定も忘れず行ってください。
setter/getterのあいつです。

hibernate.properties

hibernate.propertiesも一応配置しました。
これも書き方がわからに人が多いかもしれませんが
Hibernate.hbm.xml同様にetcファイルの中に入っています。

hibernate.propertiesを記述する場合は、
Hibernate.cfg.xmlのsession-factoryの記述はmappingだけを記載して
DBの接続などはHibernate.propertiesで記述します。

元々は記述していませんでしたが
「cannot be null when ‘hibernate.dialect’ not set」
このエラーメッセージで配置するはめに。

そのほかの解決策としては下記のコードを記述しました。

Configuration cfg = new Configuration()
.addClass(org.hibernate.auction.Sample.class)
.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLInnoDBDialect");

この記述をすることによりエラーメッセージは消えsessionを取得することができました。

まとめ

まとめ

今回は簡単にHibernateの苦労点をまとめました。

また困ったら追記していこうと思います。