私は仕事で似たようなことに取り組んできました。これを処理するために私たちが行っていることは次のとおりです。
バックエンドデータベースからの情報を必要とする、シンクライアントに似たWebクライアントがあります。これは、データベース呼び出しを行い、JSON パッケージでクライアントに情報を返す RESTful Web サービスにアクセスすることによって行われます。
使用ツール:
これらのツールはすべて、Web サービスを開発するために非常にうまく連携します。Roo を使用すると、迅速な開発が可能になり、プロジェクトのすべての要素を簡単に結び付けることができます。また、SqlServer、hibernate、Tomcat 以外でも動作し、IDE は必要ありません (Spring Tool Suite には GUI シェルが組み込まれています) が、Maven に依存しています。私は絶対にそれが大好きです。ほとんどの魔法に AspectJ を使用していますが、AspectJ の神秘性を乗り越えると、非常に直感的なものになります。
Roo の優れたチュートリアル: http://docs.spring.io/spring-roo/reference/html/beginning.html
お役に立てれば!
編集: これは、休止状態の Roo が作成するリポジトリです。
ドメイン エンティティ:
@RooJavaBean
@RooToString
@RooJpaEntity(table = "Example")
@RooJson
public class Example {
private String name = "default";
public Example(String name){
this.name = name;
}
}
リポジトリ:
package com.example.repositories;
import org.springframework.roo.addon.layers.repository.jpa.RooJpaRepository;
@RooJpaRepository(domainType = Example.class)
public interface ExampleRepository {
}
これらを取得したら、次のように HTTP リクエストを実行できる Controller クラスを作成します。
@RooWebJson(jsonObject = Example.class)
@Controller
@RequestMapping("/example/")
public class ExampleController {
@Resource
ExampleRepository exampleRepo;
@RequestMapping(method = RequestMethod.PUT, value ="/{name}")
public void putExample(@PathVariable("name") String name) {
exampleRepo.save(new Example(name));
}
}
メソッドの呼び出しはputExample()
、HTTP PUT リクエストを「http://{host}/example/somename」に送信することによって行われます。リクエストに含まれる特定のヘッダーなど、RequestMapping にはさらに多くのオプションがあります。メソッドで使用するために、要求からの JSON/xml をサービスに渡すこともできます。
新しいクエリを追加するには、次のようにします。
@Query("select * from Example e where e.name = ?1)
List<Example> getAllByName(String name);
このメソッドをリポジトリ クラスに追加すると、新しい Sql クエリが得られます。注: クエリは選択した言語の JPA で記述されています。これが Hibernate の方法です。
ここには、RESTful サービスに関連するいくつかの規則があります。たとえば、Http PUT および POST は Sql UPDATE または INSERT クエリを実行するためにのみ使用する必要があり、Http GET は Sql SELECT に使用し、Http DELETE は SQL DELETE に使用する必要がありますが、Web サービスの設計者次第です。
Roo は Rapid Application Development (RAD) キットであることを明確にしておく必要があります。アプリケーションのプロトタイプ作成に使用できます。プログラミングを行う必要がありますが、それは少なくなります。
これが物事を明確にするのに役立つかどうか教えてください!