[解決済み] JPAとJDBC、どう違うの?
質問
私はJava EEを学んでおり、同じようにeclipse with glassfishをダウンロードしました。いくつかの例を見、また、Java EE 5 についてすべてを知るために Oracle のドキュメントを読みました。データベースへの接続は非常に簡単でした。私は動的なWebプロジェクトを開き、セッションEJBを作成し、私はEntityManagerを使用し、取得メソッドを使用して格納されたデータテーブルにアクセスすることができました。
次のプロジェクトでは、簡単なクラスを作成し、いくつかのDBテーブルにアクセスする必要がありました。私が遭遇した最初の問題は、PersistenceUnit属性がEJB、Servletなどでのみ認識され、単純なJavaクラスでは認識されないということでした。だから、私はEntityManagerの方法を使用することはできませんでした(または私はできますか?)
私は、"JDBC" の方法を介して行くように頼まれました。私が遭遇した非常に最初の問題は、DBへの接続を取得することでした。これはすべてハードコードされている必要があるようです。私はpersistence.xmlを持っていて、それでデータ・ベース接続を簡単に設定することができました。DBのドライバをセットアップするのも簡単でした。また、テーブルエンティティにアクセスするためのJDBCにはget/setメソッドはありません。
JDBCに関連するJPAと永続性をどのように理解すればよいのでしょうか?JPAは何のために作られたのですか?なぜ set/get メソッドがあるのでしょうか? 誰かがこれらの2つの本質と"専門用語"なしで長所/短所にいくつかの光を投げることができますか?また、いくつかのリンクを示唆してください。JPAとJDBCの違いについて簡単にGoogleで検索すると、私がフォローできない"専門用語"でいっぱいのいくつかのサイトにたどり着きました :(
どのように解決するのですか?
平たく言えば
- JDBC はデータベース アクセスのための標準規格です。
- JPAはORMの標準規格です。
JDBCはDBに直接接続し、それに対してSQLを実行するための標準規格です - 例)
SELECT * FROM USERS
などです。 アプリで扱えるデータセットが返され、以下のような通常の操作が可能です。
INSERT
,
DELETE
ストアドプロシージャを実行する、など。 ほとんどのJavaデータベースアクセス(JPAプロバイダを含む)の基礎技術の1つです。
従来の JDBC アプリの問題の 1 つは、データセットとオブジェクトの間のマッピングが多く発生し、ロジックが SQL と混在しているなど、くだらないコードがしばしば発生することです。
JPA は Object Relational Mapping の標準です。これは、コード内のオブジェクトとデータベースのテーブルの間のマッピングを可能にする技術です。 これにより、開発者が扱うのはJavaクラスだけで、プロバイダはそれらを保存して魔法のように読み込むことができるように、SQLを隠蔽することができます。 ほとんどの場合、XMLマッピングファイルやゲッターとセッターのアノテーションを使用して、JPAプロバイダにオブジェクトのどのフィールドがDBのどのフィールドにマッピングされるかを伝えることができます。 最も有名なJPAプロバイダは Hibernate であり、具体的な例としてはここから始めるのがよいでしょう。
その他、OpenJPA、toplinkなどの例があります。
裏を返せば、Hibernateや他のほとんどのJPA用プロバイダはSQLを書き、JDBCを使ってDBからの読み込みやDBへの書き込みを行うのです。
関連
-
エラー java.util.NoSuchElementException
-
Eclipseで "XXXX "の解決策を(型に)解決することができない
-
をインスタンス化することができません。
-
Android Studio 3.1.2 で v4, v7 パッケージが見つからない シンボル 'AppCompatActivity' を解決できない
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] 整数の平方根が整数であるかどうかを判断する最速の方法
-
[解決済み】Mac OS Xでは、Javaはどこにインストールされていますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
エラー java.util.NoSuchElementException
-
Java のエラーです。未解決のコンパイル問題 解決方法
-
myeclipseでコンパイルするとAntエラーが発生する javaの例外が発生しました。
-
アクセス制限について アプリケーションの種類がAPIでない(必要なライブラリの制限)。
-
Javaクラスローダーにソースコードから潜り込む
-
Intellij IDEAのエラー「CreateProcess error=2, system could not find specified file」に対する完璧な解決策です。
-
Methodのinvokeメソッド実装のJavaリフレクション
-
linux run jarfile Invalid or corrupt jarfile error.
-
java 例外。Javaツールの初期化
-
Java(1)仕上げの基本概念+eclipseのインストール構成