質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Q&A

解決済

3回答

35945閲覧

POJOオブジェクトとはなんでしょうか?

k499778

総合スコア599

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

1グッド

3クリップ

投稿2016/07/17 15:37

現在上記タグの技術を使ってCSVファイルダウンロード機能を実装しようとしています。

質問があるんですが、
結論から言うと、

POJOオブジェクトとはなんでしょうか?

以下サイトを見て、現在OrangeSignalを使ってCSVを実装しようとしているのですが
http://orangesignal.osdn.jp/csv/userguide.html
POJOオブジェクトが度々出てきています。

もちろん調べましたが

Plain Old Java Object (POJO) は、あるJavaオブジェクトがEJB(特にEJB 3より前のEJB)のように特殊なものではなく、ごく普通のJavaオブジェクトであることを強調した名称

といった抽象的な説明しかなく、いまいち掴みきれていません。

もしわかる方がいればアドバイスいただければありがたいです。

Toritaus👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

最終的にはやはり「ごく普通のJavaオブジェクトであることを強調した名称」としか言えないものですが、
POJOではないオブジェクトとは何なのかを知ると分かってくるかもしれません。

昔のJavaでは、ある処理を行うために、何かクラスを継承するとか特殊な処理を施さないといけない場合がありました。
そこに書いてあるEJBを例にとると更にややこしいことになるのですが、EJBを生成するには単にクラスを継承すれば良いわけでなく、複雑な手続きを経る必要があり、その複雑さから開発の難易度や複雑さを上げてしまう原因となっていました。

その時代を過ぎて、Javaの開発(とくにエンタープライスの開発)から複雑さを緩和させようという動き(Java EE 5のEase of Developmentなど)があり、開発者は特別な手続きをせずに単なるクラス(POJO)を作って渡せば良いようにツール側で何とかしてくれる仕組みが発達しました。

このような経緯から、「ごく普通のJavaオブジェクトである」という表現が必要になり、それがPOJOと呼ばれるようになりました。
ただ定義は少しあいまいなものなので、あまり難しく考えない方が良いかも知れません。

大雑把にいってこういう背景があって生まれた言葉です。
これを踏まえたうえで、改めて他のドキュメントを読んでいただければ少しはご理解いただけるのではないかと思います。

投稿2016/07/17 16:01

argius

総合スコア9388

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k499778

2016/07/18 01:46

回答ありがとうございます。 そのような背景があるのですね。まだまだ経験が浅いのでそこまで知りませんでした。 ちなみに今OrangeSignalのユーザーガイド見ているのですが、 以下サイトのEntityはPOJOということはできますでしょうか? OrangeSiganalのユーザーガイドで言っているPOJOがこのEntityを指しているのではないかと推測中です。 http://orangesignal.github.io/orangesignal-csv/quick_start.html もしお時間ございましたらお答えいただければ有り難いです。
argius

2016/07/18 03:10

結論を先に書くと、 > POJOがこのEntityを指している その解釈でほぼ問題ないと思います。 補足すると、ユーザーガイドの説明に 「CSV とマッピングしたい POJO クラスへ @CsvEntity アノテーションと @CsvColumn アノテーションを付けます。」 「CsvEntityで注釈付けされた POJO オブジェクト」(注釈=アノテーション) とあるので、この場合は、アノテーションを付けていない状態がPOJOである、とも読み取れます。 ただ、他のクラスなどに依存が無い(継承していない、インターフェイスをimplementsしていない)という意味で、アノテーション付きでもPOJOと呼ばれることも多いです。 おそらく、アノテーションを付けるだけではクラスの基本的な機能が変わらないから、という理由でそれもPOJOである、ということなんじゃないかと。 この辺の定義は少しあいまいだと思いますので、そういうものだと理解しておいたほうが良いですね。
k499778

2016/07/18 15:07

返答ありがとうございます。 自分の解釈が間違っていないと確信が持つことができました。argiusさんのおかげです。 ありがとうございました。
guest

0

POJOは特定のフレームワークや依存関係の強いライブラリを使わずに実現できるクラスのことで、ごく単純な構成のJavaクラスのことです。

アクセサ・ミューテータだけではなく、処理用のメソッドも持ち合わせてよいものです。
再利用性まで考えて作られたJavaBeansまでの制約はありません。

投稿2016/07/17 16:39

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k499778

2016/07/18 01:46 編集

回答有り難うございます。 なるほど。単純な構成のJavaクラスということですよね。 以下サイトのEntityはPOJOということはできますでしょうか? OrangeSiganalのユーザーガイドで言っているPOJOがこのEntityを指しているのではないかと推測中です。 http://orangesignal.github.io/orangesignal-csv/quick_start.html もしお時間ございましたらお答えいただけると幸いです。
guest

0

いろいろな解釈があると思いますが、例えば
getter,setterのみ定義した構造体のようなクラス
みたいな、できるだけ単純なJava Objectを指すものでしょうか

単純であればあるほど
他のライブラリに依存しない
ことになり

  • フレームワークに切り替えても影響範囲が少ない
  • フレームワークを跨ぐ連携もしやすい
  • クラス間の依存密度を疎結合に保ちやすい

なメリットが考えられます

DIパターン(Dependency injection:依存性の注入)なんかを導入しようとすると、必ず出てくる概念でしょうね

投稿2016/07/17 16:08

編集2016/07/17 16:16
dojikko

総合スコア3939

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k499778

2016/07/18 01:44

回答有り難うございます。 具体的なイメージを持ちやすい回答で、なんとなくイメージがつかめてきました。 以下サイトのEntityはPOJOということはできますでしょうか? OrangeSiganalのユーザーガイドで言っているPOJOがこのEntityを指しているのではないかと推測中です。 http://orangesignal.github.io/orangesignal-csv/quick_start.html もしお時間ございましたらお答えいただけると嬉しいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問