Hibernate

key-value方式のデータ

Webサイトのデータなどは、キー(タイトルとか件名とか)に対応した値をそのまま表示する、また項目の追加に配慮したい、という要望があったりする。 その際に、項目をすべてテーブルにマッピングしてしまっては改修費用が膨らんでしまうので、すべてMap型で…

Hibernateでfrom dual

ここを読む http://www.hibernate.org/hib_docs/v3/reference/en/html/querysql.html#querysql-creating 例えばseqを動かす時。 (String) getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws H…

ネイティブSQLの発行

あまり使いたくはないが、ネイティブSQLを使う方法。 rs.get〜とかは不要で、entityクラスと直接関連付けることができるが、subClassとか利用していると余計なものまで勝手にjoinされてしまうので注意が必要かも。 以下が詳しい http://www.powerdee.com/it/…

一括更新

O/Rで一括更新などするのは邪道・・・というのはともかく、メンテ機能など作ろうとするとどうしても必要にはなる。 Hibernate3系ならばHQLを利用して一括更新するのが手っ取り早いかもしれない。 オリジナルはここ Session session = sessionFactory.openSes…

FileNotFoundException

ehcacheからでているもの [ERROR] DiskStore - net.sf.hibernate.cache.StandardQueryCacheCache: Could not create disk store <java.io.FileNotFoundException: /tmp/net.sf.hibernate.cache.StandardQueryCache.data (Permission denied)>java.io.FileNotFoundException: /tmp/net.sf.hibernate.cache.StandardQueryCache.data (…</java.io.filenotfoundexception:>

2.1.6

Hibernate2.1.6をM2から使おうとしたらリポジトリにないでやんの。 依存関係も3系とちょっと違ってコンパイル通らなかった。 jta.jarが一番悩んだ。 3系だと1.0.1Bで、2系が1.0.1だから互換性あるかと思ったのに、sessionFactoryの作成で java.lang.NoClassD…

Keyword 'Member'

テストででていた警告。 [WARN] PARSER - *** WARNING: Keyword 'Member' is being intepreted as an identifier due to: expecting IDENT, found 'Member' これはバグらしい。3.1β1で対応。 http://opensource.atlassian.com/projects/hibernate/browse/HHH…

forgot to call close()

criteriaを使用しているクラスのテストで以下の警告がでていた。 Running hoge.HogeDaoTest [WARN] ConnectionManager - unclosed connection, forgot to call close() on your session? (略) Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time ela…

Hibernateのウィザードいろいろ

Hibernateのウィザードがいくつかでているらしいのだが*1。 まぁ暇だし、入れてみるかということに。 一応公式?っぽい「Hibernate Tools for Eclipse」*2をまず入れてみた。 ・・・接続はできるのだが、export?してみると空のHTMLがでるだけだなぁ 例によっ…

いつでも悩むJavaのパス

テスト用のコンテキストを作成するのに、どうしてもパスが通らなくて放置していたのだけど。 ApplicationContext context = new FileSystemXmlApplicationContext(〜SpringのXMLファイル); ふとorg.springframework.context.support.FileSystemXmlApplicatio…

LONG?

OracleのLongあるいはLong RAWは使えるのかという疑問。 binaryとして扱えば可能なのか???

永続クラスの継承〜その2

※その1=>*1 つまり、「明示的ポリモーフィズムを親に定義するのか、子に定義するのか」ということだけど。 試しに孫まで作ってみた。 public class EntityA{ (略) } public class EntityB extends EntityA{ } public class EntityC extends EntityB{ } こ…

永続クラスの継承

永続クラスを継承して、一つのテーブルに対して2つのマッピングを定義してみた。 ところが、親クラスでfind()をかけると、複数のオブジェクト、つまり親クラスと子クラス双方のインスタンスが返却される。 show_sqlをしてみれば、2回のSQLが発行されれてい…

キャッシュの設定〜警告ログの削除

前回*1の続き。 以下のログを消したい。 WARN (Configurator.java:125) - No configuration found. Configuring ehcache from ehcache-failsafe.xml found in the classpath: file:/hoge/ehcache-failsafe.xml このログを出しているのは、ehcache.jarにあるn…

hibernateキャッシュ戦略・・・の書き方

キャッシュ戦略"read-only"*1を設定してみた。 <hibernate-mapping> <class name="hoge.Hoge" table="HOGE"> <cache usage="read-only"/> (略) </hibernate-mapping> 起動すると以下の警告がでる。 WARN (CacheFactory.java:36) - read-only cache configured for mutable: hoge.Hoge 理由が良く分からなかったのでソースを調べる。 public final class CacheFactor…

show_sqlの出力制御

hibernateの「3.5. オプションの設定プロパティ」*1のうち、「hibernate.show_sql」をlog4jで制御できるかと思ったのだが。 net.sf.hibernate.impl.BatcherImpl*2 private void log(String sql) { sqlLog.debug(sql); if ( factory.isShowSqlEnabled() ) Sys…

UUID

java2 SE5.0からはjava.util.UUID*1が追加された。 理論上世界で唯一のものとなるらしいので*2、永続化するときのIDとするには適切なのかもしれない。 現状うちのアプリでは主キーを持たないテーブルではSEQをまわしてIDとして、レコードはそのうち廃棄する…

CriteriaのGroup by

hibernate3からの機能っぽい Criteria criteria = getSession().createCriteria(Hoge.class);criteria.setProjection(Projections.projectionList() .add( Projections.rowCount()) .add( Projections.sum("kingaku")) .add( Projections.groupProperty("tor…

カーソルのクローズ

運用監視をしていて気がついたのだが、オープンカーソルの数が増えているのだ。 SELECT COUNT(*) FROM V$OPEN_CURSOR; COUNT(*) - 154 ま、まさかカーソルの解放漏れか???ということで必死こいて調べてみたのだが、さっぱり分からない。 とりあえず問題の…

hibernate3

微妙にパッケージが変わっているような気がするな。 旧:net.sf.hibernate.*; 新:org.hibernate.; うげー、めんどい。 あとはconfigの読み込みでもクラスが変わったみたいだ。 <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"><ref local="sessionFactory" /></property> </bean> こいつでは以下のExc…

複合Keyを利用したときのHibernateSystemException()

composite-idで複合Keyを設定してみた。 この時にExceptionが延々とでていた。 org.springframework.orm.hibernate.HibernateSystemException: identifier of an instance of hoge.entity.Users altered from hoge.entity.Users@146b6db[userId=3456789012,u…

Oracle-TimeStampをDbUnitでテストする

OracleでTimeStampを使うとこんなログがでる。 WARNING - USER.REGIST_DATE data type (1111, ‘TIMESTAMP(6)’) not recognized and will be ignored. See FAQ for more information. また、テストデータにTimeStampの日付を追加すると、エラーになる。 org.d…

使ってみよう。・・・その2

前回うまくいったはずが、とんだオチが残っていた。ここ*1を参考にしつつ、まずは継承元を変更。 extends DatabaseTestCase そうすると継承していないメソッドがあるので、追加する。 /* (non-Javadoc) * @see org.dbunit.DatabaseTestCase#getConnection() …

使ってみよう。

課題を残しつつも、どんどん進んでいこう。 まずはぐぐってみる*1。 ここのページ*2はEclipseを入れたときにも参考にしたところだな*3。 1.DBUnitの入手*4 Ver2.1をダウンロード2.解凍して、プロジェクトのlibフォルダに格納する3.各種ドライバのセッ…