2024/07/04の備忘録

### 【データべースなどから取得した情報をJSONで形式で表示する】
今回はデータベースから直接値を取るのではなく、スタブを使ってJSON形式に変換する。
 ItemCategoryのスタブデータの作成。
最終的に４件の情報が入ったデータを返している。
```Stub.java
public static List<ItemCategory> returnStb(){

		List<ItemCategory> categorys = new ArrayList<ItemCategory>();

		int totalMin = 100;
		int totalMax = 1000;

		for(int i = 0; i <= 3; i++) {

			ItemCategory category = new ItemCategory();
			category.setId(i + 1);
			category.setName("カテゴリ" + i + 1);
			category.setMinPrice(totalMin);
			category.setMaxPrice(totalMax);

			categorys.add(category);

			totalMin += 100;
			totalMax += 1000;
		}

		return categorys;
	}
 ```
 ItemCategoryのエンティティ。
コンストラクターやゲッターセッターはlombokで作成している。
 ```ItemCategory.java
 @Data
@NoArgsConstructor
@AllArgsConstructor
public class ItemCategory {
	
	/**
	 * カテゴリーID
	 */
	private Integer id;
	
	/**
	 * カテゴリー名
	 */
	private String name;
	
	/**
	 * カテゴリーに関する最低設定価格
	 */
	private Integer minPrice;
	
	/**
	 * カテゴリーに関する最高設定価格
	 */
	private Integer maxPrice;

}
```
表示側の処理
```JSONTester.java
public class JSONTester {

	public static void main(String[] args) throws IOException {

		//ObjectMapperのインスタンス化
		ObjectMapper objectMapper = new ObjectMapper();

		//オブジェクトからJSON文字列へシリアライズし、JSON出力を成形する
		objectMapper.enable(SerializationFeature.INDENT_OUTPUT);

		//String型にシリアライズする
		String st = objectMapper.writeValueAsString(returnStb());

		//JSONファイルの表示
		System.out.println("-----jsonの表示-----\n" + st);
    }
}
```
DocumentBuilderは、XMLドキュメントをパースしてDOM（Document Object Model）ツリーを構築するためのクラス。
DocumentBuilderFactoryから新しいDocumentBuilderインスタンスを取得している。

詳細
+ DocumentBuilderFactory
    + DocumentBuilderFactoryは、DocumentBuilderインスタンスを作成するためのファクトリクラスです。このクラスは、DOMパーサの設定と構成を管理します

+ newDocumentBuilder()
    + このメソッドは、新しいDocumentBuilderインスタンスを生成します。このインスタンスを使ってXMLドキュメントをパースし、DOMツリーを構築します

### 【JSONファイルから取得し表示する場合】
こんな感じで取得し表示することもできる。
```JSONTester.java
public class JSONTester {

	public static void main(String[] args) {

 JsonNode json1 = null;
		JsonNode json2 = null;

		try {

            //ファイルの読み込み方法1
			FileInputStream fileInput = new FileInputStream("ファイルパス");
			json1 = objectMapper.readTree(fileInput);

            //ファイルの読み込み方法2
			json2 = objectMapper.readTree(Paths.get("ファイルパス").toFile());


		}catch (FileNotFoundException e) {
			System.out.println("ファイルが見つかりません。");
			throw new RuntimeException(e);

		} catch (IOException e) {
			System.out.println("エラーが発生しました。");
			throw new RuntimeException(e);
		}
        //読み込んだファイルの中身表示
		System.out.println(json1);
		System.out.println(json2);
		System.out.println(json1.get("Name"));
		System.out.println(json1.get("Physical"));
	}
```
get("key")で取得することができる。
 今回はget("Name")としているので、JSONファイルのkey("Name")のSuzuki Seiyaが取得できる。
 
↓実際に読み込んだJSONファイル
```test.json
{
  "ID": 1,
  "Name": "Suzuki Seiya",
  "Gender": "Man",
  "Age": 24,
  "Physical": {
    "Height": 180.5,
    "Weight": 83.2
  },
  "Grades":[
    {"Year":2019,"Homerun":30},
    {"Year":2020,"Homerun":25},
    {"Year":2021,"Homerun":38}
  ]
}
```
以下のような表示結果になる
```
{"ID":1,"Name":"Suzuki Seiya","Gender":"Man","Age":24,"Physical":{"Height":180.5,"Weight":83.2},"Grades":[{"Year":2019,"Homerun":30},{"Year":2020,"Homerun":25},{"Year":2021,"Homerun":38}]}
{"ID":1,"Name":"Suzuki Seiya","Gender":"Man","Age":24,"Physical":{"Height":180.5,"Weight":83.2},"Grades":[{"Year":2019,"Homerun":30},{"Year":2020,"Homerun":25},{"Year":2021,"Homerun":38}]}
"Suzuki Seiya"
{"Height":180.5,"Weight":83.2}
```

### 【iPaaS(Integration Platform as a Service)とは】
クラウド上で異なる企業間やシステムでデータをやり取りしたり、統合できたりするプラットフォーム
	
主な役割はサービスやデータの連携。
	
サービスを別々で使用していると企業内部ではデータが孤立してしまうために確認するだけで大きな手数が必要になる。
そこでiPaaSを利用して別々のサービスを連携して、データの受け渡しや確認による工数を省いて効率化させる必要がある。
	

### iPaaSとSaaS・PaaS・IaaSの違いとは？
+ 現在の主要なクラウドサービスにはSaaS（サース)、PaaS（パース)、IaaS（イアース/アイアース）
	の3つがあり、それぞれ以下のようなサービスとなっている

    + SaaS（Software as a Service）：ソフトウェアをクラウド経由で提供するサービス
		ソフトウェアをPCにインストールせず、Web上で利用できるクラウドサービス
		
	+ PaaS（Platform as a Service）：プラットフォームをクラウド経由で提供するサービス
		ミドルウェア、データベース、OSなどのプラットフォームがWeb上で利用できるクラウドサービス
		主にアプリケーション開発で用いられる
		
	+ IaaS（Infrastructure as a Service）：インフラ環境をクラウド経由で提供するサービス
		インフラ環境がWeb上で提供されるクラウドサービス、サーバーレスでインフラの構築ができる
		
#### 【以下参考サイト】
[JSON参考サイト](https://camp.trainocate.co.jp/magazine/java-json/)
[iPaaSとは？](https://www.ntt.com/business/sdpf/knowledge/archive_59.html)