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

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

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Apache Tomcat

Apache TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

解決済

1回答

685閲覧

Javaでデータベースに接続したいです

syoshinsya-

総合スコア21

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Apache Tomcat

Apache TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

1クリップ

投稿2022/08/09 07:42

目的

Javaからデータベースにアクセスして、SELECTやINSERTを行う練習

実際にやること

JavaEEを使ってデータベースにアクセス後、取得したデータをブラウザ上に表示したり、データベースに書き込んだり

環境やアプローチ

Windows10上にTomcatとMySQLをダウンロードしてきました。
MySQLについてはインストール後、デモデータ(world database)をインサートしています。
IntellJ Ultimateを使用

わからないこと

・データソースの設定方法
Javaプロジェクト上でweb.xmlとかcontext.xmlとか...persistence.xmlとかとか、ネットで調べるといろんな方法や記述方法が出てきて結局どれをどうやって設定すればいいかわかりません。
Java上の設定だけじゃダメなんでしょうか...

データベースに接続できているかの確認

以下のぺージが正常に動作すれば接続ができたと判断しようと思っています。

java

1package com.example.jpa_demo; 2 3import java.io.*; 4import java.sql.Connection; 5import java.sql.SQLException; 6import javax.naming.Context; 7import javax.naming.InitialContext; 8import javax.naming.NamingException; 9import javax.servlet.http.*; 10import javax.servlet.annotation.*; 11import javax.sql.DataSource; 12 13@WebServlet(name = "helloServlet", value = "/hello-servlet") 14public class HelloServlet extends HttpServlet { 15 private String message; 16 17 public void init() { 18 message = "Hello World!"; 19 } 20 21 public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { 22 try { 23 Context context = (Context) new InitialContext().lookup("java:/comp/env"); 24 DataSource ds = (DataSource)context.lookup("jdbc/world"); 25 Connection con = ds.getConnection(); 26 27 } catch (NamingException | SQLException e) { 28 throw new RuntimeException(e); 29 } 30 31 response.setContentType("text/html"); 32 33 // Hello 34 PrintWriter out = response.getWriter(); 35 out.println("<html><body>"); 36 out.println("<h1>" + message + "</h1>"); 37 out.println("</body></html>"); 38 } 39 40 public void destroy() { 41 } 42}

その他ソースコード

web.xml

xml

1<?xml version="1.0" encoding="UTF-8"?> 2<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" 5 version="4.0"> 6 <resource-ref> 7 <res-ref-name>jdbc/world</res-ref-name> 8 <res-type>javax.sql.DataSource</res-type> 9 <res-auth>Container</res-auth> 10 </resource-ref> 11</web-app>

comtext.xml

xml

1<?xml version="1.0" encoding="UTF-8" ?> 2<Context> 3 <Resource 4 name="jdbc/world" 5 auth="Container" 6 type="javax.sql.DataSource" 7 maxTotal="100" 8 maxIdle="30" 9 maxWaitMillis="10000" 10 username="root" 11 password="password" 12 driverClassName="com.mysql.cj.jdbc.Driver" 13 url="jdbc:mysql://localhost:3306/world" /> 14</Context>

persistence.xml

xml

1<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 2<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd" 5 version="2.2"> 6 <persistence-unit name="default"> 7 <jta-data-source>jdbc/world</jta-data-source> 8 </persistence-unit> 9</persistence> 10

pom.xml

xml

1<?xml version="1.0" encoding="UTF-8"?> 2<project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 7 <groupId>com.example</groupId> 8 <artifactId>jpa_demo</artifactId> 9 <version>1.0-SNAPSHOT</version> 10 <name>jpa_demo</name> 11 <packaging>war</packaging> 12 13 <properties> 14 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 15 <maven.compiler.target>1.8</maven.compiler.target> 16 <maven.compiler.source>1.8</maven.compiler.source> 17 <junit.version>5.8.2</junit.version> 18 </properties> 19 20 <dependencies> 21 <dependency> 22 <groupId>javax.persistence</groupId> 23 <artifactId>javax.persistence-api</artifactId> 24 <version>2.2</version> 25 <scope>provided</scope> 26 </dependency> 27 <dependency> 28 <groupId>javax.servlet</groupId> 29 <artifactId>javax.servlet-api</artifactId> 30 <version>4.0.1</version> 31 <scope>provided</scope> 32 </dependency> 33 <dependency> 34 <groupId>org.junit.jupiter</groupId> 35 <artifactId>junit-jupiter-api</artifactId> 36 <version>${junit.version}</version> 37 <scope>test</scope> 38 </dependency> 39 <dependency> 40 <groupId>org.junit.jupiter</groupId> 41 <artifactId>junit-jupiter-engine</artifactId> 42 <version>${junit.version}</version> 43 <scope>test</scope> 44 </dependency> 45 <dependency> 46 <groupId>mysql</groupId> 47 <artifactId>mysql-connector-java</artifactId> 48 <version>8.0.27</version> 49 </dependency> 50 </dependencies> 51 52 <build> 53 <plugins> 54 <plugin> 55 <groupId>org.apache.maven.plugins</groupId> 56 <artifactId>maven-war-plugin</artifactId> 57 <version>3.3.2</version> 58 </plugin> 59 </plugins> 60 </build> 61</project>

現状のエラーコード

No suitable driverって書いてあるんですがMavenにもMysql入れてるしlibのところにもあるんですけどね...よくわかりません...

Java

1HTTPステータス 500Internal Server Error 2タイプ 例外報告 3 4メッセージ java.sql.SQLException: Cannot create JDBC driver of class '' for connect URL 'null' 5 6説明 サーバーは予期しない条件に遭遇しました。それはリクエストの実行を妨げます。 7 8例外 9 10java.lang.RuntimeException: java.sql.SQLException: Cannot create JDBC driver of class '' for connect URL 'null' 11 com.example.jpa_demo.HelloServlet.doGet(HelloServlet.java:28) 12 javax.servlet.http.HttpServlet.service(HttpServlet.java:655) 13 javax.servlet.http.HttpServlet.service(HttpServlet.java:764) 14 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 15根本原因 16 17java.sql.SQLException: Cannot create JDBC driver of class '' for connect URL 'null' 18 org.apache.tomcat.dbcp.dbcp2.DriverFactory.createDriver(DriverFactory.java:74) 19 org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:475) 20 org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:541) 21 org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:747) 22 com.example.jpa_demo.HelloServlet.doGet(HelloServlet.java:25) 23 javax.servlet.http.HttpServlet.service(HttpServlet.java:655) 24 javax.servlet.http.HttpServlet.service(HttpServlet.java:764) 25 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 26根本原因 27 28java.sql.SQLException: No suitable driver 29 java.sql/java.sql.DriverManager.getDriver(DriverManager.java:298) 30 org.apache.tomcat.dbcp.dbcp2.DriverFactory.createDriver(DriverFactory.java:59) 31 org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:475) 32 org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:541) 33 org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:747) 34 com.example.jpa_demo.HelloServlet.doGet(HelloServlet.java:25) 35 javax.servlet.http.HttpServlet.service(HttpServlet.java:655) 36 javax.servlet.http.HttpServlet.service(HttpServlet.java:764) 37 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 38注意 原因のすべてのスタックトレースは、サーバのログに記録されています 39 40Apache Tomcat/8.5.81

イメージ説明

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

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

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

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

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

Matsumon0104

2022/08/09 08:10

tomcatはサーバーです。 Javaによるデータベース接続を試すだけなら不要ですが、Webアプリにする必要性はありますか?
syoshinsya-

2022/08/09 08:52

JPAを試してみたいって思って調べた結果JPAだけを使う方法がわからず、JakartaEEを使うことにしました。 JakartaEEの構成がどうなっているのかよくわからないのでサーバーなどを用意して動かすことにしました。(psvmしてもちゃんと動くんでしょうか...) なのでJPAさえ使えればtomcatは使わなくても大丈夫です
guest

回答1

0

ベストアンサー

JPAを利用したデータベース接続に関するQiitaのページです。

データベースを簡単にーJavaSEでもオブジェクト指向データベース(JPA)

投稿2022/08/09 08:56

Matsumon0104

総合スコア1005

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

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

syoshinsya-

2022/08/19 17:20

ありがとうございます! …自分で検索したときこのページでてこなかったんですよ(´・ω・`)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問