JAVA関連のことを調べてみた

JAVA関連のことを調べてみた
目次

Spring Bootのアノテーション基礎

Spring Bootでは、アノテーションを使用して簡潔にWebアプリケーションを構築することができます。ここでは、よく使用されるアノテーションについて説明します。

# 1. @Controller
@Controller は、Spring MVCにおけるWebコントローラーを示すためのアノテーションです。このアノテーションがクラスに付与されると、そのクラスはHTTPリクエストを処理するためのコントローラーとして認識されます。

“`java
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping(“/example”)
public class ExampleController {

@GetMapping
public

元記事を表示

Spring Bootでバリデーションを試してみた

# 背景・目的

前回、下記でデータの登録・更新・削除などを試しました。今回はバリデーションを試してみます
– [Spring Bootでデータを保存する-その2](https://qiita.com/zumax/items/06d0465218478840a949)
– [Spring Bootでデータを保存する-その1](https://qiita.com/zumax/items/2e387254c736659bf20c)

# まとめ
下記に特徴をまとめます

|特徴|説明|
|:–|:–|
|バリデーションのパッケージ|spring-boot-starter-validation|
|パッケージは二種類ある|・jakarta.validation
・jakarta.validation.constraints|
|標準バリデーション|以降のものがある|
|入力されているかのバリデーション|“`@Null“`
`@NotNull`
`@NotBlank`
`@NotEmpty`
|数値の範囲のバリデーション|`@Min`
`@Max`

元記事を表示

Javaで「メソッドの使い方」を動作を確認してみた

# 概要

Javaで「メソッドの使い方」を動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/method/index1.html

# 実装

以下のファイルを作成しました。
“`JSample1_1.java
class JSample1_1{
public static void main(String args[]){
int eigo = 78;
int suugaku = 90;
int kokugo = 68;

check(“英語”, eigo);
check(“数学”, suugaku);
check(“国語”, kokugo);
}

private static void check(String kyoka, int seiseki){
System.out.print(kyoka + “の試験結果は”);
if (seiseki > 80){
System.out.println(“合格です”);

元記事を表示

Spring Bootでデータを保存する-その2(更新と削除)

# 背景・目的
[Spring Bootでデータを保存する-その1](https://qiita.com/zumax/items/2e387254c736659bf20c)では、H2データベースを使用して、データの登録を試しました。
今回は、保存されたデータの更新や削除を試します。

# 実践
[Spring Boot 3 プログラミング入門](https://www.amazon.co.jp/Spring-Boot-3-%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%85%A5%E9%96%80-%E6%8E%8C%E7%94%B0%E6%B4%A5%E8%80%B6%E4%B9%83/dp/4798069167
)の内容を参考に試してみます

## 前提
https://qiita.com/zumax/items/2e387254c736659bf20c#%E5%AE%9F%E8%B7%B5

環境構築やコードは、上記のページの状態から始めます

## データの初期化
1. コントローラークラスに

元記事を表示

Spring Bootでデータを保存する-その1(登録)

# 背景・目的
[Spring Bootでデータベースへのアクセスを試してみた](https://qiita.com/zumax/items/7487b86f56ea12c31d44)では、DBアクセスを試してみました。
今回は、[Accessing JPA Data with REST](https://spring.io/guides/gs/accessing-data-rest)を試してみます。

# まとめ
下記に特徴を整理します

|特徴|説明|
|:–|:–|
|H2|・Java SQL データベース
・高速、OSS、JDBC
・組み込み、サーバ、インメモリDB
・ブラウザベースのコンソール
・スモールフットプリント、2.5MBのJarファイル|
|H2の主な特徴|・非常に高速なデータベースエンジン
・オープンソース
・Javaで書かれている
・標準SQL、JDBC APIをサポート
・組み込みおよびサーバーモード、クラスタリングのサポート
・強力なセキュリティ機能
・PostgreSQL ODBCドライバ

元記事を表示

隙間時間にみる早見表〜OracleJavaSE11 gold | 例外 〜

# この記事について
OracleJavaSE11 goldを勉強していた時になかなか覚えられないな〜っとなっていた内容を毎回見ることができるようにこちらの書籍で勉強していた時のまとめたものです!

おすすめ書籍(勉強開始時点の書籍最新版を購入しましょう)

https://book.impress.co.jp/books/1121101020

各カテゴリごとでまとめていますので隙間時間に見てみてください。

## 例外処理
### マルチキャッチ機能
複数の例外を合わせることができる
継承関係のある例外処理はあわせて記述できない
catch(aexception |bexception e)

例外は最初にスローされたものが表示され、あとのものは内包される

## Throwble
サブクラスにerrorとexceptionクラスを持っている
独自のクラスを定義する時はexceptionを継承する。exceptionであればよくサブクラスでも構わない

**getSuppressed()**
内包された例外をThrowble型の配列で返す

## try-with-resourse

元記事を表示

MyBatisを使用した際につまづいた点とプラグインの一例

SpringBootでMyBatisを使用している際につまづいた点と、その解決策として作成したプラグインの一例を紹介します。

# 1. Selectiveがつくメソッドとつかないメソッドの違い
MyBatisの自動生成で作成したMapperには、insert、update、などのメソッドが用意されています。
これらのメソッドには、Selectiveがつくものとつかないものがあります。
例:「insert」「insertSelective」「updateByPrimaryKey」「updateByPrimaryKeySelective」

これらの違いは、「null」の扱いにあります。

Selectiveが付かないメソッド
– すべてのカラムに対して登録・更新処理を行う
– Entityに何も値を設定しない場合、そのカラムには「null」がセットされる

Selectiveが付くメソッド
– 値がnull以外のカラムに対して登録・更新処理を行う
– Entityに何も値を設定しない場合、登録・更新対象のカラムに含まれない

これらを意識せずに使用していると、想定外のエラーや登録値の原

元記事を表示

隙間時間にみる早見表〜OracleJavaSE11 gold | マーカーインタフェース 〜

## マーカーインタフェース
そのクラスを処理するべきかインタフェースで判断する。インタフェースは何も持たない
instansof演算子を使用しマーカーインタフェースを使用しているクラスか判定する手法
### プロセッサ
マーカーインタフェースを使用するクラスを処理するクラスのこと

## アノテーション
マーカーインタフェースを簡単に表現するためのもの
ある処理の対象になるものを示す

### 特徴
プロセッサに値を渡すことができる
フィールド、メソッド、コンストラクタの細かい単位で指定できる

### 独自定義方法
“`java
public @interface test{}
“`
コンパイル後、java.lang.annotation.Annotationインタフェースを継承する記述になる

### 使用方法
“`java
@test
public class Item{}
“`
コンパイルされるとインタフェースが定義されるわけではなく、アノテーションを持っているという情報が保存される

## 注釈パラメーター
@ interface内に設定するメソッドに付与する値のこ

元記事を表示

隙間時間にみる早見表〜OracleJavaSE11 gold | コレクション 〜

# この記事について
OracleJavaSE11 goldを勉強していた時になかなか覚えられないな〜っとなっていた内容を毎回見ることができるようにこちらの書籍で勉強していた時のまとめたものです!

おすすめ書籍(勉強開始時点の書籍最新版を購入しましょう)

https://book.impress.co.jp/books/1121101020

各カテゴリごとでまとめていますので隙間時間に見てみてください。

## コレクション
Object型として扱うことができるが取り出すときに互換性のない型にダウンキャストすると例外発生する

## ボクシング
オートボクシングはプリミティブ←→参照型だけなので注意

## ジェネリクス
**<>**
ダイヤモンド演算子、クラス内に記述される型パラメーター(T)を置き換える
### 総称型
ジェネリクスを使ったクラスのこと
### 型推論使用可能箇所(型を書かないで<>のみの場合)
変数への代入、メソッドの戻り値、メソッド呼び出しの引数
### 制約付き型パラメーター
T extends Aと記述することで、A型のクラスまたはサブクラスであること

元記事を表示

隙間時間にみる早見表〜OracleJavaSE11 gold | JDBC 〜

# この記事について
OracleJavaSE11 goldを勉強していた時になかなか覚えられないな〜っとなっていた内容を毎回見ることができるようにこちらの書籍で勉強していた時のまとめたものです!

おすすめ書籍(勉強開始時点の書籍最新版を購入しましょう)

https://book.impress.co.jp/books/1121101020

各カテゴリごとでまとめていますので隙間時間に見てみてください。

## JDBC
DBMSを共通して扱えるように、java.sqlパッケージやjavax.sqlパッケージを提供する。インタフェースを実装したクラスは各ベンダが提供する。

## 接続文字列
“`java
jdbc:dbms名?://サーバのIPアドレス:ポート番号/データベースの場所
“`

## java.sql.connection
DBMSとのコネクションを管理する
**close()**
コネクションを閉じる

## java.sql.DriveManager
提供されたドライバを検索しDBMSに接続するクラス
**getConnection()**
java.sq

元記事を表示

Javaで「文字列の中の正規表現パターンとマッチする部分を置換する」の動作を確認してみた

# 概要

Javaで「文字列の中の正規表現パターンとマッチする部分を置換する」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/string/index21.html

# 実装

以下のファイルを作成しました。
“`JSample21_1.java
class JSample21_1{
public static void main(String[] args){
String regex = “aA|Aa|aa”;
String str = “AA BB aA Aa CC aa”;

System.out.println(str.replaceFirst(regex, “AA”));
System.out.println(str.replaceAll(regex, “AA”));
}
}
“`

以下のコマンドを実行しました。
“`
$ javac JSample21_1.java
$ java JSample21_1
AA BB AA Aa CC aa

元記事を表示

【Java】EclipseでコンパイルしたクラスファイルをJDKとターミナルで実行する

EclipseがあればJDKをインストールする必要はありませんが、勉強目的でEclipseを使わずにターミナルでJavaファイルをコンパイルしたりクラス(.class)ファイルを実行してみたのでメモに残します。

# 使用環境
PC:MacBook Air 2018
OS:macOS Sonoma 14.3.1
IDE:Eclipse 2023

# JDKとは?
JDKとは、Javaの実行環境(Javaランタイム)となるJDE(JVMとJava APIのセット)と、Javaファイルをクラスファイルにコンパイルするコンパイラやデバッガがセットになったソフトウェアパッケージです。

## MacでJDKをインストールする
MacでJDKがインストールされているかどうかは、ターミナルで以下のコマンドを入力します。
“`
$ java -version
“`
JDKのバージョンが表示されなければ、インストールされていないということになります。
自分も未インストールだったため、以下の記事を参考に解凍、およびインストールしました。
https://tech.e3factory.com/pro

元記事を表示

Spring FirestoreReactiveRepository FireStoreのカラムに「_」がある場合

# FirestoreReactiveRepository
com.google.cloud.spring.data.firestore.FirestoreReactiveRepositoryは、Spring Dataの一部として提供されるインターフェースであり、Google Cloud Firestoreデータベースに対してリアクティブな操作を行うためのリポジトリのクラスです。

Google Cloud Firestoreデータベースに対する操作を簡単に行うためのメソッドが用意されており、特別に処理を記述することなくCRUDやOrderByなどを利用することができます。

## 利用する例
FireStoreにこんなテーブルがある場合

“`com.example.entity.UserDocument.java
package com.example.entity;

import com.google.cloud.firestore.annotation.DocumentId;
import com.google.cloud.spring.data.firestore.Do

元記事を表示

String変数のイコール比較を説明するのに苦労した

# 経緯
テレワーク中に新人プログラマーより、if文内にて==比較して同値の値が入っているのに、if文の中に入らないという悩みを相談された。
# 解決法方法
==で数値比較であれば問題ないが、String変数をイコールにて比較しようとしていた。
対処方法としてequalsメソッドを使用してというだけでは何の成長にもならないかなとは思いつつ、ポインターのアドレスの紹介をするのもなんだなと思った。
# 即座に回答した内容
コンピューターって数値でしか処理できないから、文字も文字コード表を元に数値があてはめられてるんだよね。
数値と文字はあくまで文字コード表を元にしか変換できないわけで、、、、、、。

この辺から説明が苦しくなる。

# 結局行きつく先
=はしょせん数値比較でString変数みたいな文字列に関してはここに文字を保存したよってアドレスで保管してるんだよね。同じアドレスだと同じ文字が入ることになるんだよね。
今回の場合にはデータベースからは同じ値を取り出しているんだけど、別々に保管してるんだよね。
だから、別のアドレスが当てはまっている。最初のほうをtest1という変数、tes

元記事を表示

Spring Bootでデータベースへのアクセスを試してみた

# 背景・目的

以前、[Sprint Bootの環境を構築したときのメモ](https://qiita.com/zumax/items/8effa97f338dd0224b22)では、Spring Bootの環境を構築しました。
今回は、Spring Bootからデータベースへのアクセスを試してみます。

# まとめ
下記に特徴を記載いたします

|特徴 |説明|
|:–|:–|
|Spring Data JPA|JPA(Java Persistence API)ベース リポジトリを簡単に開発できる

データアクセステクノロジーを使ってSpring アプリケーションの構築が簡単にできる

目的は、データアクセスレイヤの実装を減らし改善すること

開発者は、様々な技術を使い、リポジトリインタフェイスを記述することで、Springは自動で接続できる|
|JPA|Java Persistence APIの略。

オブジェクトリレーションマッピングのためのPOJO 永続モデルを提供している

EJBソフトウェアコンポーネントに限

元記事を表示

Java の Maven で Azure Functions を試してみた

いつもは .NET で Azure Functions を使っていますが、ふと Java だとどうやって作るのだろうと疑問に思ったので試してみました。

## 動作環境

“`bash:bash
$ java -version
openjdk version “11.0.10” 2021-01-19
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.10+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.10+9, mixed mode)

$ mvn -version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Default locale: ja_JP, platform encoding: UTF-8
OS name: “mac os x”, version: “10.16”, arch: “x86_64”, family: “mac”

$ func –version
4.0.5801

元記事を表示

隙間時間にみる早見表〜OracleJavaSE11 gold | 入出力 〜

# この記事について
OracleJavaSE11 goldを勉強していた時になかなか覚えられないな〜っとなっていた内容を毎回見ることができるようにこちらの書籍で勉強していた時のまとめたものです!

おすすめ書籍(勉強開始時点の書籍最新版を購入しましょう)

https://book.impress.co.jp/books/1121101020

各カテゴリごとでまとめていますので隙間時間に見てみてください。

## Java.io.File
ディレクトリやファイルへのパスを表すクラス
“`java
File file = new File(“絶対パスか相対パス”)
“`
| メソッド名 | 説明 |
|:-:|:-:|
| exists() | 存在するか確認 |
| createNewFile() | 新しいファイルを作る |
| mkdir() | 新しいディレクトリを作る |
| getAbsolutePath() | ファイルやディレクトリの絶対パスを調べる |
| listFiles() | 指定位置のファイルやディレクトリの一覧をファイル型配列で取

元記事を表示

隙間時間にみる早見表〜OracleJavaSE11 gold | ラムダ式 〜

# この記事について
OracleJavaSE11 goldを勉強していた時になかなか覚えられないな〜っとなっていた内容を毎回見ることができるようにこちらの書籍で勉強していた時のまとめたものです!

おすすめ書籍(勉強開始時点の書籍最新版を購入しましょう)

https://book.impress.co.jp/books/1121101020

各カテゴリごとでまとめていますので隙間時間に見てみてください。

## ラムダ式
クラスに内包されていない変数に格納できる関数のこと、関数型プログラミングの概念が採用されている。
外部のオブジェクト変数を使用する場合、参照先は実質的にfinalになる。
変数に型がついていないのはvar型で表現されているため。
匿名クラスをさらに簡潔にしたもの(オーバライドするメソッドがわかればいいみたいな)

### 引数の型は省略可能
(x) -> x;
### ()も省略可能
x -> x ;
### 引数の型を記述する場合、()は省略できない
(String x) -> x ;
### 引数が複数になる場合、引数の型は省略可能だが()は省略できな

元記事を表示

隙間時間にみる早見表〜OracleJavaSE11 gold | クラス・並列処理・Optional 〜

# この記事について
OracleJavaSE11 goldを勉強していた時になかなか覚えられないな〜っとなっていた内容を毎回見ることができるようにこちらの書籍で勉強していた時のまとめたものです!

おすすめ書籍(勉強開始時点の書籍最新版を購入しましょう)

https://book.impress.co.jp/books/1121101020

各カテゴリごとでまとめていますので隙間時間に見てみてください。

## ネストクラス
### インナークラス
クラス直下に記述
public、protected、private、abstract、final
エンクロージングクラスのインスタンスも必要、staticなフィールド等は記述不可能
### staticインナークラス
クラス直下に記述
public、protected、private、abstract、final、static
エンクロージングクラスのインスタンスと記述を必要としない
### ローカルクラス
メソッド内クラス
abstract、final
実質的finalなローカル変数は先に記述されていれば使える
### 匿名クラス

元記事を表示

【初心者】JRubyでSQLiteデータベースを読み書きする

# 手軽に使えるSQLiteだが思ったよりも苦労した

何もわざわざJRubyなんて使う必要ないと言われそうなんですが、プログラミングを人に教えるときにデータベースの使い方を扱う必要が出てきまして、Windowsで手軽に環境構築できるので、JRubyを使うことにしました。

また、手軽に利用できるデータベースを探していたところSQLiteにたどり着きました。実際、selectは他のDBよりもかなり速いですね(個人が利用する範囲ならば)

ネットで色々と検索したのですが、自分の環境ではJRuby + SQLiteの読み書きは、Rubyのライブラリーではあまりうまく行きませんでした。

普段からJavaでsql2o( https://www.sql2o.org/ )を利用していたので、これをJRubyで呼び出せば行けるのではないかと考えました

# 準備

sqlite-jdbc-3.46.0.0.jar , slf4j-api-1.7.30.jar , slf4j-simple-1.7.30.jar ,sql2o-1.8.0.jar を使います。

sqlite-jdbcは、slf4jに

元記事を表示

OTHERカテゴリの最新記事