JAVA関連のことを調べてみた2020年12月03日

JAVA関連のことを調べてみた2020年12月03日

foreachでコレクションに格納しているStringは更新できない/不変性

#はじめに
これは、Stringのコレクションを拡張for文、ForEachでは「内容の更新」が出来ないというお話です。

##どんな時か
以下のコードで、strArrayに放り込んだ”a”,”b”,”c”に”X”という文字を連結し、その内容をforeachを抜けた後で出力します。

“`java
private void modifyStrInCollection() {

String strArray[] = { “a”, “b”, “c” };
///foreachで更新。
for (String str : strArray) {
str += “X”;
System.out.println(“01:” + str);
}
///配列の内容出力
for (String str : strArray) {
System.out.println(“02:” + str);
}
}
“`

どんな結果になると思いますか? “aX”,”bX”,”cX”になっているでしょうか。 実行結果は以下の通りです。

“`java
01:aX
01:bX
01:c

元記事を表示

【Java・SpringBoot】Spring JDBC / BeanPropertyRowMapper(SpringBootアプリケーション実践編16)

ホーム画面からユーザー一覧画面に遷移し、ユーザーの詳細を表示するアプリケーションを作成して、Spring JDBCの使い方について学びます⭐️
前回はRowMapperについて学びました。今回は**BeanPropertyRowMapper**を実践して学びます^^
構成は前回/これまでの記事を参考にしてください

⭐️前回の記事
[【Java・SpringBoot】Spring JDBC / RowMapper(SpringBootアプリケーション実践編15)](https://qiita.com/suema0331/items/5062bcf008d507a58b75)

#BeanPropertyRowMapper
* **RowMapper自体を用意しなくてOK!**
* BeanPropertyRowMapperでは、**データベースから取得してきたカラム名と同一のフィールド名がクラスにあれば、自動でマッピング**をしてくれる!
* →つまり、RowMapperのように**どのカラムとどのフィールドを一致させるか、いちいち用意する必要がない**
* 自

元記事を表示

【Spring Data JPA + MySQL】ERROR 1064 (42000)の解消

#エラーの内容
Spring Bootで、`Spring Data JPA`と`MySQL Driver`を使った開発を行っていたところ
以下のようなエラーメッセージが表示されました。

>java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near…

SQL文に問題があるよって言われてるみたいだけど、JPA使ってるからSQL文なんて書いた覚えがない・・・

#エラーが発生したソースコード
今回は、JPAのsaveメソッドを使って
MySQL側で用意したテーブルにinsertしようとしたら、上記のエラーが発生しました。

実装してエラーが発生したコードは以下の内容になります。

###YAML
接続情報を定義しています。

“`yml:application.yml
spring:
datasource:

元記事を表示

【JUnit】JUnitを使ってテストケースを作りたいときにやること

## JUnitとは?

Javaのプログラムをテストするフレームワークのこと
一番メジャーなテストフレームワークなのでJavaを扱う現場ではセットになっているケースが多いと思います。

## なぜテストをするのか?
簡単に言えば、作ったプログラムがきちんと動いていることを確かめるためにテストをします。

Javaのように大規模なシステムのためのプログラムや止まっていは行けないミッションクリティカルな要件では特に大切。

あと、テストフレームワークを使わずに手動でプログラムを確かめるのはとっても大変だからです。
(いわゆるIT土○的な残業MAXなお仕事スタイルを納品前にすることもある)

なので、コードを作った時点でテストを作り後続で作ったプログラムができてもきちんと動くことを保証することはとても大事なことであると思います。

GooodBye、スキルアップしない残業人生…

## プロダクトコードを作成する。

一番わかり易いモデルとして足し算を行うプログラムをテストしてみよう

本来は先にテストコードを書いてからというお約束があるけれど今回はテストした対象ありきでスタート。サン

元記事を表示

【Java】Spring Tool Suite(STS) インストールからHello World出力まで

#はじめに
Javaのお勉強をする中でテキストエディターとコマンドプロンプトをポチポチするのに飽きてきたので、ツールを入れる練習も兼ねてSpring Tool Suite(STS) をインストールしました。

その時の記録を(ざっくりと)残します。

#必要なもの
・STS(https://spring.io/tools)
・7-zip(.jarの解答用)

#手順① STSインストール~起動
①OSにあったSTSをダウンロードする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/904115/94077383-d2b5-8dcc-4616-dd9782fc9a14.png)
(ファイル名が32bit版っぽいかもしれないけど気にしない)

②ダウンロードしてきたjarを適当な場所において解凍
 右クリック→7-zip→ここに展開
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/904115/1

元記事を表示

エンジニアとしてキャリアを考える

みなさんこんにちは、グリドンです。

これから、qiitaで僕が学んだことをアウトプットしていこうと思います!
なお、全て自分の解釈、自分の意見ですので、間違ってる部分もあるかと思いますが、暖かく見守っていただければと思います。コメントでどんどん指摘して下さい。

さて、先日t_wadaさんによる、エンジニアとしてこれからどういうキャリアを築いていくか、というトピックの講演を聞いてきました!

恥ずかしい話、t_wadaさんの事はこの講演まで知りませんでした(速攻でTwitterフォローしました)?

本題ですが、講演の中でt_wadaさんおっしゃられていた3つのこと

1. アウトプットをすること
2. 学び続ける姿勢
3. 技術の学び方を学ぶこと

全て「なるほどー」と、タイトルを見るだけで思いますが、t_wadaさんが5つ分けて話されていたので、ひとつづつ書いていきたいと思います。

1. 月に1冊のペースで技術書を読む
月に1冊って結構多いような、、、
でもこれは、僕自身も最近意識していました。月に1冊は少しきついんですが、一日少しづつ本を読ん

元記事を表示

【Jaba】JDBC (Java DataBase Connectivity)


# JDBC(Java DataBase Connectivity)とは

かいつまんで言うと「Javaでデータベースに接続するやつ」。
または「ODBCのJavaプログラム版」。

– Java(ジャヴァ)
– DataBase(データベース)
– Connectivity(コネクティビティ)

の略といわれています。が、実はJDBC仕様には明記されていません)。


## 【説明】
「Javaのプログラムとデータベースの間に入って仲立ちをする部品」
 JDBCは、「リレーショナル・データベース(および、ほとんどすべての表形式のデータ)にアクセスするための、標準Java API」です。

 企業内のクリティカルなデータは、多くの場合リレーショナル・データベースに格納されています。そのため、JDBCは、Javaによるエンタープライズ・アプリケーションの基礎をなす、重要なAPIの1つとなっています。

## 【特徴】
ODBCというWindows専用のデータベース接続のための

元記事を表示

ArchUnit 実践:依存関係を逆転した Layered Architecture のアーキテクチャテスト

“`
// 実行環境
* AdoptOpenJDK 11.0.9.1+1
* JUnit 5.7.0
* ArchUnit 0.14.1
“`

## レイヤーの依存関係

1日目の [ArchUnit 実践:Layered Architecture のアーキテクチャテスト](https://qiita.com/kawanamiyuu/items/6ecb790cde05a9b51098) の Layered Architecture と比較すると、[依存関係が逆転](https://ja.wikipedia.org/wiki/%E4%BE%9D%E5%AD%98%E6%80%A7%E9%80%86%E8%BB%A2%E3%81%AE%E5%8E%9F%E5%89%87)しており、インフラストラクチャ層より下位の層は技術的詳細と疎になる。また、ドメイン層がどの層にも依存しないため、ドメイン層はビジネスのコアロジックの表現により専念できる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.co

元記事を表示

【Java】JSP準備と実行 ( Hello World!を出力するまで )


# 【タイトル】JSP準備と実行

「JSP プロジェクトの作成からHello Worldを出力するまで」の手順を書きました。

## 【説明】
JavaにはJSPという技術が存在します。形式はHTMLに似ているのですが、JSPを用いることで以下のような要件に対応することが可能です。

– 画面のformから入力した値が適切か判定
– 入力値を適切な値にフォーマットして出力

現場で目にすることも多い書き方なので、まずはJSPを使うための準備から始めましょう。

## JSPを用いた開発の準備〜プロジェクト〜
eclipseを用いてJSPを使用する準備をしていきます。
まずは下準備として、JSPを用いた開発に必要なプロジェクトを作成します。
jsp・HTML・CSS・imgといったフロント資材はこの「WebContent」フォルダ内へ配置していきます。
以下の手順を踏むことで、JSPを用いた開発に必要なプロジェクトが作成されます。

1. 「パッケージ・エクスプローラー」 を右クリック→ 「新規」 ->「 プロジェクト…」 を選択
2. 「Web 」->

元記事を表示

【Java】Webスコープ(データの有効範囲)


# Webスコープ

「スコープとは、データの有効範囲」


## 【説明】

Webスコープとは「サーブレットやJSPをまたいでデータを共有したい場合に用いる保存領域」のことです。ショッピングサイトやアプリなどは、多くの情報を載せるのでWebページは複数にわたりますが、ページが切り替わるたびにログインIDやパスワードを入力するのは手間なので、入力情報を保持しておく仕組みがあり、その有効範囲を「スコープ」と呼ぶ。


## 【メリット】
ページをまたいでも入力情報を保持しておくことができる。


## 【特徴】
Servletでは共有範囲に応じて以下のの3つのスコープがあります。

– リクエストスコープ(requestスコープ)
– セッションスコープ(sessionスコープ)
– アプリケーションスコープ(applicationスコープ)

それぞれの詳細は以下です。

| スコープ名

元記事を表示

Android StudioでA problem occurred configuring project ‘:app’.が出た時の対処法

#経緯

Android Studioで他の誰かから受け取ったプロジェクトを開いてみると、

A problem occurred configuring project ‘:app’.

というエラーが表示されることがある。

すごい簡単に解決できるエラーなのに、全然解決方法が出てこなかった。

#解決方法

「local.properties」を開いて、
ndk.dirのパスを直す。

これだけ。

sdk.dirのパスは既になっており、「Sdk」で終わっているはずなので、
ndk.dirはSdk/ndk-bundleにする

もっと具体的に書くと、
ndk.dir = “hogehoge/Local/Android/Sdk/ndk-bundle”
sdk.dir = “hogehoge/Local/Android/Sdk

とするだけ。

sdkのパスはAndroid Studioでプロジェクトを開いた際に自動で変更してくれるが、ndkのパスは変更してくれない。

だからややこしかった。時間がかかった。

どうせなら両方直してくれればいいのに。

元記事を表示

【Java】POST ( データの受け渡し )


# 【Java】POST ( データの受け渡し )

「登録処理や更新処理をおこなう」


## 【説明】
POSTメソッドは、HTTPの[メソッド]の一つで、主に登録処理や更新処理などの書き込みがあり、リソースが更新される可能性のある処理に対して使うメソッドになります。


## 【メリット】

– [GET]送信よりも多くのデータ量を扱える
– バイナリーデータ(2進数)が送信可能


## 【特徴】

– [GET]とは反対に結果にバラ付きがあり安全でないと定義されています。
– パラメーター等の値がリクエストURLには表示されず、メッセージボディに格納される


## 【使用場面】

– サーバからの情報取得時に使用
– HTMLの `form` に入力された内容をDBへ登録する
– ブログの記事を投稿する
– 新しいユーザを登録する
– 既存のデータに新

元記事を表示

【Java】Eclipseで「Hello world」をサーブレットで表示するまで

# 【Java】サーブレットで「Hello world」を表示

「Hello world」をサーブレットで表示する手順についてのまとめメモです。


## ① プロジェクトの作成

1. メニューの「ファイル」→「新規」→「その他」を選択
2. 「web」→「動的webプロジェクト」を選択して 「次へ>」
3. プロジェクト名 を入れ( 今回: HelloTest )にして 「次へ>」
4. デフォルトのまま 「次へ>」
5. 「web.xml デプロイメント記述子の生成」にチェックを入れ「完了」

## ② src内にパッケージの作成
今までもパッケージを作成していましたが、

1. プロジェクト内の→「src」を右クリック
2. 「新規」→「パッケージ」を選択
3. パッケージ名を入力( 今回: helloPackage )→「完了」

## ③ クラス(Javaファイル)の作成

通常通り「HelloWorld」クラスを作成する。
[クラス]

元記事を表示

【Eclipse】サーブレットの準備

# サーブレットプログラムの準備

サーブレットのプログラムを動作するまでの、個人的な手順まとめです。




## Step:1 動的Webプロジェクトの作成

### eclipseを使いプロジェクト作成する際に 動的Webプロジェクトで作成

1. プロジェクト名と ターゲット・ランタイムを設定
– ここで指定したプロジェクト名がコンテナの名前になる
– プロジェクトのロケーションで指定したフォルダがコンテナの実行ディレクトリになる
– ソースコードが配置されるフォルダの名前および場所は基本的にそのまま

2. コンテンツ・ルート (デフォルト: プロジェクト名)
– プロジェクトをサーバー上で動作させる際の名前になり、ブラウザからURLを入力する際、そのプロジェクトを指す為に使用されます。

元記事を表示

イテレータとは、わんこ蕎麦をよそう人である

#はじめに
以下では、「イテレータが何者か理解したい」という方へ、そのイメージを伝えることを優先しており、実際の動きとは多少異なります。 正しい動きについては、各種リファレンスをお読みください。
また、.Net(VB/C#)では「イテレータ(Iterator)/反復子」ではなく「イニュマレータ(Enumerator)/列挙子」と呼んでいます。

#イテレータ…?
私は、.NET(VB/C#)とJavaしか知らないのですが、どの言語にもイテレータまたはそれに類するものが存在すると思います。 これについて、私が理解(らしきことを)した時のことをまとめてみます。
##ネットで情報を漁る
ネットでいろいろな方が、イテレータについて具体的な例を挙げ分かりやすいように説明しています。 しかし私は「それがどんな感じか?」を先に(それも比喩で)掴んでいないと、理解が進まない人でした。 そこで、こんな風に理解しました。
##わんこ蕎麦とイテレータ
わんこ蕎麦は、お盆の上に少量の蕎麦がもられたお椀が載っており、給仕する方が一つずつ、食べる人の前にあるお椀によそうことを繰り返します。 ここでの登場人物が、

元記事を表示

[VSCode]Spring BootでHello World!

## はじめに
VSCodeを使って、Spring Bootで作るWebアプリケーションを作成しました。画面に”Hello World!”と表示するだけの簡単なアプリケーションです。

## 想定開発環境
**OS**: Windows10 64bit
**Visual Studio Code**: 1.51.1
**Java**: Java14
※Mavenプロジェクトにて作成します。

## 開発環境準備
VSCodeに以下の拡張機能をインストールしておく。
・**Java Extension Pack**
https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack

・**Spring Boot Extension Pack**
https://marketplace.visualstudio.com/items?itemName=Pivotal.vscode-boot-dev-pack

## プロジェクトの作成
– Visual Studio Codeで「コマンドパレット」(Ctr

元記事を表示

【Java・SpringBoot】Spring JDBC / RowMapper(SpringBootアプリケーション実践編15)

ホーム画面からユーザー一覧画面に遷移し、ユーザーの詳細を表示するアプリケーションを作成して、Spring JDBCの使い方について学びます⭐️
前回までで、Jdbc Templateを使った基本のCRUD操作について学びました
今回は応用編で、RowMapperを学びます^^
構成は前回の記事を参考にしてください

⭐️前回の記事
[【Java・SpringBoot】Spring JDBC でユーザー削除処理(SpringBootアプリケーション実践編14)](https://qiita.com/suema0331/items/fe54bbf8d089be8eb1fe)

#RowMapper
* RowMapperとは、**データベースのレコード(行)と、Javaオブジェクトのマッピングを行う**ためのクラス
* これまでは、Userテーブルのデータを1件取得するには、
select文で取得した結果をMapから取り出して、Userクラスのインスタンスにセットしていた
* 似たようなselect文を沢山作ると、コードの可読性が下がる。。
* →そんな時に、**RowMap

元記事を表示

パラダイムシフト

[Coming Soon – EC2 C6gn Instances – 100 Gbps Networking with AWS Graviton2 Processors](https://aws.amazon.com/jp/blogs/aws/coming-soon-ec2-c6gn-instances-100-gbps-networking-with-aws-graviton2-processors/) / [Graviton](https://aws.amazon.com/jp/blogs/aws/category/compute/graviton/)
この発表を見て、今後 IaaS では x86_64 ではなく arm64/aarch64 を選択することにした。
私が好んで使う Google Cloud や Azure は未対応なので AWS 一択ということになる。

使用する言語も、もう Java は使わず、Go/C++(ひょっとすると Rust)を使用することにしている。
x86_64 から arm64 へ、Java から Go へ。

私はこれまで書いてきたすべての Ja

元記事を表示

【Java】GET(データの受け渡し)


# タイトル

「ホームページのサーバから情報を取得する HTTPメソッド」


## 【説明】GET / GETメソッドとは
要約すると

– HTTPの[メソッド]の一つ。
– 何か情報を検索したり取得する時に使用する[メソッド]
– 指定したリソースの表現を転送するようにリクエストする [メソッド]
– 値をリクエストURLの後に付け加えてサーバに送る。

つまりブラウザでURLを入力し検索するとき無意識にGETメソッドを使っています。


## 【メリット】
GETを使うとどのような処理をしていたとしてもクライアントには安全なAPIだと見なされます。
これは、クライアントからはサーバがどのような処理をやっているかを知ることはできないためです。


## 【特徴】
GET送信の方法は、パラメータが明示的というのが特徴です。
そのため「パラメータを見れば、ページの遷移や、行われている処理がわかる」というメリットの反面、「パ

元記事を表示

[VSCode] Javaの開発環境構築、はじめの一歩

## はじめに
Javaでの開発が長いのですが、案件で使うエディタと言えば、eclipse(またはSTS)かIntelliJ IDEAが多かった私。InteliJに慣れてしまうと、ライセンス払ってでもInteliJ一択!だったんですが、ふと触ってみたVisual Studio Codeがいい感じ!だったんです。本記事では、Visual Studio CodeでJavaの開発環境を構築していきたいと思います。(**はじめの一歩**)

## 想定開発環境
**OS**: Windows10
**Visual Studio Code**: 1.51.1(2020年12月)
※ JDKのインストールは既に済んでいる前提
JDKのインストールについては、以前記事を書いているので、そちらをご参照ください!
[Amazon Corretto11 インストール](https://qiita.com/takumi_links/items/8f7793b0dd7032be7de8)

## 手順(2ステップ)
1. Java Extension Packインストール
2. Javaを動かしてみよう!

元記事を表示

OTHERカテゴリの最新記事