inflearn logo
知識共有
inflearn logo

本当!コトリンとスプリングブートで図書館アプリケーションを開発する(Javaプロジェクトリファクタリング)

Java + Spring Bootで作成されたWebアプリケーションをKotlin + Spring Bootにリファクタリングし、追加の要件を実装します。この過程で Junit5、SQL、JPA、Querydsl を使用するだけでなく、設計と実装の観点からさまざまな方法の長所と短所を扱うことになります。

難易度 初級

受講期間 無制限

Kotlin
Kotlin
Spring Boot
Spring Boot
Java
Java
Refactoring
Refactoring
Spring
Spring
Kotlin
Kotlin
Spring Boot
Spring Boot
Java
Java
Refactoring
Refactoring
Spring
Spring

お知らせ

1 件

  • lannstark님의 프로필 이미지

    こんにちは! KotlinとJPAを併用する際には、さらに考慮する内容がありました。

    その内容は、まさにbuild.gradleに以下のようなスクリプトを追加しなければならないという点です!

     

    plugins { id "org.jetbrains.kotlin.plugin.allopen" version "1.6.21" } // plugins, dependencies와 같은 Level (즉 build.gradle 최상단) allOpen { annotation("javax.persistence.Entity") annotation("javax.persistence.MappedSuperclass") annotation("javax.persistence.Embeddable") }

     

    その理由は次のとおりです!

    ご存知のように、Kotlinは基本的にClassもfinal、関数もfinalです!

    しかし、JPAを使用するときにProxy Lazy Fetchingを完全に利用するには(27講義でLazy Fetchingについての話があります!)クラスが継承可能でなければなりません!私が確認したところ、@OneToManyではLazy Fetchingが動作しますが、@ManyToOneに対してはLazy Fetchingオプションを明示的に与えても動作しませんでした。

     

    そのため、all-open機能を使用すると、@EntityクラスはDecompileを行ったときもclassが開いているように処理しなければならず、上記のスクリプトがそのような役割を果たすようになります。

    この講義で@ManyToOne Lazy Fetchingを使用していないので、対応するプラグインは講義で言及されていませんでした。 同じです

     

     

    (同じ内容の文章は<14強。KotlinとJPAを一緒に使う時の話の3通り>にもアップロードされました!)

     

    0

¥9,723