春のブートに基づいて、リレーショナルデータベースのアクセスRESTインターフェースの構築

インタフェースを介して変更検索操作リレーショナルデータベースに格納されているユーザーオブジェクトに追加または削除することができます-アクセスRESTリレーショナルデータベースへのインターフェイスを提供し、レッスンに基づく春ブートアプリケーションは、構築します。私たちは春データRESTアクセスインターフェイスを作成するために使用するアプリケーション。

ヒント

春データRESTは、リレーショナルデータベースをサポートするだけでなく、NoSQLのデータベース--Neo4j、GemfileとのMongoDBの様々なサポートしていないだけ。彼らはレッスン、参照することが可能で春データプロジェクトの範囲外です。

環境を準備する
手を、テキストエディタやIDE(Eclipseの、アイデアのIntelliJ)(などのVim、Emacsの、崇高テキストなど)と
Java環境(JDK 1.7以降)
ビルドツールは、Gradleの2.3は
プロジェクトディレクトリの初期化
最初のプロジェクトのディレクトリを作成し、ディレクトリをプロジェクトプロファイルのGradleをbuild.gradleの作成:



buildscript {
    リポジトリ{
        jcenter()
    }
    依存{
        CLASSPATH( "org.springframework.boot:春ブートのGradle-プラグイン:1.2.5.RELEASE")
    }
}

プラグインを適用します。 「Javaは、」
プラグイン適用:「春ブーツ」 

JARを{
    =たbaseName '春-DATA-REST-DEMO'
    版= '1.0.0-SNAPSHOT'
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

リポジトリ{
    jcenter()
}

依存{
    コンパイル(「org.springframework.boot:春ブートstarter- REST-データ「)
    コンパイル(」org.springframework.boot:春ブーツ・スターター・データ-JPA「)
    H2「):コンパイル(」com.h2database
}
このドキュメントでは、春ブーツのGradle助け、私たちにプラグインを使用します仕事はいくつかの構成を簡素化する:

春ブートフレームワーク定義依存性を提供する、彼らは(バージョン番号が必要とされない)は、直接ラベル依存関係を使用することができる
単一のJARファイルにパッケージ化されたアプリケーション・コードと依存関係の全てを
自動的に検索し、主な機能スタート機能のjarファイルとして、jarファイルは、別の実行ファイルである
ドメインオブジェクト
このレッスンでは、ドメインオブジェクトはUser--あり、それは--emailと名前、Gradleの合意によると、対象は、プロジェクトのソースフォルダのsrc /メイン/ジャワに位置しなければならない、と私たちはこのTMYに入れて二つのフィールドが含まれていますパッケージには:

SRC /メイン/ Javaの/ TMY / User.java



@Entity
publicクラスユーザー{

    @Id
    @GeneratedValue
    ;プライベートロングID

    非公開文字列をメールで送信;

    プライベート文字列名;

    //コンストラクタ、getter / setterメソッドは省略
}
@Entity注釈ユーザーは、JPAエンティティであることを示しています。ユーザーは、各オブジェクトは、自動的にマニュアルがそれを処理せずに生成された自己増力春データJPAで一意の識別子の主キーIDを持っています。上記目的のフィールドは、我々はユーザーオブジェクトがあると、スプリングデータJPAは、列名フィールドにリレーショナルデータベーステーブルをマッピングし、データ・ストレージ・フォーマットを定義する:



ユーザーユーザーユーザー新しい新=(1L、「[email protected]」、 「テスト名」);
リレーショナルデータベース(ここでは、クラスパスを使用中のストレージ構造、それがデフォルトのメモリデータベースH2Databaseである)は、次のとおりです。

述べたID上記名前メール
1         [email protected]         テスト名
リポジトリ
検索動作が追加またはインタフェースリポジトリを変更するために削除することができる定義するために、対象ユーザと技術を:

SRC /メイン/ジャワ/ TMY / UserRepository.java



インポートorg.springframework.data.repository.PagingAndSortingRepository、

パブリックインターフェイスUserRepository PagingAndSortingRepositoryを拡張<ユーザロング> {

}
、我々は任意のインターフェース操作方法を定義するが、直接既に操作の慣用方法を含むPagingAndSortingRepositoryインターフェースから継承されないこと:

findOne(ロングID)
のfindAll()
保存(ユーザーユーザー)
アプリケーションあなたが起動したときに、春は自動的にこのインタフェースの実装を作成します。呼び出しfindOne(1L)に、例えば、実際には、スプリングデータJPAは、私たちは、このようなSQLクエリを生成支援する:



ユーザーからSELECT *上記ID = 1の上方WHERE;
及びクエリ結果セットのフィールド名によるユーザオブジェクト戻るにマッピングされます。これは、アイデアの開発におけるデータアクセス層の基本的な方法を簡素化するために私たちを助けORM(オブジェクト関係マッパー)フレームワークです。

メソッドをルーティングHTTP春データ残りは春のMVCでの応答を結合して、ユーザーがRESTfulなエンドポイントアクセス/ユーザーオブジェクトを作成する一方。

(以下同じリレーショナルデータベースUserRepositoryからのデータに対応する)GET /ユーザ、ユーザリスト情報
POST /ユーザがユーザオブジェクトの作成
単一のユーザオブジェクトを取得するGET /ユーザー/ {ID}
PUT /ユーザー/ {ID}を更新するユーザーオブジェクトを単一
DELETE /ユーザー/ {ID}の削除個々のユーザーオブジェクト
を変更して再検索してアクセスRESTfulなインターフェースのリストに、そして春データレストプロジェクトを使用した後に、リソースユーザの追加および削除の最も基本的なためである、我々自分自身にこれらの@Controllerを準備するために、不要になった、大型のためにリソースのいくつかは、これらのコードは、私たちは、コーディング作業を削減、春データ休息を正確に抽出されたこれらの共通のコードで、ほとんど同じです。

アプリケーション実行
春ブーツをベースにしたアプリケーションを実行するためには非常に簡単です、あなたはコードに依存する必要があり、アプリケーションサーバ(突堤、Tomcatの)に配置された伝統的なWARパッケージとしてラベル付け、春ブートパッケージ化プラグインのプロセスはありません、組み込みアプリケーション・サーバー(デフォルトTomcatは)です。そのため、アプリケーション自体が自己始動で、我々は外部のアプリケーションサーバにデプロイする必要はありません:

SRC /メイン/ Javaの/こんにちは/ Application.java



TMYのためのパッケージ変更、

インポートorg.springframework.boot.SpringApplication;
インポートorg.springframework.boot。 autoconfigure.SpringBootApplication;

@SpringBootApplication
パブリッククラス{アプリケーション

    静的な無効メインパブリック(文字列[]引数){
        ; SpringApplication.run(Application.class、引数)
    }
}
@SpringBootApplicationスプリング注釈ブートに設けられ、彼は以下のコメントを追加に対応する:

@Configurationを、アプリケーションがスプリングであることを示しconfigure Springアプリケーションのコンテキストに設定オブジェクト。
EnableAutoConfiguration @、春ブーツのような、いくつかの設定クラスパス(クラスパス)と、いくつかのプロパティ値の振る舞いに基づいて自動的に行われます:春MVCをベースとしたWebアプリケーションの開発、設定で@EnableWebMvcを追加する必要が直接、デフォルトのWeb構成の一部を活性化させます例えばDispatcherServletの設定のように-見つけ春ブーツランタイムがクラスパス上の春-webmvc依存が含まれると、それは自動的にWebアプリケーションの基本的な設定を完了します。
どの位置バネ部材(@Component、@Service、@Configuration)、等発見する通知@ComponenScanからSpringアプリケーション
:設定した後、二つの方法で実行されるアプリケーション

に直接IDEメインメソッドで
のGradleパッケージアプリケーションによって:Gradleのビルド実行します。java -jarビルド/ libsに/ $ {APPNAME} - {バージョン}の.jar
オブジェクトを作成するために、RESTインターフェースを使用して、
アプリケーションを実行した後、データベースは任意のデータは、ユーザーPOSTによって作成することができますが存在しません/ユーザーインターフェース:



$ POST -H -X-カール「タイプ内容:ファイルアプリケーション/ JSON」-d「{ 『をメールで送信』:「テスト@ test.com ""名":" Ruici「}「HTTP:// localhostを:8080 /ユーザー
HTTP / 1.1 201作成された
サーバー:Apacheの-コヨーテ/ 1.1
所在地ます。http:// localhost:8080 /ユーザ/ 1。
のContent長さ:0
日付:月、20 GMT、2015 Jul-午前7時53分10秒です
:パラメータの意義カールコマンドは次の通りれる

-X-パラメータはメソッドの要求タイプを指定- GET、POST、PUT、DELETE
-Hヘッダパラメータを指定要求を、ここにいるのであなたはタイプコンテンツを設定する必要がありますので、リクエストボディの内容は、JSONオブジェクトです:アプリケーション/ JSON
-dリクエストボディの内容を指定するために
便利ではないWindowsでカールを使用する場合は、クロームのプラグインを推奨-グラフィカルなインターフェイスツールをポストマン。

あなたが成功した作成した場合、サーバは201作成されたステータスコードを返し、リソースのURLがLocationヘッダで作成されたことを示します。

すべてのオブジェクトを取得します


$カールます。http:// localhostを:


    "自己":{
      "HREF": "にhttp:// localhost:8080 /ユーザー{ページ、サイズ、ソート}?"、
      "テンプレート":真
    }
  }、
  "_embedded":{
    "ユーザー":[{
      「メール": "[email protected]"、
      "名前": "Ruici"、
      "_links":{
        "自己":{
          "HREF": "のhttp:// localhostを:8080 /ユーザー/ 1"
        }
      }
    }]
  } 、
  "ページ":{
    "サイズ":20、
    "totalElements":1、
    "totalPages":1、
    "番号":0
  }
}
取得し、単一のオブジェクト


$カールにhttp:// localhost:8080 /ユーザ/ 1。
{
  "電子メールで": "[email protected]"、
ユーザーのアドレスを格納するためのフィールド。リレーショナルデータベースでは仲間にテーブルを構築することは通常です。アドレステーブル:ID Street市1頤和園の道北京。Userテーブル:メールでID名のAddressId

































1         [email protected]         テスト名1
:あるAddressIdアドレスフィールドには、ID、レコード1、SQLクエリに関連付けられたテーブルを書き込むことができますを示している



通り、SELECTはASはuserId、電子メールをu.id、名前は、ASのAddressId、市はa.id
    からインナーユーザーA Uアドレスa.id = ONに参加し1 = u.addressId WHERE u.id。
それは協会によって定義することができJPAデータマッピング原理に基づいて、春ORM:



@Entity
publicクラスユーザー{

    @Id
    @GeneratedValue
    プライベートロングID;

    プライベート文字列をメールで、

    プライベート文字列名;

    @OneToOne(= CascadeType.ALLカスケードにおける)
    ;プライベートアドレスのアドレス

    //コンストラクタとゲッター/セッターメソッドは省略

}
次のようにユーザーオブジェクトコードを追加します。



@Autowired
プライベートuserRepository userRepository。

@Override
ます。public void RUN(文字列... argsが)例外{スロー
    ユーザーユーザーユーザー新しい新=( "[email protected]"、 "Hello Worldのを");
    user.setAddress(住所新新( "北京"、「頤和園の道5。 「));

    userRepository.save(ユーザ);

}
スプリングデータJPAユーザーオブジェクトが自動的にネストされた組成オブジェクト永続アドレスリレーショナルデータベースのテーブルに対応すること。同じことは、クエリのために真です。

上記の処理を行った後、カールHTTPアプリケーションの実行を実行した後:// localhostを:8080 /ユーザー、 ユーザーがフィールドには、すでに複合オブジェクトのアドレスが含まれて見ることができます。

公開された761元の記事 ウォンの賞賛8 ビュー10000 +

おすすめ

転載: blog.csdn.net/heima201907/article/details/104749412