【特集】Eclipse対抗馬の本命!? NetBeansとは?
連載一覧へ

【特集】Eclipse対抗馬の本命!? NetBeansとは?(後編)
JRuby on RailsやJava EE開発に便利なNetBeans


株式会社ガリレオ
小山博史
2008/3/17

今回の主な内容

画面やコードを自動生成してくれるのでDB連携も簡単!
Java DBを操作するツールも便利!
Webアプリケーション作成も容易

NetBeansでJRuby on Railsアプリケーションを作成
GlassFishでJRuby on Railsアプリケーションを実行
便利なIDEに見る技術者の“格差”

 本稿はJavaプログラム向けのオープンソース統合開発環境NetBeans IDEの、2008年2月にリリースされたNetBeans 6.0.1 マルチリンガル版について紹介する特集記事の後編となります。

 前編の「NetBeansとGlassFishの連携&VBライクなSwing開発」では、NetBeans 6.0.1マルチリンガル版の特徴や概要、インストール方法、オープンソースのJava EEアプリケーションサーバGlassFishとの連携、VBライクな「Swing GUI Builder」について主に解説しました。

 後編では、Java EE開発に欠かせないDB連携やGlassFishとの連携によるWebアプリケーションJRuby on Railsアプリケーションの作成の仕方などについて解説します。

編集部注JRuby on Rails について詳しく知りたい読者は、連載「小山博史のJavaを楽しむ」第4回「(Java+Derby)* Ruby on Rails プログラミング」をご参照ください。

画面やコードを自動生成してくれるのでDB連携も簡単!


 最初に、NetBeansにおけるDB連携について解説しましょう。DBへアクセスするデスクトップアプリケーションを作成して実行してみました。作成したのは、前編で解説した「Social Software for GlassFishに含まれるApache RollerのDBから「WEBSITE」というテーブルの一部データを取得するプログラムです。

編集部注Apache Rollerについて詳しく知りたい読者は、連載「小山博史のJavaを楽しむ」第7回「そろそろブログ+RSSアプリでも作ってみませんか?」をご参照ください。

DBアプリケーションが自動で作られる

 NetBeansで新規プロジェクトを作成するときに、「Javaデスクトップアプリケーション」を指定し、使用するテンプレートは「データベースアプリケーション」を指定しました。

 DBの接続については、[データベースのURL]へは「jdbc:derby://localhost/SocialFish_RollerDB」、[ユーザー名]へは「APP」、[パスワード]へは「APP」を指定して新規作成をしました。

 このDB接続から「WEBSITE」テーブルを指定してウィザードを終了すると、画面が自動生成されます(図1)。

図1 自動生成されたDBアプリケーションの画面
図1 自動生成されたDBアプリケーションの画面

JPAのコードも自動生成!

 このテーブルに対応するJavaBeansも次のような感じでJPAを使ったコードとして自動生成されます。生成されるコードを見ると分かりますが、これだけの量を自動生成してくれるだけでも、ずいぶん楽になります。

@Entity
@Table(name = "WEBSITE")
@NamedQueries({@NamedQuery(name = "Website.findById",
    query = "SELECT w FROM Website w WHERE w.id = :id"),

……(略)……

})
public class Website implements Serializable {
    @Transient
    private PropertyChangeSupport changeSupport
        = new PropertyChangeSupport(this);
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "ID", nullable = false)
    private String id;

    @Column(name = "NAME", nullable = false)
    private String name;

    @Column(name = "HANDLE", nullable = false)
    private String handle;

    @Column(name = "DESCRIPTION", nullable = false)
    private String description;

    @Column(name = "CREATOR")
    private String creator;

……(略)……

    public String getId() {
        return id;
    }
    public void setId(String id) {
        String oldId = this.id;
        this.id = id;
        changeSupport.firePropertyChange("id", oldId, id);
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        String oldName = this.name;
        this.name = name;
        changeSupport.firePropertyChange("name", oldName, name);
    }

……(略)……

}

Java DBを操作するツールも便利!


 次に、Java DBApache Derby)を操作するためのツールが結構便利でしたので、簡単に紹介しておきましょう。

編集部注Java DBについて詳しく知りたい読者は、連載「小山博史のJavaを楽しむ」第3回「待望のJava SE 6 でパーシステンス」をご参照ください。

 ネットワークモードでJava DBを動作させるには、[ツール]→[Java DB データベース]→[サーバーを起動]として、Derbyを起動させます。

 なお、GlassFishを起動していると、GlassFishがJava DBを自動起動するので、NetBeansのメニューからは起動ができなくなります。注意してください。

 DBを作成したい場合は、[ツール]→[Java DB データベース]→[データベースを作成]を指定して、例えば次のような内容を指定すれば、DBが作成されます。

表 DB作成時に指定する値
項目
データベース名 sampledb
ユーザー名 APP
パスワード APP

 作成したDBでSQL文を実行するには、[サービス]タブを選んで、[データベース]を開き、そこに表示されている「jdbc:derby://localhost:1527/sampledb」をマウス右ボタンでクリックし、表示されたメニューで[接続]します。その後、マウス右ボタンでクリックし、表示されたメニューで[コマンド実行]とすると、SQL文向けのエディタが表示されます。

 例えば、次のようなSQL文を記述してから、[Ctrl]+[Shift]+[E]キーでSQL文を実行します。

create table users (
    id integer not null generated
    always as identity (start with 1, increment by 1),
    name varchar(255)
);

図2 SQL文の実行結果
図2 SQL文の実行結果

 Webアプリケーションなどでは、DBを扱うアプリケーションは当たり前ですから、このようにDBが操作できるという機能は、最近のIDEには必須といっても過言ではありません。

 次ページでは、いよいよ、WebアプリケーションやJRuby on Railsアプリケーションの作り方を解説します。

  1-2-3

 INDEX 【特集】Eclipse対抗馬の本命!? NetBeansとは?(後編)
      「JRuby on RailsやJava EE開発に便利なNetBeans」
Page1
  画面やコードを自動生成してくれるのでDB連携も簡単!
Java DBを操作するツールも便利!
  Page2
  Webアプリケーション作成も容易
NetBeansでJRuby on Railsアプリケーションを作成
  Page3
  GlassFishでJRuby on Railsアプリケーションを実行
便利なIDEに見る技術者の“格差”





Java Solution全記事一覧



Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間