// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
つぎは[[先ほど作った>Java/Pingアプリケーション/すでに打ったPing情報を格納するテーブルを作る]]テーブル(webdb1.rss)のRowにマッピングされるJavaBeansを作成します。これは様々なツールを作って自動生成することにします。
つぎは[[先ほど作った>Java/Pingアプリケーション/すでに打ったPing情報を格納するテーブルを作る]]テーブル(webdb1.rss)のRowにマッピングされるJavaBeansを作成します。これはEclipse上のGUIツールを作って自動生成することにします。ツールは以前使ってみた[[Hibernate Tools>Hibernate/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>




----
この記事は
#vote(おもしろかった,そうでもない)
-AntのJavaDocタスクでエラーになっちゃうんだけど。。どうすんの? -- [[きの]] &new{2006-02-26 14:49:02 (日)};
-OSのJAVA_HOME見てるんですね。そこをJDK1.5のパスにしたら、エラーがでなくなった。 -- [[きの]] &new{2006-02-26 15:14:22 (日)};
-やっぱりjava2htmlもだめだぁ -- [[きの]] &new{2006-02-26 16:14:57 (日)};

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS