Top / Java / Pingアプリケーション / テーブルのRowにマッピングされるPOJOを作る

つぎは先ほど作ったテーブル(webdb1.rss)のRowにマッピングされるJavaBeans?を作成します。これはEclipse上のGUIツールを作って自動生成することにします。ツールは以前使ってみたHibernate Toolsを使います。

一応目的としては、Hibernate Annotation を用いて*.hbm.xmlを使わないでやろうと思います。

手順は、ややこしいですが

  • hibernate.cfg.xmlの作成
  • consoleの作成
  • hibernate.reveng.xml の作成
  • Hibernate パースペクティブでソース生成(hibernate.reveng.xmlを使ってhbm.xmlだけ作成)
  • hbm.xmlのauto_incrementなどの値を書き換え
  • Hibernate パースペクティブでソース生成(hibernate.reveng.xmlを使わないでhbm.xmlをインプットとして
    JDK 1.5 Construts
    EJB3/JSR-220 annotations
    にチェックして作成。

て感じです。生成されたソースは以下の感じ:

package nu.mine.kino.rss.hibernate;

// Generated 2006/02/23 1:10:31 by Hibernate Tools 3.1.0 beta1JBIDERC2

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratorType;
import javax.persistence.Id;
import javax.persistence.Table;

import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.hibernate.annotations.GenericGenerator;

/**
 * Rss generated by hbm2java
 */
@Entity
@Table(name = "rss", catalog = "webdb1")
public class Rss implements java.io.Serializable {

  // Fields

  private Integer id;

  private String title;

  private String link;

  private Date date;

  // Constructors

  /** default constructor */
  public Rss() {
  }

  /** minimal constructor */
  public Rss(Date date) {
    this.date = date;
  }

  /** full constructor */
  public Rss(String title, String link, Date date) {
    this.title = title;
    this.link = link;
    this.date = date;
  }

  // Property accessors
  @GenericGenerator(name = "generator", strategy = "increment", parameters = {})
  @Id(generate = GeneratorType.NONE, generator = "generator")
  @Column(name = "id", unique = false, nullable = false, insertable = true, updatable = true)
  public Integer getId() {
    return this.id;
  }

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

  @Column(name = "title", unique = false, nullable = true, insertable = true, updatable = true)
  public String getTitle() {
    return this.title;
  }

  public void setTitle(String title) {
    this.title = title;
  }

  @Column(name = "link", unique = false, nullable = true, insertable = true, updatable = true, length = 65535)
  public String getLink() {
    return this.link;
  }

  public void setLink(String link) {
    this.link = link;
  }

  @Column(name = "date", unique = false, nullable = false, insertable = true, updatable = true, length = 19)
  public Date getDate() {
    return this.date;
  }

  public void setDate(Date date) {
    this.date = date;
  }

  // 以下は 追記。
  public String toString() {
    return new ToStringBuilder(this).append("id", getId()).append("date",
        getDate()).append("title", getTitle()).toString();
  }

  // RSSフィードと比較するためにOverride
  // 同じ更新時刻のデータは、同じオブジェクトと見なしている
  public boolean equals(Object other) {
    if (!(other instanceof Rss))
      return false;
    Rss castOther = (Rss) other;

    // 同じ更新時刻は、同じとみなす。
    return new EqualsBuilder()
    // .append(this.getTitle(), castOther.getTitle())
        .append(this.getDate(), castOther.getDate()).isEquals();
  }

  public int hashCode() {
    return new HashCodeBuilder().append(getId()).toHashCode();
  }

}

ちなみに中間で作成されたRss.hbm.xmlは以下の通り:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2006/02/23 1:00:53 by Hibernate Tools 3.1.0 beta1JBIDERC2 -->
<hibernate-mapping>
  <class name="nu.mine.kino.rss.hibernate.Rss" table="rss" catalog="webdb1">
    <id name="id" type="integer">
      <column name="id" />
      <generator class="increment" />
    </id>
    <property name="title" type="string">
      <column name="title" />
    </property>
    <property name="link" type="string">
      <column name="link" length="65535" />
    </property>
    <property name="date" type="timestamp">
      <column name="date" length="19" not-null="true" />
    </property>
  </class>
</hibernate-mapping>

この記事は

選択肢 投票
おもしろかった 0  
そうでもない 0  
  • AntのJavaDoc?タスクでエラーになっちゃうんだけど。。どうすんの? -- きの? 2006-02-26 14:49:02 (日)
  • OSのJAVA_HOME見てるんですね。そこをJDK1.5のパスにしたら、エラーがでなくなった。 -- きの? 2006-02-26 15:14:22 (日)
  • やっぱりjava2htmlもだめだぁ -- きの? 2006-02-26 16:14:57 (日)

Top / Java / Pingアプリケーション / テーブルのRowにマッピングされるPOJOを作る

現在のアクセス:6786


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-02-26 (日) 16:14:58 (6626d)