現在、Java Spring BootでCRUDベースの簡単な練習アプリを作っていて、CRUDの基本的な部分(投稿のタイトル、日付、テキストによる説明などのデータを新規投稿、編集、削除するなど)は実装できたので次は投稿フォームの中に画像のアップロード機能も入れたいと思っています。(使用OSはWindows 10)
参考にしているのは下記URLの
https://www.callicoder.com/spring-boot-file-upload-download-jpa-hibernate-mysql-database-example/
ページなのですが、ここで説明されている手順で気になる事があります。
#JPA and MySQL dependencies
の項目を見てみると、
“Since we’ll be storing files in MySQL database, we’ll need JPA and MySQL dependencies along with Web dependency. So make sure that you pom file contains the following dependencies”(MySQLデータベースでファイルを保存するので、JPAとMySQLのDependencyとWeb dependencyが必要になります。なので、Pomファイルに下記のDependencyが含まれるようにしてください)
と書かれています。
僕のプロジェクトではDependencyの管理はMavenではなくGradleで行っているのですが、例えば
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency>
などの、上記URLのチュートリアルページのMaven版Dependency説明部分をGradle版に相当する書き方で記述を僕のプロジェクトのGradleのファイルに追記しておけば、問題なく動くようになるでしょうか?
また、同じページのそのすぐ下の項目である
#Configuring the Database and Multipart File properties
には、application.properties fileにどのような記述が必要かが書かれているのですが、次のように自分のプロジェクトのConfigurationのファイルに追記したらコンフリクトを起こしてしまいました。(##で始まる## Spring DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties以降の記述がチュートリアルからコピペしたもの、それより上が元々あった記述です)
spring: datasource: url: jdbc:h2:mem:test driverClassName: org.h2.Driver username: sa password: h2.console.enabled: true ## Spring DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties) spring.datasource.url= jdbc:mysql://localhost:3306/file_demo?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false spring.datasource.username= root spring.datasource.password= callicoder ## Hibernate Properties # The SQL dialect makes Hibernate generate better SQL for the chosen database spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect spring.jpa.hibernate.ddl-auto = update ## Hibernate Logging logging.level.org.hibernate.SQL= DEBUG ## MULTIPART (MultipartProperties) # Enable multipart uploads spring.servlet.multipart.enabled=true # Threshold after which files are written to disk. spring.servlet.multipart.file-size-threshold=2KB # Max file size. spring.servlet.multipart.max-file-size=200MB # Max Request Size spring.servlet.multipart.max-request-size=215MB
今のまま進めていると、このチュートリアルのガイドに沿って自分のプロジェクトにEntityを新しく1つ追加した時に、例えば
package com.example.demo.model; import org.hibernate.annotations.GenericGenerator; import javax.persistence.*; @Entity @Table(name = "files") public class DBFile { …
の辺りで
The import org.hibernate.annotations cannot be resolved Entity cannot be resolved to a type
などのエラーがたくさん出てきてしまいます。
自分としてはDependencyやConfigurationの所で設定が上手く噛み合っていないのが原因なのかなと思っていますが、Gradleのままコンフリクトを解消して、このようなMavenベースのチュートリアルの機能の一部(今回の場合Single file upload)を自分のプロジェクトに組み込むのはできるのでしょうか?
それとも、MavenのDependencyで同じ内容のものを作り直した方がよいでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/25 15:03