つぎは先ほど作ったテーブル(webdb1.rss)のRowにマッピングされるJavaBeans?を作成します。これはEclipse上のGUIツールを作って自動生成することにします。ツールは以前使ってみたHibernate Toolsを使います。 一応目的としては、Hibernate Annotation を用いて*.hbm.xmlを使わないでやろうと思います。 手順は、ややこしいですが
て感じです。生成されたソースは以下の感じ: 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> この記事は
現在のアクセス:6791 |