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

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

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

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

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

元記事を表示

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に

元記事を表示

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

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

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

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

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

## list.of
変更不可なリストを返す

## java.lang.Object
### int HashCode()
インスタンスの内容をハッシュ値で返す
### boolean Equals(Object obj)
自インスタンスと引数のインスタンスが同一か判定
### String toString()
インスタンス内容を文字列表現にして返す。sysoutやStringBuilderなど多くに使われる。
メインフィールドや全てのフィールドを出力したり。
FQDN@ハッシュ値

## iterableインタフェース
コレクションのスーパーインタフェース
拡張for文に

元記事を表示

No.10 クラス&練習問題01

**【動画URL】** https://youtu.be/dQYUvKx1XYI

Javaではクラスという単位で作成する。部品のようなもの

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680113/2674231b-a2f7-b0fb-bb4a-bb81a74e1b09.png)

・{ ~ }までをブロックという
・大文字と小文字を区別する

**【動画URL】** https://youtu.be/vxTRN8HpR-0?feature=shared

**【練習問題】practiceパッケージを作成し、その中に新しいクラス(Practice01)を作成し、自分の名前を出力してみよう**
<出力例>
Udemy花子

※解答例は、完成例のプロジェクトをご参照下さい
https://zenn.dev/codek2/books/63c880c460c21e/viewer/082a9e

まとめてご覧になりたいあなたは
https://zenn.dev/code

元記事を表示

Trie

# 概要
コーディング試験でよくみられる
`Prefixあるか、文字列検索せよ`
みたいなのは

完全検索でできるが、
面接に行ったら、「もっと改善できるか」と聞かれる

「私の考えは`Trie`(トライ木)を利用します」と話せば、半分は合うかと思う

# Trieとは
1. 文字列を保存し、効率的に探索するための`Tree`形式のデータ構成
1. 自動完成機能、辞書検索などの文字列を探索するために特化されている
1. 例えば、`Apple`の検索するためには、一番最初に`A`を探し、その後`p`、`p`の順番で探せばいい。こういう画面を適応したものが`Trie`(トライ木)

#### 例1)Trieの形
![제목 없는 다이어그램.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961840/a83df9b6-d064-136c-95fe-e09adb37fa66.png)

#### 例2)ヤフーで東京を検索した時に表示される文字列
東京(Prefix)以降

元記事を表示

【Spring Boot】ログインユーザーを取得する

spring securityを使ってログイン中のユーザーを取得したり表示したりするための設定が意外と面倒だったため記録

## ユーザー情報クラス
`@AuthenticationPrincipal`で取得するためにaccountフィールドを追加
“`AccountDetail.java
import java.util.ArrayList;
import com.example.todo.entity.Account;
import org.springframework.security.core.userdetails.User;
import lombok.Getter;

public class AccountDetail extends User{
// 追記
@Getter
private Account account;

public AccountDetail(Account account){
super(
account.getName(),
a

元記事を表示

OTHERカテゴリの最新記事