2013-01-01から1ヶ月間の記事一覧
商品と商品画像のように、DBのテーブルは1:nの関係にあるが、 コード上では商品クラスは画像名のみ欲しい場合のマッピング。ItemテーブルとItemImageテーブルが外部キーitem_idで関連している場合 Item.hbm <set name=“imageNames” table=“ITEM_IMAGE”> <key column=“ITEM_ID”> <element type=“string” column=“FILE_NAME”> </set> Item.java pr…
sqlRestrictionでは、ルートとなるエンティティのエイリアスは{alias}で取得できるが、 joinしたエンティティのエイリアスは取得できない。例 Criteria criteria = session.createCriteria(Bid.class); criteria.createAlias("item", "aliasItem"); criteria…
PostgreeSQL用のGUI管理ツールとしてpgAdminがあるが、 pgAdmin上でselectした結果をExcelにコピペしても、1セルにすべて入ってしまう。今までは一度別ファイルに張り付けた後、Excelの外部データの取り込みで区切り文字を指定していた。 しかし、Excelに直…
session.beginTransactionを呼んだ後、そのトランザクションがコミットorロールバックされる前に、もう一度beginTransactionを呼ぶと同じインスタンスが返される。そのため、以下のようなコードはエラーとなる。 private void saveItem(Session session) { T…
Eclipse 4.2ブレークポイントで止まる→右クリック→表示(Display)→Ctrl+Shift+D→表示タブに式を記述→式を選択して右クリック→実行(Execute)また、表示タブの右クリックから強制リターン(Force Return)を選択すると、選択した式の実行結果で、returnすることが…
Javaのクラス図 DBのER図 商品は複数のカテゴリに属し、カテゴリには複数の商品が存在する。 これは多対多関連となる。これをRDB上で実現するためには、商品とカテゴリのマッピングをする中間テーブルを使うことになる。 Java上で中間テーブルクラスを作らず…
Javaのクラス図 DBのER図 DB上は請求を一つのテーブルにしたいとする。(joinが重いから)この場合のマッピングは、以下のようにdiscriminatorとsubclassを利用して実現できる。 ・Billing.hbm.xml <discriminator type="string"> <column name="billing_details_type"></column> </discriminator> <property name="text" /> <property name="amount" /> </property></property>
Javaのクラス図 DBのER図 DB上はUserとAddressの二つのテーブルに分けたくないとする。(joinが重いから)この場合のマッピングは、以下のようにcomponentを利用して実現できる。・User.hbm.xml <component name="homeAddress" class="hoge.package.Address"> <property name="zip_code" column="home_zip_code"></property> <property name="city" column="home_city"></property> </component>
自動生成のデフォルトで生成される多対一関連のhbmは以下のようになっている。 <many-to-one name="item" class="sample.Item" fetch="select" cascade="save-update"> <column name="item_id" /> </many-to-one> この場合、itemフィールドにItemオブジェクトをセットし、保存すると、自動的にそのItemのIDがitem_idカラムに保存される。しかし、毎回Itemオブジェクトをロードしてセット…
SQL Server 2008外部キー制約がついているカラムを変更したい場合は、cascadeを有効にすると、関連先のカラムも同時に変更できる。例 ALTER TABLE bid ADD CONSTRAINT bid_user_fk FOREIGN KEY(user_code) REFERENCES user (user_code) ON UPDATE CASCADE ON…
Root→Sub1→Sub2のように関連がある場合、関連するエンティティはデフォルトでは全て遅延フェッチされる(実際にアクセスされるまでSQLが発行されない)hbmでfetch="join"を設定することで、常に同時にselectすることができる。 <set name="fetchSub1s" table="fetch_sub1" inverse="true" fetch="join"> <key> <column name="root_id" not-null="true" /> </key> <one-to-many class="fetch.FetchSub1" /> </set> 常に…
Hibernate In Action 6.2DBのテーブル構成を意識せずエンティティの関連を取る例: 商品に複数の画像が紐付いていて、必要な情報は画像のファイル名のみ。 Item→ItemImageが1対多の関係。 DB上はItemImageがitem_idで関連を保持している。Item.java /** Item…
Hibernate In Action 6.1.2DBのテーブルとエンティティのフィールドに差異がある場合のマッピング例:DBのテーブルにはcurrencyがないが、エンティティにはcurrencyとamountがある。DBにはamountがUSDとして保存される ・エンティティの金額定義 // Monetary…
Hibernate In Action 4.4.1 ・存在しないエンティティを読み込んだ場合 load:例外が発生する get:nullが返る ・プロキシが利用されるかどうか load:Proxyクラスが返され、実際に利用されるタイミングでselectが走る get:常に実体クラスが返る ----- Category…
Eclipseプラグインのhibernate-toolsを以下からインストールhttp://download.jboss.org/jbosstools/updates/stable/juno/ テーブル追加 create table BID( bid_id bigint not null, amount bigint, item_id bigint, user_id bigint, created_date date ); cr…
環境 hibernate-3.5.2http://sourceforge.jp/projects/sfnet_hibernate/downloads/hibernate3/3.5.2-Final/hibernate-distribution-3.5.2-Final-dist.zip/ postgreSQL9.1JDBCドライバ:http://jdbc.postgresql.org/download.html hibernate-3.5.2-Final-dist…
hibernateを使ってSQL Serverへ接続を行う際、毎朝実行されるジョブで以下の例外が発生することがあった。 ・org.hibernate.exception.JDBCConnectionException: could not execute query -Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Rea…
正規表現を視覚化 http://www.regexper.com/
だいぶ前にgit hubに登録した後、OSをクリーンインストールしてしまっていたので環境再構築を試みる。 エクスプローラ統合型は嫌なので、以下のアプリをとりあえずインストール。 Github for Windows(http://windows.github.com/) Eclipseには入れた覚えのな…