- 1. 【Spring Boot】REST APIにおける例外ハンドリング
- 2. 【Java】Mapの概要及び使い方について
- 3. JavaGold 例題 乱数
- 4. AWS LambdaとSnapStart
- 5. Java 8のPeriodとDurationメモ
- 6. PostgreSQL+MyBatis Generator+EclipseでエンティティやSQLの自動生成
- 7. EfwフレーワークのTomcat10対応のメモ
- 8. SQLとデータベースの連携
- 9. Jackson CSVを利用してCSVファイルを読み書きする
- 10. [Java]コンストラクタ引数が増えたらBuilderパターンを採用しよう
- 11. Apache CXFプラグインを用いて、WSDLファイルからコード生成する
- 12. Javaあれこれ
- 13. 1. Javaのバージョンを取得
- 14. 2. OSの種類を取得
- 15. 3. データ型を取得
- 16. 4. ヒープサイズ
- 17. DB Index 最適化方法
- 18. 初学者のためのJavaの学習方法/内容に関して
- 19. [Android その3] Androidのアプリケーションの基本開発
- 20. staticについての簡易まとめ(Java初心者向け)
- 21. Spring アノテーション一覧
- 22. ABC365A~Eの解答[Java]
- 23. EclipseでのKotlin開発ガイド:バージョン互換性、非公式プラグインの活用と代替IDEの選択
- 24. 【超初心者向け】MyBatis超入門
【Spring Boot】REST APIにおける例外ハンドリング
# これまでの記事紹介
| | URL |
|:———–|:————|
| 第1回 | [【Spring Boot】個人的に推奨するディレクトリ/ファイル構成](https://qiita.com/rpc_tk/items/b60adb5e55206585d98a “【Spring Boot】個人的に推奨するディレクトリ/ファイル構成”) |
| 第2回 | [【Spring Boot】【Java】定数宣言はfinal staticが良いのか、enumが良いのか](https://qiita.com/rpc_tk/items/b60adb5e55206585d98a “【Spring Boot】個人的に推奨するディレクトリ/ファイル構成”) |# はじめに
皆さん例外ハンドリングに悩んだことはありませんか。
アプリケーションに例外はつきものなので、対処する必要があります。適切に例外を拾って、適切な対処を行っていますか。
発生する可能性のある例外を放置していませんか。
無作為にtry-catchを
【Java】Mapの概要及び使い方について
# はじめに
現場で新規参画者に対してMapの説明をする機会が度々あるため、
自身の説明用のレジュメも兼ねて記事として投稿しようと思いました。
# Mapとは
Mapは、Javaの標準APIであるコレクションフレームワークのインタフェースの一種です。
ListやSetといった、Collectionインタフェースとの違いとしては、キーと値をペアとして管理するデータ構造であることが挙げられます。
Mapは一意のキーに対して一つの値を関連付けることができるため、キーを使って効率的にデータを管理できます。
上述の通り、Mapはインタフェースのため、
一般的にプログラム上で扱う際にはMapの各クラスをインポートして使用します。# Mapの種類
Javaでよく使われるMapの実装には、以下の3つがあります。
* HashMap:
最も一般的なMapの実装で、キーのハッシュコードを使って高速な検索と格納を行います。注意点として、要素の順序は保証されません。
* TreeMap
キーを順序通りに自動でソートするMapです。ここでいう順序とは、自然順序を基本としますが、指定したコンパレータ
JavaGold 例題 乱数
以下のコードについて適切な選択肢を選んでください
“`java
import java.util.Random;public class Example {
public static void main(String[] args) {
Random random = new Random();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10; i++) { sb.append(random.nextInt(10)); } System.out.println("Generated password: " + sb.toString()); } } ``` 1. コンパイルエラー 1. 実行時エラー 1. ランダムな出力結果が出るが、問題がある 1. ランダムな出力結果が出る、特に問題はない解答
3:
このコー
AWS LambdaとSnapStart
# はじめに
AWS Lambdaは、開発の面ではプログラミングが簡単で、運用の面では変化する使用パターンに迅速に対応できるアプリケーションです。Lambdaの特徴は、**関数が安全で、隔離された環境**で実行される点です。各環境のライフサイクルは、**Init**、**Invoke**、**Shutdown**という3つの段階で構成されます。## AWS Lambdaのライフサイクルごとの特徴
| Category | Desciption |
|————|——————————————————————————|
| Init | 関数のランタイムをブートストラップし、静的コードを実行 (INIT_REPORT) |
| Invoke | APIリクエストに応答してLamb
Java 8のPeriodとDurationメモ
2つの日時の間隔を求めたい場合に思いつく、なんとなく似ている響きの `java.time.Period` と `java.time.Duration` を比較してみました。
# `java.time.Period`
こちらは「年月日」単位での間隔を表現できます。
例えば、2024-08-01 〜 2024-08-10の間であれば“`kotlin
import java.time.LocalDate
import java.time.Periodfun main() {
val start = LocalDate.of(2024, 8, 1)
val end = LocalDate.of(2024, 8, 10)Period.between(start, end)
// P9D (9 days)
}
“`終了日 `end` は含まれないので、1,2,3 … 9 と数えていき、答えは9日間となります。
## Periodの生成方法
### `between`
2つの `LocalDate` の差分から生成します。
PostgreSQL+MyBatis Generator+EclipseでエンティティやSQLの自動生成
# はじめに
MyBatis Generatorではエンティティー、Mapper、SQLを自動生成してくれます。
それにより、テーブルと1対1のエンティティーを自前で生成する必要がなく、とても開発効率があがります。
また、INSERT文、PKをキーとしたUPDATE文、SELECT文も自動で生成してくれます。テーブルの仕様変更が起こった場合も、カスタマイズ部分には手を加えずに変更部分を反映してくれますので、非常に便利です。
ここでは、PostgreSQL利用時の設定内容についての例を紹介したいと思います。
# 開発環境
* JDK 21
* Eclipse 2024
* PostgreSQL 16
* クラスパスにPostgreSQLのJDBCのjarがあること# 導入方法
* メニューの「ヘルプ」→「Eclipse マーケットプレイス」を選択
* Eclipse マーケットプレイスのダイアログで、検索欄に「mybatis」を入力して「Enter」キーを押下
* 「MyBatis Generator x.x.x」の「インストール」を押下
![マーケットプレイス.png](h
EfwフレーワークのTomcat10対応のメモ
## 背景
Efwがいままではtomcat7・8・9対応ですが、最近tomcat10も対応するようにしました。Githubには、従来とjakarta対応2つフォルダに分けてソースを格納するようにしました。
https://github.com/efwGrp/efw4.X/tree/master/src
https://github.com/efwGrp/efw4.X/tree/master/src4jakartaリリースのjarファイルも従来とjakarta対応を2つjarにしました。
“`xml
io.github.efwgrp efw 4.07.019
io.github.efwgrp efw 4.07.019jakarta
“`
SQLとデータベースの連携
自分なりのまとめ
★☆MySQLを使用してます☆★## JDBC
Java Datebase Connectivityの略
Javaプログラムとデータベースを接続するためのAPI。Javaプログラムからデータベースに対してSQLクリエを実行したり、データを操作ができる。## 主な機能
**①データベース接続**
Javaプログラムからデータベースに接続し、操作を行う為の接続オブジェクト(`Connection`)を作成**②SQLクリエの実行**
SQLクリエ(`SELECT`,`INSERT`,`UPDATE`,`DELETE`など)を実行するための `Statement`,`PreparedStatement`,`CallableStatement` オブジェクトを提供**③結果セットの処理**
`SELECT`クリエの結果として得られるデータを処理するための`ResultSet`オブジェクトを提供**④トランザクション管理**
データベース内でのトランザクション(複数のSQL操作を1つの単位として扱う)の制御を行う。`commit()`や`rollback(
Jackson CSVを利用してCSVファイルを読み書きする
# はじめに
CSVファイルの読み書きライブラリと言えば、以前は“OrangeSignal CSV“を使用していたのですが、2014年で開発が止まってしまっています。
とは言え、上記ライブラリでも今でも十分だったりはするのですが、Javaのバージョンが上がって利用できなくなってしまうことがなくはないので、出来れば現在進行形でアクティブなライブラリを使用したいと思っていました。
“Open CSV“は今なおアクティブなのですが、Mapのサポートがない、ということで、何か良いライブラリがないか探していたところ、Jackson CSVを見つけました。# 前提条件
* Excelで出力したCSVファイルが読めること
* 出力したCSVファイルをExcelで読めること
* UTF-8に対応していること上記条件を満たすためには、以下の必要があります。
* BOM付きファイルを読めること
* 出力ファイルはBOM付きであること
* 区切り文字は”,”、改行はCRLF
* 項目中に、”,”、改行(CRLF,LF,CR)、”(ダブルクォーテーション)を含む場合は、項目はダブルクォーテーシ
[Java]コンストラクタ引数が増えたらBuilderパターンを採用しよう
# 導入
ソフトウェア開発を進める中で、クラスのコンストラクタに渡す引数が増えてくることはよくあります。
特に、**複雑なオブジェクト**を生成する必要がある場合、その引数の数はどんどん増えてしまい、コードの可読性やメンテナンス性に悪影響を及ぼすことがあります。私自身、最近、新しい機能を実装しようとした際、コンストラクタ引数が多くなりすぎて、困っていました。ちょうどそのときに本棚に眠っていた[Effective Java](https://www.amazon.co.jp/Effective-Java-%E7%AC%AC3%E7%89%88-Joshua-Bloch/dp/4621303252)を読んでみると、Builderパターンを利用して問題を解決する手法が載っていたので、自分の理解を深めるためにも記事を書いてみました。
# Builder以外のパターン
まずは自分が行っていたパターンであり、Effctive Javaにもアンチパターンとして紹介されているパターンについて解説していきます。## JavaBeansを利用するパターン
これまでの開発では、このパターンを採用し
Apache CXFプラグインを用いて、WSDLファイルからコード生成する
# はじめに
Apache CXFに含まれるWSDLファイルからJavaコードを生成するMavenプラグインの使用方法を記す。# 実行環境
– Eclipse (4.32.0)
– Maven (3.9.7)# POMの設定
~~~~XML
4.0.0
java.camel.soap.example
java.camel.wsdl2java.example
0.0.1-SNAPSHOT
Javaあれこれ
1. Javaのバージョンを取得
“`
System.getProperty(“java.version”);
“`2. OSの種類を取得
“`
System.getProperty(“os.name”);
“`3. データ型を取得
“`
オブジェクト.getClass();
オブジェクト.getClass().getSimpleName();“`
4. ヒープサイズ
“`
Runtime.getRuntime().totalMemory();
Runtime.getRuntime().freeMemory();
Runtime.getRuntime().maxMemory();java -Xms1m -Xmx3m クラス名 // 実行時にヒープサイズを指定
“`
DB Index 最適化方法
# はじめに
データベースには大量のデータが蓄積されていきます。データが増加するにつれて自然に発生する問題の一つは、検索速度に関する課題です。インデックスは、テーブルの操作速度を向上させる重要なデータ構造であり、DBメモリ内に一定のスペースを使用して保存されます。効果的なインデックス管理は、データベースのパフォーマンスを最適化するために不可欠です。# インデックスの特徴
– **WHERE句に使用するカラムの効率化**: インデックスは、主に検索条件に頻繁に使用されるカラムに設定されます。
– **単一および複合インデックス**: インデックスは、1つのカラムまたは複数のカラムを組み合わせて設定できます。単一インデックスを複数設定したり、複数のカラムを組み合わせて複合インデックスを設定することができます。
– **過剰なインデックスは非効率的**: インデックスを多く設定したからといって常に検索速度が向上するわけではありません。インデックスは追加のストレージを必要とし、データの更新時にインデックスも同時に更新されるため、パフォーマンスに悪影響を与える可能性があります。
> 検索
初学者のためのJavaの学習方法/内容に関して
# Qiitaに書く内容を尽きたところで
隔週更新していくとなると、ネタも尽きてくる。そのため、少人数ではあるものの、議論する機会があったので、今一度Javaを学ぶにあたってどんな感じで学んでいけばいいのかを考えてみた。# 学ぶ内容
最初、自分が発表するにあたり、以下の項目に関して紹介すれば、初心者(初学者)がJavaをわかるようになるのではないかと思っていた。
1. 変数/class/intefrface
1. 配列/List/Map
1. for文/拡張for文
1. if文これに加えて、enumやstream、三項演算子を加えておいた。ただし、番号が附番していない項目に関しては補助的な項目として必須の学習項目から外した。
# 実際に議論してわかったこと
実際に話してみて、足りないといわれた項目は以下。
1. getter/setter
1. アノテーション上記の2つに関しては追加しておいたほうがよいのではないかと言われた。確かにわかっておいたほうがいいかもなって思う項目ではあるが。
# 今週から書く記事として
以下の項目に関して記載をしていこうと思う。
1
[Android その3] Androidのアプリケーションの基本開発
# Android APP 基本開発(Java)
今回作るAPPはとーーーーーーっても簡単なやつです。(なぜなら私もほぼ初めてといえるので)
間違いもあると思いますが、頑張ります(頑張りましょうm)
## プロジェクトの作成
Android Appでのプロジェクトの開発については、調べて作ってみてくださいmm## メモアプリ
単純なメモアプリを作りたいと思います。
画面の作成、ボタンの作成、ボタン押下で、テキストボックスのダイアログを表示させて、入力したら、画面に表示させるようにします。## 実装
### UIの設計
メモアプリの基本UIを設計します。シンプルなリストビューでメモの一覧を表示し、メモの追加ボタンを用意します。###### activity_main.xml の編集
このファイルはプロジェクトのres/layoutフォルダにあります。
“`xml
staticについての簡易まとめ(Java初心者向け) ## staticをざっくり一言でいうと
フィールドやメソッドを、クラス間で共用できる魔法の修飾子!:::note info
9/3追記 下記のように表現するのが一般的とのことです!
フィールド → クラス変数
メソッド → クラスメソッド
そのため、以下の記事内では準拠する形で記述しております。
:::## staticにできるもの
* クラス変数
* クラスメソッドクラス変数やクラスメソッドをクラス間で共用や上書きができると便利なときもありますよね。
しかし、不意な変更をしてしまう可能性もあるので注意しましょう。## ざっくり説明
まず、通常のクラス変数やクラスメソッドの場合、クラス間で共用するには
1. クラス内でクラス変数やクラスメソッドを定義
2. 別のクラスで、使用したいクラス変数やクラスメソッドが記載してあるクラスのインスタンスを生成
3. インスタンスを経由してクラス変数やクラスメソッドにアクセスするこのような手順となります。
しかし、staticの場合はこれが簡略化されます。
1. クラス内でクラス変数やクラスメソッドを**static**を付けて
Spring アノテーション一覧
| カテゴリ | アノテーション | 説明 |
|——————————|—————————–|——————————————————————————————–|
| **依存性注入関連** | `@Autowired` | 自動的にBeanを注入します。コンストラクタ、フィールド、セッターに使用可能。 |
| | `@Qualifier` | 特定のBeanを指定して注入する際に使用します
ABC365A~Eの解答[Java]
## はじめに
今回はコンテスト中にEまで解けたのでそれを載せようと思います。なお、僕のライブラリは[GitHub](https://github.com/viral8code/viral-Library)よりご確認ください。
では、見ていきましょう。## A – Leap Year
問題文は[こちら](https://atcoder.jp/contests/abc365/tasks/abc365_a)問題文の通りに実装しました。
“`A.java
final class Main{
private static final boolean autoFlush = false;
private static final SimpleScanner sc = new SimpleScanner(System.in);
private static final SimpleWriter out = new SimpleWriter(System.out,autoFlush);public static void main(String[] args){
//
EclipseでのKotlin開発ガイド:バージョン互換性、非公式プラグインの活用と代替IDEの選択
# はじめに
Kotlinは、シンプルでモダンなプログラミング言語として人気を集めていますが、Eclipseでの開発環境の整備には注意が必要です。Eclipseは多くの開発者に親しまれているIDEですが、Kotlinの開発においてはバージョン管理やプラグインの選択が非常に重要です。本記事では、EclipseでのKotlin開発におけるバージョン互換性、非公式プラグインの利用方法、そしてEclipseの代替としてIntelliJ IDEAの利点について解説します。
# EclipseとKotlinのバージョン互換性
## 1. 安定したKotlinバージョン:1.5, 1.6
– **推奨Eclipseバージョン**: Eclipse 2020-03 (4.15) 以降
– **対応JDKバージョン**: Java 11からJava 17
– **特徴**:
– Kotlin 1.5および1.6はEclipseの公式Kotlinプラグインで安定してサポートされており、幅広いJDKのバージョンと互換性があります。業務システム開発に適したバージョンです。## 2. 実験的サポ
【超初心者向け】MyBatis超入門
# はじめに
とても久しぶりの超入門シリーズです。
何年も前にMyBatisの勉強をしたのですが、まとめていませんでした。
MyBatisは文献が豊富で、わざわざ自力でまとめなくてもよかったのですが、超入門シリーズの別の記事の準備をしていて、その中でMyBatisを使い、結構手間取ったので、まずはMyBatisの記事を執筆することにしました。
では、さっそくはじめます。# 環境構築
しばらく開発をしていなかったので、開発環境を新しく構築しました。
今回使用した開発環境は次の通りです。■開発環境一覧
|種別|製品名|バージョン|特記事項|
|:————– |:————————–|:———|——-|
|実行環境|Java|Java SE 21|Eclipse付属のJRE|
|統合開発環境|Pleiades All in one Eclipse|2024-06||
|DBMS|Oracle|19c|Oracle社が配布してくれている構築済みVMを使いました。
Oracle様、ありがとうございます。|
|SQ