親バカエンジニアのナレッジ帳

webのエンジニアをやっており、日頃の開発で詰まったことや書き残しておきたいことを載せています。

Java

Spring BootでSQLクエリを直接実行させる方法

Spring Data JPAについて SQLを記載したいとき 方法1: EntityManagerを使用 方法2: Repositoryで@Queryアノテーションを使用したメソッドを実装 Spring Data JPAについて みなさんSpring Bootを使用する場合、Spring Data JPAを使用してSQLを記載せずにDBを…

Spring Bootで環境変数等の定義ファイルの値を取得する方法

Spring Bootの定義ファイル Javaのソースで値を取得する方法 どんな時に使用する? Spring Bootの定義ファイル Spring Bootでは、プロパティ値を設定する定義ファイルとして、application.ymlやapplication.propertiesがありますね。 設定する内容としては、…

MacでSQL Developerが重い・起動できなくなる・DBに接続できなくなる場合の対処法

SQL Developerが不安定になる場合 Oracle SQLに接続するためのSQL Developerの動作が不安定の時の対処方についてです。 SQL Developerはクライアントツールとして非常に有用ですよね。 特にMacからOracleに接続できるものは少ないため、Macユーザには重宝さ…

Javaのファイル読み込みメソッドを整理

ファイルを読み込む処理 FileInputStreamでファイルの内容を読み込み InputStreamReaderで指定した文字コードに FileReaderを使えばInputStreamReader要らず 旧来のファイルの読み込み方比較 方法1 方法2 BufferedReaderを使えば一行単位で呼び出し可能に Ja…

Spring Bootの起動が遅いので試行錯誤した話

コンパイル言語の宿命 Initialized JPA EntityManagerFactory for persistence unit ‘default’ 他の試行錯誤 コンパイル言語の宿命 Spring Bootに限らずJava等コンパイル言語の宿命ですが、ちょっとした変更でもいちいちコンパイルが必要になりますよね。 そ…

Spring Boot のCORS対策

CORSとは? CORSの対策 Spring Bootでの対策 方法1 @CrossOriginアノテーション 方法2 Spring SecurityでCORSの設定をする方法 まずはSpring Securityのインストール WebSecurityConfigurerAdapterにCORSの設定 CORSとは? 通常Webページでは、同一生成元ポ…

SpringBootのFormバリデーションで、Listを使って別々の項目に同じチェック

SpringBootのFormで使われるList SpringBootのFormで使われるList SpringBootのFormバリデーションで独自バリデーションを作成し、 適用している人にとってはよく見かけるListですが、これの使い道は知ってますか?例) public @interface List { TestValida…

Entityの@ManyToOneでCascadeオプションの使い道

Entityの@ManyToOne まずはEntityについて Cascadeはデータベース操作に関連 Entityの@ManyToOne あるEntity(エンティティ)に対してフィールドを設定した時に、 Entityとフィールドが多対一の関係にある時に使用します。 このあたりの説明は長くなるので、…

AWSでのメール送信でタイムアウトが頻繁に発生

SpringBoot + EC2の構成で、メール送信エラーが頻発 さくらサーバのサポートセンターに問い合わせ 本当の原因はEC2の送信制限 ちなみに… SpringBoot + EC2の構成で、メール送信エラーが頻発 SpringBoot + EC2のアプリケーションでメルマガ機能を作成していま…

@Columnのlengthやnullableでエラー検知してくれない

Spring Bootのバリデーション Bean ValidationとJPA定義 Spring Data JPA (Hibernate)使用時のJPA制約 暫定対応 Spring Bootのバリデーション Spring Bootでは、フォームやエンティティクラスにおいて、アノテーションによる入力値チェックが可能なことはご…

Spring BootをIDEを使わずコマンドで実行

開発環境でのSpring Bootの実行 mvnコマンドで実行 開発環境でのSpring Bootの実行 でも記載している通り、Spring Bootは開発環境だとIDEなどで簡単に設定することが可能です。 ちょっとの設定でいつでも停止や実行ができるので楽ですよね。 ブレークポイン…

Tomcatのログファイルを整理せよ!

Tomcatのデフォルトのログ設定 Tomcatで出力されるログファイル catalina.outのローテート設定 ログファイルのローテート設定 logrotateの設定確認 logrotateの実行 localhost.YYYY-MM-DD.logのローテート設定 まとめ Tomcatのデフォルトのログ設定 タイトル…

Spring Data JPAでパラメータ以外でコロンを使いたい

RepositoryにSQLを直接記入 パラメータ以外でコロンを使いたい 解決方法はエスケープ RepositoryにSQLを直接記入 Spring Data JPAでORマッパーでは書けないようなSQLを実行したい場合、Repositoryに直接構文を書きますよね。 そんな時、パラメータで変数の値…

Spring Data JPA のfind+OrderByで、No property desc foundエラー時の対処法

Spring Data JPAでのOrderBy whereを指定しない場合、OrderByの前にByが必要 Spring Data JPAでのOrderBy Spring Data JPAでエンティティクラスにfindして複数のレコードを取得する場合、OrderByをつければ並び順を変更できることはご存知でしょうか? findB…

Spring Bootで実行SQLのログを取得する方法

アプリケーション開発でのSQLログ application.ymlでの設定 アプリケーション開発でのSQLログ アプリケーションの開発をしている時、実行されたSQLのログを参照したい場面がありますよね。 想定外のSQLが実行されていないか確認したり、ボトルネックとなって…

Spring BootでEntityオブジェクトのクローンをしてみる

Entityオブジェクトのクローン クローンをしたいEntityクラスにCloneableインターフェースを実装 クローンメソッドの呼び出し Entityオブジェクトのクローン SpringBootで機能の実装をしている中で、Entityオブジェクトのクローンを作りたくなることはありま…

SpringBootでローカルjarファイルをMavenで管理

ローカルjarファイルはどんな時に使う? 設定方法 ローカルjarファイルはどんな時に使う? 普段SpringBootで外部ライブラリを使う時、Mavenの設定ファイルであるpom.xmlを使う人が多いのではないでしょうか。Mavenのリポジトリにあり、誰でもインストールし…

Spring Boot + MySQLで絵文字を保存する

絵文字を保存したい MySQLの文字コードを変更 Spring Bootでデータベース接続時の文字コードを変更 まとめ 絵文字を保存したい スマホが普及してから絵文字を文中に入れるのはもはや普通のことですよね。 掲示板などでも絵文字を入力できるものは増えていま…

Spring BootのFormクラスでIntegerの項目にNULLはPOSTできない

NULLをPOSTした時点でStringとして認識されてしまう 数値(Integer)型の項目で空の可能性がある場合 AjaxでPOSTする時の例 NULLをPOSTした時点でStringとして認識されてしまう Spring Bootにおけるフォームから値をPOSTする際の挙動になりますが、Integer型の…

NginxとTomcatでリバースプロキシ連携

なぜNginxとTomcatを連携? ポートの開放 サーバ設定 MySQLのインストール Nginxのインストールと起動 Nginxのインストール confファイルを書き換えてリバースプロキシ設定 Nginxの起動・自動起動設定 JavaとTomcatのインストールと起動 JavaとTomcatのイン…

TomcatのインストールとCATALINA_OPTSの設定

Tomcatのインストールの仕方でCATALINA_OPTSの設定方法も異なる CATALINA_OPTSを設定する場面 Tomcatのインストール方法 wgetコマンドなどでソースコードをダウンロードしてからコンパイルする方法 yumでインストールする方法 Tomcatのインストールの仕方でC…

ApacheとTomcatの連携でリダイレクトが上手くいかない

Javaで組まれたWebサイトをApacheとTomcatを連携させて動かしているのですが、 先日サイト改修により一部ページのURLも変更させた時のリダイレクト設定について苦労したのでそれについて書きます。 やりたいことは、「http://ドメイン/test/sample.html」と…

Spring Boot Devtoolsを使って自動再起動

Javaなどソースの変更をいちいちコンパイルをして確認する場合、 毎回コンパイルを手動でするのは面倒ですよね。 (慣れている人は何も感じないかもしれませんがw)Spring Bootでは自動でコンパイルをしてくれるツールがあるので、 少しは開発効率を上げるこ…

Spring Boot のJavaバージョンを変更

Intellijなど、IDEで開発する場合はJDKをインストールして使うので問題ないと思いますが、 本番環境にアップした場合などにJavaのバージョンを指定しておかないと開発環境で開発した通りに動作してくれないなどの問題が発生してしまいます。変更箇所はpom.xm…

Spring Bootの起動時にJDKのエラー(警告)が発生

Javaの一部JDKのバージョンでは、 Spring Bootの起動時に以下のエラー(警告)が発生することがあります。 /Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk/Contents/Home/bin/java ... objc[3929]: Class JavaLaunchHelper is implemented in both /Libr…

@PathVariableを必須にしない

Spring BootのGETリクエストでパラメータを設定した時、 パラメータを取得するには@PathVariableを使います。例えば以下のような@RequestMappingがあった場合、idは必須になります。 @RequestMapping(value="top/{id}", method = RequestMethod.GET) String …

Spring BootでBean Validation (3) バリデーション処理を自作

ti-tomo-knowledge.hatenablog.com ti-tomo-knowledge.hatenablog.com上記2つのような流れで、BeanValidationにおける基本的なバリデーションの流れを見ていきましたが、 これらはあくまでBeanValidationやHibernateで事前に用意されたものです。 実際にサー…

Spring BootでBean Validation (2) エラーメッセージの多言語化

まずはti-tomo-knowledge.hatenablog.comを参考にしてmessage.propertiesを使って多言語化する流れを見てほしいです。 これを使えばバリデーション時のエラーメッセージの対応もすぐできます。Bean Validation のアノテーションは、通常messageというパラメ…

Spring Boot Thymeleafで多言語化

多言語対応でサイトを作ることが多い現代だからなのか、 最近のフレームワークは多言語対応がとても簡単です。ここではThymeleafに表示される文字を多言語対応する方法を共有します。 基本的にはmessages_ja.propertiesや、messages_en.propertiesというよう…

Spring BootでBean Validation (1) @GroupSequenceで順番にチェック

Spring Bootでは(Spring Boot以外にもBean Validation使ってるやつ全部ですが)、Serializableクラスに対して 「org.hibernate.validator.constraints」や「javax.validation.constraints」を使って、 @NotEmptyや@Sizeといったようにアノテーションを使うだ…