忍者ブログ
[62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72]

DATE : 2025/01/20 (Mon)
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


DATE : 2006/05/31 (Wed)

少し前までいろいろと忙しく、「東北大学未来科学技術共同研究センター川島隆太教授監修 脳を鍛える大人の DS トレーニング」も一週間ほどプレイできませんでした。

今日は少し余裕があったので、脳トレの「計算100」をプレイしてみました(´∀`)

が、70問目あたりからペンさばきがあやしくなり、脳内もだんだんモヤモヤと…… orz

結果、最後にトレーニングした時よりも30秒も遅くなっていました orz

(;´Д`)ただでさえ計算が遅い(新幹線級と自動車級の境界あたり)ので、これはかなり致命的です

(;^ω^)明日からまた、真面目にトレーニングしようかと思います。

PR

DATE : 2006/05/30 (Tue)

前回の記事

表名がクラス名と異なる場合

前回の記事では、 Person クラスを Person 表に関係付ける例を示しました。

それでは、Person クラスを person_table 表に関係付けたい場合はどうなるでしょうか。

Table アノテーションを使うと、クラスを関係付ける表を指定することができます。Table アノテーションは、クラス宣言の前に付加します。

Table アノテーションの例を以下に示します。「<表名>」の部分を関係付ける表名に置き換えます。

@Table(name="<表名>")

上に挙げた Person クラスを、 person_table 表に関連付ける場合のコードを以下に示します。

(import 文は省略)

@Entity
@Table(name="person_table")
public class Person {
    int id;
    String name;
    int age;

    public Person() { }

    public void setId(int id) {
        this.id = id;
    }

    @Id
    public int getId() {
        return this.id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return this.name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getAge() {
        return this.age;
    }
}

つづきます


DATE : 2006/05/29 (Mon)

プロパティの定義方法

以下の形式のメソッドを定義すると、プロパティを定義できます。

なお、<PropertyType> はプロパティの型、<PropertyName> はプロパティ名です。また、設定用のメソッドの引数名は自由です。

メソッドに書くプロパティ名の先頭は大文字です。

読み取り用 public <PropertyType> get<PropertyName>()
書き込み用 public void set<PropertyName>(<PropertyType> arg)

上記のメソッドを両方定義すると、読み取り書き込み可能 (read-write) プロパティ、前者しかない場合は読み取り専用 (read-only) プロパティ、後者しかない場合は書き込み専用 (write-only) プロパティになります。

なお、<PropertyType> が boolean 型の場合は、以下の形式でもプロパティが定義されます。

読み取り用 public <PropertyType> is<PropertyName>()
書き込み用 public void set<PropertyName>(<PropertyType> arg)

読み取り用のメソッド名の先頭が get から is に変わっただけです。

プロパティの定義の例を以下に示します。

(import 宣言やメソッドの中身などは省略)

// date プロパティ(読み出し書き込み可能)

public Date getDate() { ... }
public void setDate(Date date) { ... }

// age プロパティ(読み出し専用)

public int getAge() { ... }

// list プロパティ(書き込み専用)

public void setList(List list) { ... }

// human プロパティ(読み出し専用)

public boolean isHuman() { ... }

なお、メソッドの中身は自由です。つまり、そのプロパティに相当するフィールドの値を操作してもよいですし、他の値を操作しても問題ありません。

プロパティ名

上の例で見たように、メソッド名には get や is の直後の文字を大文字で書きます。しかし、実際のプロパティ名は、その文字を小文字にした文字列となります。

例えば、getHoge のプロパティ名は hoge となります。

ただし、getURL などの、get や is の直後の次の文字も大文字の場合は、直後の文字は小文字に変わりません。

つまり、getURL のプロパティ名は URL となります。

参考文献


DATE : 2006/05/28 (Sun)

前回の記事

簡単な例

次の項目からなる表を、単純にクラスで表現してみます。

表の名前は、「Person」とします。

  1. id(整数、プライマリーキー)
  2. name(文字列)
  3. age(整数)
(import 文は省略)

public class Person {
    int id;
    String name;
    int age;

    public void setId(int id) {
        this.id = id;
    }

    public int getId() {
        return this.id;
    }
    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return this.name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getAge() {
        return this.age;
    }
}

これで、 Person を生成するクラスができました。

しかし、これだけでは O/R マッピングを行えません。

前回の記事で示したように、Entity クラスにするための条件を満たさなければなりません。

上の例では、Entity アノテーションが付加されていません。また、引数なしのコンストラクタも用意されていません。そして、プライマリーキーを表すプロパティには Id アノテーションを付加しなければなりません。

以上のことを踏まえて、上の例を修正します。

(import 文は省略)

@Entity
public class Person {
    int id;
    String name;
    int age;

    public Person() { }

    public void setId(int id) {
        this.id = id;
    }

    @Id
    public int getId() {
        return this.id;
    }
    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return this.name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getAge() {
        return this.age;
    }
}

これで、Person が O/R マッピングできるようになりました。

つづきます

忍者ブログ [PR]
ブログ内検索
最近の状況
リンク
カレンダー
12 2025/01 02
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
ブログ内検索
最近の状況
リンク
カレンダー
12 2025/01 02
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック