2-2.Hibernateで値をcopyしてDBに保存方法
こんにちは管理人(@vip___p)です。
今回はHibernateでのcopyの方法について
簡単に触れていこうと思います。
備忘録です。
下記のような方は是非参考にしてください。
- Hibernateの理解について浅い方
- HibernateのSessionについて理解が浅い方
HibernateのcreateCriteriaの代案や苦労点について
Hibernate/cfg.xml/hbm.xml/propertiesの設定
Hibernateでのcopyの方法について触れていきます。
Hibernateで値をコピーし保存する方法
Hibernateで値をコピーするには2つ注意が必要です。
まずはBeanUtils.copyPropertiesはSpringのものをインポートするようにしてください。
Springではないほうを使用すると値がコピーされずエラーが出てしまいました。
2つめはcopyPropertiesでコピーした値を保存する際は注意してください。
Session.saveでは値が保存されません。
DTOの型などが同じ場合でもうまくコピーされませんでした。
ですのでSession.saveOrUpdateというHibernateのメソッドを使用するようにしてください。
それではコードを確認していきましょう。
Transaction tx = null; try { Configuration config = new Configuration(); config = config.configure(); SessionFactory sessions = cfg.buildSessionFactory(); Session session = sessions.openSession(); tx = session.beginTransaction(); SampleDTO dto = new SampleDTO(); SampleCopyDTO copyDto = new SampleCopyDTO(); // DTOに値をセット dto.setName("name") // 第一引数を第二引数にコピーする BeanUtils.copyProperties(dto, copyDto); // 保存 session.saveOrUpdate(copyDto); tx.commit(); } catch (HibernateException he) { if (tx!=null) tx.rollback(); throw he; } finally { session.close(); }
まとめ
今回のまとめです。
Hibernateでの値をcopyする方法についてまとめました。
皆さんの参考になれば幸いです。