【プログラミング】【java】POJOについて - j-komatsu/myCheatSheet GitHub Wiki

JavaのPOJOについて

🧒 初学者向けの解説

POJOとは?

POJO(Plain Old Java Object) は、特別な制約や継承を受けていない、純粋なJavaのオブジェクトのことを指します。

📖 読み方:ポジョ(ぽじょ)

たとえば、「ただのノート」を思い浮かべてください。高機能なスマートノートではなく、しんぷるでどんな用途にも使える無地のノート。それがPOJOです。


✅ 特徴(表で整理)

特徴 内容
継承や注釈が不要 特定のライブラリやフレームワークに依存しない
JavaBeans に似ている Getter/Setterを使う場合が多い
設定や管理がシンプル 複雑な依存関係がなく、再利用性が高い
可携性が高い どのJavaアプリケーションにも簡単に組み込み可能

👶 例(入力と出力)

// 入力(POJOの定義)
public class User {
    private String name;
    private int age;

    // Getter
    public String getName() {
        return name;
    }

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

    // Getter
    public int getAge() {
        return age;
    }

    // Setter
    public void setAge(int age) {
        this.age = age;
    }
}
// 出力(POJOを使う)
User user = new User();
user.setName("Taro");
user.setAge(25);

System.out.println(user.getName()); // Taro
System.out.println(user.getAge());  // 25

🧠 フロー図(POJOの使われ方)

flowchart TD
    A[POJOクラス作成] --> B[データ格納]
    B --> C[Getter/Setterでアクセス]
    C --> D[アプリケーションで利用]

👨‍💼 専門者向けの解説

POJOとJavaBeans、DTOとの違い

種別 説明 使い分け
POJO 特に制約がない純粋なJavaオブジェクト 汎用的なデータ保持に使う
JavaBeans 引数なしのコンストラクタ、getter/setter、Serializableが必要 SwingやJavaEEなどで使われる標準形式
DTO プレーンなデータ転送用オブジェクト(フィールド中心)
REST APIのリクエスト/ レスポンスなど

☕ POJOをSpringで使う例

// Spring用POJO(エンティティ)
public class Product {
    private String id;
    private String name;

    // constructor, getter, setter...
}
// サービスクラスでの利用
@Service
public class ProductService {
    public void printProduct(Product p) {
        System.out.println(p.getName());
    }
}

🧽 実装のヒント(Tips)

  • Lombokを使えばgetter/setterを省略可
import lombok.Data;

@Data
public class Book {
    private String title;
    private int price;
}
  • Jacksonと組み合わせてシリアライズ
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(user); // UserをJSONに

🎯 たとえ話(技術者視点)

POJOはまるで「ただのレコード用紙」。
電子カルテ(SpringやHibernate)に取り込むことで初めてシステムと連携できるが、**POJOそのものはどこでも使える「万能書式」**のような存在です。


📦 よく使う用途

  • Webアプリケーションでのフォーム入力値の保持
  • REST APIのリクエスト/レスポンスデータ
  • DBのデータを一時的に保持するEntity

🔚 まとめ

graph TD
    A[POJO] --> B[独立性が高い]
    A --> C[シンプルで再利用しやすい]
    A --> D[フレームワーク非依存]

POJOは「フレームワークに縛られない」純粋なJavaクラス。
まずはシンプルなPOJOから始めて、必要に応じてDTOやEntityとして進化させましょう。