JAVA関連のことを調べてみた2022年04月10日

JAVA関連のことを調べてみた2022年04月10日
目次

【Java】Spring Data JPA関連プロパティ @application.properties

# プロパティ一覧(随時追加)
“`properties
spring.jpa.properties.hibernate.jdbc.time_zone=Asia/Tokyo
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=none
“`

# spring.jpa.properties.hibernate.jdbc.time_zone
・データベースのタイムゾーンを設定する。
・設定方法は2つあるが、今回は設定方法2。

 設定方法1:JDBC URLのパラメータとして設定
 設定方法2:spring.jpa.properties.hibernate.jdbc

元記事を表示

【Java】HibernateでEntity/DB間をマッピングする仕組み

# まえがき
Entityクラスに@Table,@EntityをつけてORMをなんとなくで実現していたが、その仕組みをちゃんと知ろうという記事。

https://www.baeldung.com/hibernate-naming-strategy

# 2つのNaming Strategy
・Entityクラス と DB 間で「テーブル名」「カラム名」のマッピングを行う際にNaming Strategyを利用する。
・Naming Strategyは「Explicit Strategy」と「Imlicit Strategy」の2つ存在する。
・マッピング処理は次のフローで行われる。

 ① LogicalNameの決定【Implicit Strategy】
 ② PhysicalNameの決定【Explicit Strategy】

  LogicalName:Javaで扱うテーブル名,プロパティ名
  PhysicalName:DBとマッピングさせるテーブル名,プロパティ名

# ① LogicalNameの決定【Implicit Strategy】
・デフォルトのImplicit

元記事を表示

【Java】JPA備忘録(Entity・ID自動採番・Repository・Specification・@Transational)

# まえがき
SpringBootでWEBアプリケーションを作るとき、よくSpring Data JPAを利用する。
Entityクラス関連のアノテーションや、トランザクションの動きについて時間が経つと忘れるので、備忘として残す。

# Entityクラス
“`java
@Entity
@Table(name = “sample_user”)
// @CreatedDate @LastModifiedDate を活性化するために必要
@EntityListeners(AuditingEntityListener.class)
public class SampleUserEntity implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer userId;
private String name;
private Integer age;
private String gender;
pri

元記事を表示

auカブコム証券のkabuステーションREST APIで自前のトレイル注文を作ってみる(注文発注編)

# はじめに

前記事
1. [auカブコム証券のkabuステーションREST APIをcurlで叩く](https://qiita.com/hiuchida/items/fcdd3d6ff921b386a37e)
2. [auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く](https://qiita.com/hiuchida/items/73b7fc846d4c9501ef2f)
3. [auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く](https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df)
4. [auカブコム証券のkabuステーションREST APIの残高照会から先物OPのdeltaを計算する](https://qiita.com/hiuchida/items/6e0d8d5114192bec1632)
5. [auカブコム証券のkabuステーションREST APIのテスト用モック

元記事を表示

VSCodeのJavaのOrganize Importsで削除済みファイルが候補に残り続ける場合の対処法

名前変更等で削除されたファイルがキャッシュに残り続け、Organize Imports時に候補になってしまう現象への対処方法です。

コマンドパレット(F1キー等で起動)で以下のコマンドを実行します。
“`
Java: Clean Java Language Server Workspace
“`
一応スクショも。
![スクショ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139956/38c20fc8-4a1d-94c1-9d38-368f3843f8e2.png)
VSCodeのキャッシュのクリア等で検索すると `Clear Editor History` コマンドが出て来ますが、この現象に対してそちらは効果がありません。
同じような原因でビルドエラーになった際、たまたま今回のコマンドに気づいたのでメモとして残しておきます(通常はすぐビルドするから今回のような現象でハマらないのかも知れない…)。

元記事を表示

Spring O/R Mapperの使い分け

# O/R Mapperとは何か
O/R Mapperはオブジェクト指向言語で書かれたアプリケーションと非オブジェクト指向であるデータベースやSQLの間のインピーダンスミスマッチを解消させるためのフレームワークである。今回はメジャーなO/RMapperである以下のフレームワークについて調査する。
* JPA(Java Persistance API)
* MyBatis

# JPA(Java Persistance API)
* Domainに@Entity等のアノテーションを付与することで設定する
* CRUDに関わる基本的なメソッドがEntityManagerから提供されるため、冗長なSQLの記載が不要になる
* 独自のクエリを発行する際は、SQLライクな独自のクエリ言語であるJPQL(Java Persistance Query Language)を使用する

以下にDomainの実装例を示す。
“`java
package com.example.todo.domain.model;

import java.io.Serializable;
import java.ut

元記事を表示

Spring4ShellがGlassfishとPayaraに拡大:同じ脆弱性ですが、新しい悪用法です

本記事は2022年4月8日(米国時間)に公開した英語ブログ[Spring4Shell extends to Glassfish and Payara: same vulnerability, new exploit](https://snyk.io/blog/spring4shell-rce-vulnerability-glassfish-payara/)を日本語化した内容です。

[![logo-solid-background.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2216557/2691d8df-331d-96e6-dee7-9f990f036d53.png)](https://snyk.io/jp)

先週、[Spring4Shell](https://security.snyk.io/vuln/SNYK-JAVA-ORGSPRINGFRAMEWORK-2436751)の発見について発表しました。`spring-beans`パッケージの古いバージョンにリモートコード実行(RCE)の脆弱性

元記事を表示

【Java】RestTemplate・WebClient・MockMvc 比較メモ

# まえがき
APIからAPIをコールする場合や、テストプログラム内からAPIをコールしたい場合に「何使えばいいの?」というところで以下の3つが挙げられる。

・[RestTemplate](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html)(org.springframework.web.client.RestTemplate)
・[WebClient](https://spring.pleiades.io/spring-framework/docs/current/javadoc-api/org/springframework/web/reactive/function/client/WebClient.html)(org.springframework.web.**reactive**.function.client.WebClient)
・[MockMvc](https://docs.spring.io

元記事を表示

ElasticBeansTalk + Spring boot でEverything(It’s you)してみた

# Elastic Beanstalkって?

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/68155040-90dd-a0de-a1bd-f377e7d5c895.png)

> AWS Elastic Beanstalk は、Java、.NET、PHP、Node.js、Python、Ruby、Go および Docker を使用して開発されたウェブアプリケーションやサービスを、Apache、Nginx、Passenger、IIS など使い慣れたサーバーでデプロイおよびスケーリングするための、使いやすいサービスです。

というのは漠然とわかっていたのですが、触ったことがなかったので、とりあえずElastic Beanstalk x Spring bootで何かやってみたかったから、ちょっと触ってみた程度です。

例によってEverything(It’s you)です。get叩いて1フレーズ返すだけですが・・

# アプリケーション作成

![image.png](htt

元記事を表示

Paraya Server と IntelliJ IDEAで Webアプリケーションの開発環境を構築する

# Payara Serverをインストールする
Payara Serverを[ダウンロード](https://www.payara.fish/downloads/payara-platform-community-edition/, “ダウンロード”)します。

ダウンロードしたファイルを解凍します。
“`
unzip payara-5.2022.1.zip
“`

解凍したフォルダを任意のフォルダに移動します。
“`
mv ~/Downloads/payara5 ~/tools/
“`

# Payara Platform Toolsをインストールする
IntelliJ IDEAを起動します。

プラグインをクリックします。
![スクリーンショット 2022-04-09 5.56.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14202/8948d714-dff6-485d-eec7-bfaad1f9247c.png)

検索バーに、「Payara」と入力します。
「Payara Pl

元記事を表示

ThymeleafでHTMLのレイアウトを共有する方法(thymeleaf-layout-dialect)

Spring Bootを学習中、thymeleafでHTMLファイルで共通するレイアウト部分を共有する方法を学んだので、アウトプットも兼ねて投稿します!

## thymeleaf-layout-dialectとは?

thymeleafのライブラリの一つで、レイアウトを共通化させたい時にとても便利です。
イメージとしては大枠となるレイアウトをベースとして固定し、後から必要な要素だけ足して反映させていくような形です。

手順は下記の通りで行います。

## 手順

#### ①「thymeleaf-layout-dialect」ライブラリを取得

#### ②実際にHTMLファイルに記載🔥🔥

## 「thymeleaf-layout-dialect」ライブラリを取得

Spring bootのプロジェクトを作成後、pom.xmlに下記を追記し、
thymeleaf-layout-dialectライブラリを追加します。

![スクリーンショット 2022-04-09 0.49.30.png](https://qiita-image-store.s3.ap-northeast-1.am

元記事を表示

どのディレクトリに居ても正しい gradle wrapper を起動する

めんどくさがって path にある適当に新しい gradle を使うとビルドできないレガシープロジェクトとか生まれがち。

これでいける。

“`
gradle () {
GITDIR=`git rev-parse –show-cdup 2> /dev/null`
if [ -e “$GITDIR./gradlew” ]
then
echo Using $GITDIR./gradlew
$GITDIR./gradlew “$@”
else
echo Using $(/usr/bin/which gradle)
$(/usr/bin/which gradle) “$@”
fi
}
“`

元記事を表示

Jacksonで複数の型を取りうるJSONの値を特定クラスにマッピングする

## JSONは型が自由
JSONはJavaScriptのオブジェクトっぽい、キーバリューでのデータの表現方法なわけですが、その型には、オブジェクト、配列、文字列、数値、true、false、nullが存在してます。オブジェクトの構造は自由、配列内の型も固定されているわけではないので、以下のようなデータも存在します(良し悪しはおいておいて)。

“`json
{
“hoge” : [“string”, [“array1”, “array2”], {“name” : “三雲修”, “code” : “B-2-1”}]
}
“`

これを[Jackson](https://github.com/FasterXML/jackson “github”)というありがたーーーーいライブラリを使用し、いずれにしてもあるクラスにマッピングさせようとした際の備忘録です。

## 思いつく限りでの解決策

扱う以前にそもそもこの形式のデータに相対したときにいくつかのアプローチが考えられる~~かと思い~~ます。

### (1) 全部オブジェクトにしちゃう

“`json
{
“hoge” :

元記事を表示

Visual Studio CodeでJavaの実行環境の追加とデフォルトの設定

Visual StudioでJavaの開発環境を作成する際に、Javaの実行環境を追加したり、どれをデフォルトとして使うのかを設定する方法を確認しました。

settings.jsonに`java.configuration.runtimes`に配列で複数のJavaの実行環境を`name`、`path`を指定して設定できます。
更にデフォルトで使うものは`”default”: true`を指定することが可能です。

“`
“java.configuration.runtimes”: [
{
“name”: “JavaSE-1.8”,
“path”: “/Library/Java/JavaVirtualMachines/amazon-corretto-8.jdk/Contents/Home”,
“default”: true
}
],
“`

## 思ったこと。
ある時、ビルドはできるけど、Visual Studio Code上でのユニットテストがエラーを吐くようになった。

元記事を表示

多言語対応のAtCoderテストツールをJavaで作成した話

初めまして、初投稿になります。記事というものを始めて執筆するため読みづらい部分がありますが、ご了承ください。
私は最近趣味で競技プログラミングを触っていて主にAtCoderと呼ばれるサイトでプログラミングをしています。
AtCoderでは大量の過去のコンテスト問題を触って勉強することができますが、いちいち入力例・解答例をコピーペーストでターミナルに張る作業がめんどくさいと感じてきてしまいました。
そこで過去問をターゲットとして自動で入力例・回答例から正解・不正解を出力してくれるテスト自動化ツールをJavaを使って作成しました。

## はじめに
この記事では以下の記事を参考に作成をしています。
実際に以下記事では私のツールでは賄えない部分まで賄えているため一度ご確認お願い致します。
– https://github.com/kyuridenamida/atcoder-tools
– https://github.com/nodchip/OnlineJudgeHelper
– https://qiita.com/EngTks/items/a542c8f

元記事を表示

Java 17 (OpenJDK: Eclipse Temurin) を Homebrew で macOS にインストールする

## 概要

– Java 17 (Eclipse Temurin 17) を Homebrew で macOS にインストールする。

## 今回の環境

– macOS Big Sur 11.6

## インストール

インストール方法は Eclipse Temurin の前身である AdoptOpenJDK の公式資料が参考になる。

[GitHub \- AdoptOpenJDK/homebrew\-openjdk: AdoptOpenJDK HomeBrew Tap](https://github.com/AdoptOpenJDK/homebrew-openjdk)

“`
$ brew tap homebrew/cask-versions
$ brew install –cask temurin17
“`

## java_home コマンドでインストールされたディレクトリの場所を確認

“`
$ /usr/libexec/java_home -v 17
/Library/Java/JavaVirtualMachines/temurin-17.jdk/Content

元記事を表示

「マイクロサービスパターン」の復習 2章 サービス分割

## 概要

Java読書会でせっかく勉強したのにつぎつぎと忘れていくので、印象に残ったところを記録していく

http://www.javareading.com/bof/

## 2章 サービスへの分割

– アーキテクチャとはなにか?
– どうやってサービスに分割するか?

## アーキテクチャとは?

– アーキテクチャとは、ソフトウェア要素とその関係性
– 4 + 1ビューモデル
– 論理ビュー:クラス構成、パッケージ構成とそれらの依存関係
– 実装ビュー:jarやwarの配置と、それらの依存関係
– プロセスビュー:プロセスとプロセス間通信
– デプロイビュー:マシンとネットワーク
– アーキテクチャが重要なのは、品質属性に関わるから
– 特にマイクロサービスはメンテナンス性やデプロイ容易性に影響する
– アーキテクチャスタイル
– 建築様式
– 寺院を建てるのにもXXX様式が複数ある
– 論理ビューについてのアーキテクチャスタイル
– 階層アーキテクチャ
– お馴染みの3層アーキテクチャなど

元記事を表示

Eclipseの設定のメモ

# Eclipseの設定
### インストール済みのJRE
[ウインドウ] → [設定] → [Java] → [インストール済みのJRE]
JREではなくJDKを指定する

### メモリの状況の表示
[ウインドウ] → [設定] → [一般] → [ヒープ・ステイタスを表示]にチェック
私の環境(Pleiades2019)ではデフォルトでチェックがついていました。

画面の右下のメモリの表示にマウスカーソルを近づけると
起動時のメモリ量(Xms)と最大のメモリ量(Xmx)を確認できる。

元記事を表示

pypyはC言語並に早かった(素数編) cython-annotationの例有

Pythonが大好きなのですが、処理が遅くて頭を悩ませています。

どうにか早くならないかとpypyとcython(pure python mode)でやってみました。

…すみません、ソースコードはこちらの方のを使わせていただきました。
https://qiita.com/L_A_P_119611/items/40f6c71c136fbe3cf32a

## 環境
MacOS: catalina
CPU: i9
– それぞれ3回計測した結果を載せています。

## pythonの結果
python3.9での実行結果は下記通りでした。
(arrangeをnumpyのに変えたら早くなるのだろうか…)
python3 src_sosu1.py 123456789
123456789 = 3 * 3 * 3607 * 3803
所要時間は39.019531秒です
所要時間は34.007243秒です
所要時間は35.707815秒です

## javaの結果
java Factrization 123456789
123456789 = 3803 * 3607 * 3 * 3
所要

元記事を表示

Windows11のVSCodeでJAVAの環境構築してみた!

今日からJAVAの勉強を新しく初めていこうとおもったので、環境構築から備忘録程度に書いていこうと思います。
PC:Windows11
エディタ:VSCode
参考にさせていただいたサイト:
https://teramaguro.hatenablog.com/entry/2021/12/28/042743

①まず下記URLからJAVAの開発に必要なインストーラをインストールする。
↪その際に自分の開発環境に合うものを適宜選ぶ(今回はWindows11なのでWindowsを選択)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2619929/c58589dd-74a2-49cb-4195-dd33ff970fa2.png)
②今回は下記インストーラをインストールしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2619929/4e45b8e5-45f0-f5f1-3160-9773c

元記事を表示

OTHERカテゴリの最新記事