2008-01-01から1年間の記事一覧

多対多の関連テーブル

前に一度やったのを久しぶりにやると,またはまった・・・orz なので忘れないうちにメモ.Rails でテーブルの多対多を表すためには,has_and_belongs_to_many を使う.例えば,Person と FavoritThing というモデルがあったとする.Person は FoveritThing …

NamingStrategy

hibernateでマッピングを行うときに、値を指定しないとデフォルト値が使われる。エンティティ名=テーブル名、プロパティ名=カラム名など。プロパティ名が長い場合、例えば、firstName というプロパティがあった場合、これはそのまま firstName というカラ…

Hibernate Annotationsでの拡張

リファレンスガイドの2章まで訳したところで、そろそろ実戦に使ってみようとして色々はまった。その悪戦苦闘のメモ。後から思えば、hbm2ddlのせいではまったともいえる。 hbm2ddl Hibernateのマッピング情報から、データベースあわせたスキーマ(SQL)を作成…

2.2.7. Mapping secondary tables 第2テーブルのマッピング

2.2.6. Mapping composite primary and foreign keys | 目次@SecondaryTable か @SecondaryTables をクラスレベルに使うことで、一つのエンティティBeanを複数のテーブルにマッピングすることができるよ。あるカラムが特定のテーブルにあることを説明するの…

2.2.6. Mapping composite primary and foreign keys 複合主キーと外部キーのマッピング

2.2.5.5. Association fetching | 目次 | 2.2.7. Mapping secondary tables>複合主キーは埋め込みクラスを主キーとして使うよ。だから、@Id と @Embeddable アノテーションが使えるよ。また、@EmbeddedId アノテーションでもいいよ。依存するクラスは Serial…

2.2.5.5. Association fetching 関連のフェッチ

2.2.5.4. Transitive persistence with cascading | 目次 | 2.2.6. Mapping composite primary and foreign keys>関連エンティティのフェッチに、即時と遅延のどちらでも使えるよ。fetch パラメータは FetchType.LAZY か FetchType.EAGER をセットできるよ。…

2.2.5.4. Transitive persistence with cascading カスケーディングによる連鎖的永続化

2.2.5.3.3. Many-to-many | 目次 | 2.2.5.5. Association fetching>cascade 属性が、値に CascadeType の配列を取ることに気が付いていると思うよ。EJB3 のカスケードのコンセプトは、Hibernate の 推移的永続化と操作の連鎖によく似ているよ。けど、ちょっ…

2.2.5.3.3. Many-to-many 多対多

2.2.5.3.3. Many-to-many | 目次 | 2.2.5.4. Transitive persistence with cascading> 2.2.5.3.3.1. Definition 多対多関連は @ManyToMany アノテーションで定義されるよ。@JoinTable アノテーションで関連テーブルと結合条件を書かないといけないよ。関連が…

2.2.5.3. Collections コレクション

2.2.5.3. Collections | 目次 | 2.2.5.3.3. Many-to-many> 2.2.5.3.1. Overview 概要 Collection、List(順序ありでもなしでも)、Map、Set にマッピングできるよ。EJB3 仕様では、@javax.persistence.OrderBy アノテーションを使って順序つきリストにマップ…

2.2.5. Mapping entity bean associations/relationships

2.2.4. Mapping inheritance | 目次 | 2.2.5.1. One-to-one> 2.2.5.1. One-to-one 2.2.5.2. Many-to-one 2.2.5.3. Collections 2.2.5.3.3. Many-to-many 2.2.5.4. Transitive persistence with cascading 2.2.5.5. Association fetching

2.2.4. Mapping inheritance. マッピング継承

2.2.3. Mapping identifier properties | 目次 | 2.2.5. Mapping entity bean associations/relationships>EJB3 は3つの継承の方法をサポートしてるよ。 クラス毎のテーブル戦略: Hibernateでの クラス階層毎に1つのテーブル戦略: Hibernateでの ジョインド…

2.2.3. Mapping identifier properties. IDのマッピング*1

2.2.2.2. Declaring column attributes | 目次 | 2.2.4. Mapping inheritance>@Id アノテーションはエンティティBeanの識別子を定義するよ。このプロパティはアプリケーションでもセットできるけど、Hibernateで生成させたほうがよいよ。@GeneratedValueアノ…

2.2.2.2. Declaring column attributes. カラム属性の宣言

2.2.2. Mapping simple properties | 目次 | 2.2.3. Mapping identifier properties>プロパティマッピングに使われるカラムは、@Column アノテーションで定義できるよ。デフォルト値を上書きするときに使うよ。詳しくは EJB3 仕様を参照。次のプロパティに使…

2.2.5.2. Many-to-one 多対一

2.2.5.2. Many-to-one | 目次 | 2.2.5.3. Collections>多対一関連は @ManyToOneアノテーションをプロパティレベルに宣言するよ。 @Entity() public class Flight implements Serializable { @ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE}…

2.2.5.1. One-to-one 一対一

2.2.5. Mapping entity bean associations/relationships | 目次 | 2.2.5.2. Many-to-one>@OneToOne を使って、エンティティBeanに1対1関連を関連付けることができるよ。1対1関連は3つの方法があるよ。同じ主キーを共有する方法、一方のエンティティが外部キ…

2.2.2. Mapping simple properties. 単純なプロパティのマッピング

目次 2.2.2.1. Declaring basic property mappings. Basicプロパティマッピング宣言 エンティティBeanの、@Transientが付いていない、staticでもtransientでもない全てのプロパティ(フィールドでもメソッドでも)は永続化するとみなされるよ。アノテーショ…

Chapter 2. Entity Beans. 第2章 エンティティ Bean

Chapter 1. Setting up an annotations project | 目次 | 2.1. Intro> 2.1. Intro 2.2. Mapping with EJB3/JPA Annotations 2.2.1. Declaring an entity bean 2.2.2. Mapping simple properties 2.2.2.2. Declaring column attributes 2.2.3. Mapping identi…

Chapter 1. Setting up an annotations project. 第1章 アノテーションプロジェクトのセットアップ

Preface 序文 | 目次 | Chapter 2. Entity Beans> 1.1. Requirements 必要要件 Hibernate Annotations の廃物を Hibernate の website からダウンロードして解凍してね。 このリリースは Hibernate Core 3.2.0 GA 以降が必要だよ。 このリリースは Hibernate…

Hibernate Annotations Reference Guide インデックス

Hibernate Annotations のリファレンスガイドの日本語訳がなかったので、ざっくり訳してみる。間違い等指摘いただけるとありがたいです。原文: http://www.hibernate.org/hib_docs/annotations/reference/en/html_single/Table of Contents Preface 序文 Ch…

Preface 序文

目次 | Chapter 1. Setting up an annotations project>Hibernate では、他の O/R マッピングツールとおんなじように、変換するためのメタデータが必要だよ。 Hibernate 2.x では、マッピングのためのメタデータはほとんど XML ファイルだったよ。他の選択肢…

2.2.1. Declaring an entity bean. エンティティBean宣言

2.2.1. Declaring an entity bean | 目次 | 2.2.2.2. Declaring column attributes>永続化するPOJOは エンティティBeanってことで、@Entity アノテーションを使うよ。(クラス定義につけてね) @Entity public class Flight implements Serializable { Long …

2.2. Mapping with EJB3/JPA Annotations. EJB3/JPAアノテーションによるマッピング

2.1. Intro | 目次 | 2.2.1. Declaring an entity bean>EJB3.0 エンティティは、POJO だよ。実は、Hibernate の 永続化エンティティとおんなじだよ。マッピングは JDK 5.0 のアノテーションで定義されるよ。アノテーションは、論理マッピングアノテーション…

2.1. Intro. イントロ

Chapter 2. Entity Beans | 目次 | 2.2. Mapping with EJB3/JPA Annotations>この章では EJB 3.0(俗に言う Java Persistance)エンティティ アノテーションと、Hibernateの拡張についてだよ。

Mac OS X (10.4/Tiger)でSQLiteを使う際の注意点

Mac OS X 10.4 には標準で SQLite がインストールされているのだが、そのままでは問題あるらしい。 http://wiki.rubyonrails.org/rails/pages/HowtoUseSQLite ここの最後の方、Q: On Mac OS X (10.4/Tiger), I’m getting an error during migrations: に書い…

Railsによるアジャイル〜 rail2.0版 イテレーションA1

「RailsによるアジャイルWebアプリケーション開発」第2版にそってrails2.0でやってみる。6章のチュートリアルから。 ちなみに、rails2.0の参考したのは、http://api.rubyonrails.org/ 6.1 イテレーション A1:動くものを作る railsアプリケーションの作成 …

pluginのインストールとか

Railsでは追加機能や、基本機能の拡張などを plugin という方法で行います。pluginは様々なところで公開していて、プロジェクトごとにインストールして使用します。pluginの管理には基本、script/plugin を使います。このコマンドでSVNを使ってネットから必…

Criteria で Fetchmode.JOIN を使用した時の注意点

hibernate を使っていて、普段は 関連を lazyで扱いたいんだけど、あるポイントではlazyをfalseにして使いたい、ということがよくある。その場合、マッピングファイルのほうでは lazy=true にしておき、呼び出すプログラムのほうで明示的に FetchModeを変え…

Rails 2.0.2でサンプルアプリ

ちょっとましなサンプルを2.0.2の作法で作ってみることにする。 参考:http://www.kestrel.jp/modules/tinyd04//content/index.php?id=1上記URLを参考に、rails2.0流に。 1.ベースの作成 適当なところで、いつものベースの作成 $ rails rails_2.0-sample cr…

rails 2.0でscaffold

railsのバージョンを2.0にして、sqliteを使うようにしたので、初めから scaffoldで作ってみることにした。が、色々と変更されていて非常にはまった。。。 参考:http://d.hatena.ne.jp/idesaku/20071211/1197386955これまでだと、データベースにテーブルを作…

rakeでmigration

最近の rails はテーブルの作成は、rake の migration というのを使うらしい。 http://www.atmarkit.co.jp/im/carc/serial/proto04/proto04.html (↑この記事は細かいところが結構間違っている。。) RakeはRuby Make、つまり、Ruby版のビルドツールで、それ…