質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.42%
Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

0回答

1386閲覧

Spring bootでoracleに接続したい!

JackOguro

総合スコア4

Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Gradle

Gradleは、ビルド自動化ツールです。 ソフトウェアパッケージやドキュメント、 または実際に何か他の種類のプロジェクトの構築、テスト、公開、展開などを自動化が出来ます

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2022/10/15 03:19

編集2022/10/19 11:46

前提

OracleDBを接続したいのですが、環境設定がうまくいきません

前提条件
OS:Windows
DB:Oracle Database 21c Express Oracle
開発環境:Eclipse 2022 Full Edition Java
Oracle JDBC driver:ojdbc11.jar
どれも最新版を使用しています。

image.png
タイプはGradleです。

image.png
どれが必要か曖昧なため、DB関係ありそうな
・Spring Data JPA
・Spring Data JDBC
を追加しました。

実現したいこと

Springを用いてOracleDBからデータを取得し、コンソール画面上に表示したいです。

  • application.propertiesの設定
  • build.gradleの設定
  • エンティティ(Sample.java)の設定
  • レポジトリ(SampleCrudRepository.java)の設定

発生している問題・エラーメッセージ

Exception in thread "restartedMain" java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) Caused by: org.springframework.data.relational.core.conversion.DbActionExecutionException: Failed to execute DbAction.UpdateRoot(entity=Sample(id=4, name=Kato, gender=0, age=23)) at org.springframework.data.jdbc.core.AggregateChangeExecutor.execute(AggregateChangeExecutor.java:95) at org.springframework.data.jdbc.core.AggregateChangeExecutor.lambda$execute$0(AggregateChangeExecutor.java:52) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at org.springframework.data.relational.core.conversion.DefaultAggregateChange.forEachAction(DefaultAggregateChange.java:127) at org.springframework.data.jdbc.core.AggregateChangeExecutor.execute(AggregateChangeExecutor.java:52) at org.springframework.data.jdbc.core.JdbcAggregateTemplate.store(JdbcAggregateTemplate.java:360) at org.springframework.data.jdbc.core.JdbcAggregateTemplate.save(JdbcAggregateTemplate.java:161) at org.springframework.data.jdbc.repository.support.SimpleJdbcRepository.save(SimpleJdbcRepository.java:75) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.springframework.data.repository.core.support.RepositoryMethodInvoker$RepositoryFragmentMethodInvoker.lambda$new$0(RepositoryMethodInvoker.java:289) at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) at org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:530) at org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:286) at org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:640) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:164) at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:139) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) at com.sun.proxy.$Proxy81.save(Unknown Source) at com.example.demo.MySpringDataJdbcSampleApplication.executeInsert(MySpringDataJdbcSampleApplication.java:29) at com.example.demo.MySpringDataJdbcSampleApplication.execute(MySpringDataJdbcSampleApplication.java:22) at com.example.demo.MySpringDataJdbcSampleApplication.main(MySpringDataJdbcSampleApplication.java:15) ... 5 more Caused by: org.springframework.dao.IncorrectUpdateSemanticsDataAccessException: Failed to update entity [Sample(id=4, name=Kato, gender=0, age=23)]. Id [4] not found in database. at org.springframework.data.jdbc.core.JdbcAggregateChangeExecutionContext.updateWithoutVersion(JdbcAggregateChangeExecutionContext.java:316) at org.springframework.data.jdbc.core.JdbcAggregateChangeExecutionContext.executeUpdateRoot(JdbcAggregateChangeExecutionContext.java:109) at org.springframework.data.jdbc.core.AggregateChangeExecutor.execute(AggregateChangeExecutor.java:72) ... 39 more

該当のソースコード

application.properties

1spring.datasource.url=jdbc:oracle:thin:@localhost:1521:XE 2spring.datasource.username=system 3spring.datasource.password=5931 4spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver

build.gradle

1dependencies { 2 implementation 'org.springframework.boot:spring-boot-starter-data-jdbc' 3 implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' 4 implementation 'org.springframework.boot:spring-boot-starter-web' 5 compileOnly 'org.projectlombok:lombok' 6 developmentOnly 'org.springframework.boot:spring-boot-devtools' 7 runtimeOnly 'com.oracle.database.jdbc:ojdbc8' 8 annotationProcessor 'org.projectlombok:lombok' 9 testImplementation 'org.springframework.boot:spring-boot-starter-test' 10  implementation 'org.springframework.boot:spring-boot-starter-data-jpa' 11 implementation files('lib/ojdbc11.jar')

Sample.java

1package com.example.demo.entity; 2 3import org.springframework.data.annotation.Id; 4 5import lombok.AllArgsConstructor; 6import lombok.Data; 7import lombok.NoArgsConstructor; 8 9@Data 10@NoArgsConstructor 11@AllArgsConstructor 12public class Sample { 13 @Id 14 private Integer id; 15 private String name; 16 private Integer gender; 17 private Integer age; 18}

SampleCrudRepository.java

1package com.example.demo.reporitory; 2 3import org.springframework.data.repository.CrudRepository; 4 5import com.example.demo.entity.Sample; 6 7public interface SampleCrudRepository extends CrudRepository<Sample, Integer> { 8 9}

MySpringDataJdbcSampleApplication.java

1package com.example.demo; 2 3import org.springframework.beans.factory.annotation.Autowired; 4import org.springframework.boot.SpringApplication; 5import org.springframework.boot.autoconfigure.SpringBootApplication; 6 7import com.example.demo.entity.Sample; 8import com.example.demo.reporitory.SampleCrudRepository; 9 10@SpringBootApplication 11public class MySpringDataJdbcSampleApplication { 12 13 public static void main(String[] args) { 14 SpringApplication.run(MySpringDataJdbcSampleApplication.class, args) 15 .getBean(MySpringDataJdbcSampleApplication.class).execute(); 16 } 17 18 @Autowired 19 SampleCrudRepository repository; 20 21 private void execute() { 22 executeInsert(); 23 executeSelect(); 24 } 25 26 private void executeInsert() { 27 Sample sample = new Sample(4, "Kato", 0, 23); 28 sample = repository.save(sample); 29 System.out.println(sample); 30 } 31 32 private void executeSelect() { 33 Iterable<Sample> samples = repository.findAll(); 34 for (Sample sample : samples) { 35 System.out.println(sample); 36 } 37 } 38 39}

試したこと

image.png
今回作成したプロジェクトのパッケージエクスプローラー

こちらのサイトを参考に自分でプロジェクトを作成しました。本来であればlibフォルダは存在しませんでしたが、自分で追加しました。

警告には”oracle.jdbc.driver.OracleDriver was not found, trying direct instantiation.”と表示されているので、application.propertiesやbulid.gradleのどこかが間違えていると思うのですがわかりません。

image.png
他にもプロジェクトを右クリックし、プロパティ>Javaのビルドパス>ライブラリー>クラスパス>外部JARの追加でojdbc11.jarを追加しようとしましたがうまくいきませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.42%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問