[SERVLET] ๐Ÿ—ƒ๏ธ JDBC Driver๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ PostgreSQL ๊ณผ Eclipse ์—ฐ๊ฒฐ

์ž„๋‚™ํ˜„ยท2022๋…„ 9์›” 23์ผ
0

ServletBoardProject

๋ชฉ๋ก ๋ณด๊ธฐ
2/4
post-thumbnail

Eclipse ์›น ๊ฐœ๋ฐœ ๋ฒ„์ „, Tomcat, PostgreSQL ์ด ์„ค์น˜๋˜์–ด ์žˆ๊ณ 

Eclipse์™€ Tomcat์„œ๋ฒ„๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉฐ

PostgreSQL JDBC Driver๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์€ ์ƒํƒœ๋ผ ๊ฐ€์ •ํ•˜๊ณ  ํฌ์ŠคํŒ…์„ ์ง„ํ–‰ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

JDBC Driver ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๋ฒ•

https://velog.io/@dlaskrgus8/PostgreSQL-JDBC-Driver-%EC%84%A4%EC%B9%98

๊ทธ๋Ÿผ ์‹œ์ž‘ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


ย ์ง€๊ธˆ ์ œ๊ฐ€ ํ•˜๊ณ ์ž ํ•˜๋Š” ์ž‘์—…์€ pgAdmin ์ด๋‚˜ SQL ํ”„๋กฌํ”„ํŠธ์—์„œ๋งŒ ๋‹ค๋ฃจ์—ˆ๋˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ Eclipse์—์„œ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ์ž‘์—…์ž…๋‹ˆ๋‹ค.



1. ๐ŸŽ›๏ธ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

ย ์šฐ์„  DB์™€ ์—ฐ๊ฒฐ์„ ํ•ด ๋ณผ ํ…Œ์ŠคํŠธ์šฉ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.

ย Dynamic Web Project ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋‚˜์˜ค๋Š” ํ™”๋ฉด์—์„œ Project name๋งŒ ์ •ํ•ด์ฃผ๊ณ  Next ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด ์ค๋‹ˆ๋‹ค.

ย ์•„๋ž˜ ํ™”๋ฉด์€ Next ๋ฒ„ํŠผ์œผ๋กœ ๋„˜์–ด๊ฐ€ ์ค๋‹ˆ๋‹ค.

ย ๋งˆ์ง€๋ง‰์ž…๋‹ˆ๋‹ค. ์ดํด๋ฆฝ์Šค์—์„œ web.xml ํŒŒ์ผ์ด ํ”„๋กœ์ ํŠธ์— ์ž๋™ ์ƒ์„ฑ๋˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด Generate web.xml deployment descriptor ์ฒดํฌ๋ฐ•์Šค๋ฅผ ํด๋ฆญํ•œ ํ›„ Finish ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

ย ์ด๋ ‡๊ฒŒ ํ”„๋กœ์ ํŠธ๊ฐ€ web.xml ํŒŒ์ผ๊ณผ ํ•จ๊ป˜ ์ƒ์„ฑ๋˜์—ˆ๋‹ค๋ฉด ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค.



2. ๐Ÿ“ฒ JDBC Driver ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ถ”๊ฐ€ํ•˜๊ธฐ

ย ์ด ํฌ์ŠคํŠธ๋Š” JDBC ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•˜๋‹ค๋Š” ๊ฐ€์ •ํ•˜์— ์“ฐ์—ฌ์ง„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ย ๊ทธ๋ ‡๋‹ค๋ฉด ์ด ํŒŒ์ผ์ด ์—ฌ๋Ÿฌ๋ถ„์˜ ์ปดํ“จํ„ฐ์— ์žˆ์„๊ฒƒ์ž…๋‹ˆ๋‹ค.

ย ์ด ํŒŒ์ผ์„ ์•„๋ž˜ ๊ฒฝ๋กœ์— ๋ณต์‚ฌํ•ด ์ฃผ๋„๋ก ํ•ฉ์‹œ๋‹ค. ์ €์˜ ๊ฒฝ์šฐ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ๋กœ๊ฐ€ ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.

../workspace/postgreSQLconnect/src/main/webapp/WEB-INF/lib

ย ์•„๋ž˜์™€ ๊ฐ™์ด ํ”„๋กœ์ ํŠธ ์†์˜ Java Resources/Libraries/Web App Libraries ์•ˆ์— postgresql-42.5.0.jar ๊ฐ€ ๋ณด์ธ๋‹ค๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ถ”๊ฐ€๊ฐ€ ์ œ๋Œ€๋กœ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ย ์ด์ œ JDBC ๋“œ๋ผ์ด๋ฒ„์— ๋Œ€ํ•œ ์„ค์น˜๋Š” ๋๋‚œ ๊ฒƒ์ด๋ฉฐ JDBC API ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋Š” ์ผ๋งŒ ๋‚จ์•˜์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ JDBC ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ ๋‹จ๊ณ„์—์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.



3. โœ’๏ธ JDBC ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ

ย JDBC ํ”„๋กœ๊ทธ๋žจ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ค€๋น„ํ•ด์•ผ ํ•  ์ž‘์„ฑ ๋‹จ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด 4๊ฐ€์ง€ ์ •๋„๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • JDBC Driver ์ด๋ฆ„ ๋ฐ ์ ‘์†ํ•  JDBC URL ์„ค์ •
  • JDBC Driver ๋กœ๋“œ
  • JDBC URL๊ณผ ๊ณ„์ • ์ •๋ณด๋ฅผ ์ด์šฉํ•˜์—ฌ Connection ๊ฐ์ฒด๋ฅผ ์–ป์Œ
  • JDBC ๋ฅผ ์ด์šฉํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…

ย JDBC ๋“œ๋ผ์ด๋ฒ„ ์ด๋ฆ„ ์„ ์„ค์ •ํ•˜๋Š” ์ด์œ ๋Š” JDBC๊ฐ€ ์–ด๋Š DBMS์— ๋Œ€ํ•œ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. PostgreSQL๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ๋Š” ๊ทธ์— ๋งž๋Š” ๋“œ๋ผ์ด๋ฒ„ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ย ์ ‘์†ํ•  JDBC URL ์€ ์ ‘์†ํ•  DBMS์˜ ํ˜ธ์ŠคํŠธ ์ฃผ์†Œ ๋“ฑ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

ย ์ด 2๊ฐ€์ง€ ์ •๋ณด๋ฅผ ์„ค์ •ํ•˜์˜€๋‹ค๋ฉด, JDBC ๋“œ๋ผ์ด๋ฒ„ ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ  JDBC ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ย ๋กœ๋“œํ•œ ํ›„์—๋Š” JDBC URL๊ณผ ๊ณ„์ • ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  DBMS์— ์ ‘์†ํ•˜๋Š” ์ž‘์—…์„ ํ•˜์—ฌ Connection ๊ฐ์ฒด๋ฅผ ์–ป์–ด ์˜ต๋‹ˆ๋‹ค.

ย Connection ๊ฐ์ฒด๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…์„ ํ•˜๊ธฐ ์œ„ํ•ด ๊ผญ ํ•„์š”ํ•œ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ์ฒด๋ฅผ ์–ป์–ด์™”๋‹ค๋ฉด ์ด๊ฒƒ์„ ์ด์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ย ์•„์ง ๊ตฌ์ฒด์ ์œผ๋กœ ๋ณด์ง„ ์•Š์•˜์ง€๋งŒ Connection ๊ฐ์ฒด ๋‚ด์˜ Statement๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ย ์•ž์—์„œ JDBC ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์„ค์น˜ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— JDBC์™€ ์—ฐ๋™ํ•˜๋Š” ์˜ˆ์ œ๋ฅผ ๋‹ค๋ฃจ์–ด ๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.



4. ๐Ÿงต JDBC ์—ฐ๋™ ์˜ˆ์ œ ์ž‘์„ฑ

ย ํ”„๋กœ์ ํŠธ์˜ postgreSQLconnect/src/main/webapp ๊ฒฝ๋กœ์— jdbcTest.jsp ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ ์ž‘์„ฑํ•ด ์ค๋‹ˆ๋‹ค.

jdbcTest.jsp ํŒŒ์ผ

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page import="java.sql.*" %>
<%
	Connection conn=null;	//Connection ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ

	String driver="org.postgresql.Driver";
    //JDBC ๋“œ๋ผ์ด๋ฒ„ ์ด๋ฆ„์„ ์„ค์ •ํ•จ. JDBC๋“œ๋ผ์ด๋ฒ„ ์ด๋ฆ„์€ ์‚ฌ์šฉํ•˜๋Š” DBMS๋งˆ๋‹ค ๋‹ค๋ฅด๋ฉฐ,
    //์•ž์˜ ์˜ˆ์ œ๋Š” PostgreSQL์„ ๊ธฐ์ค€์œผ๋กœ ํ•œ JDBC์ž„.
    
	String url="jdbc:postgresql://localhost:5432/postgres";	
    //JDBC ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ ‘์†ํ•  URL์„ ์˜๋งˆํ•จ. ์ด ์ฝ”๋“œ๋Š” localhost ์ฃผ์†Œ์˜
    //5432 ํฌํŠธ๋กœ ์ ‘์†ํ•˜๋ฉฐ, SID๋ช…์€ postgres๋ฅผ ์‚ฌ์šฉํ•จ.
    //PostgreSQL์„ ์„ค์น˜ํ•˜๊ฒŒ ๋˜๋ฉด, ๊ธฐ๋ณธ์ ์œผ๋กœ SID๋ช…์ด postgres๋กœ ์„ค์ •๋จ.
	
	Boolean connect=false;
	
	try{
		Class.forName(driver);	//JDBC ๋“œ๋ผ์ด๋ฒ„ ์ด๋ฆ„์œผ๋กœ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋กœ๋“œํ•จ.
		conn=DriverManager.getConnection(url,"์•„์ด๋”” ์ž๋ฆฌ","๋น„๋ฐ€๋ฒˆํ˜ธ ์ž๋ฆฌ");
        //์„ค์ •ํ–ˆ๋˜ JDBC URL์„ ์ด์šฉํ•˜์—ฌ Connection ๊ฐ์ฒด๋ฅผ ์–ป์–ด์˜ด. (์ด ๋•Œ๋Š” DBMS
        //์— ์‚ฌ์šฉํ•˜๋Š” ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•Œ๊ณ ์žˆ์–ด์•ผ ํ•จ.)
		
		connect=true;
        //๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ œ๋Œ€๋กœ ์—ฐ๊ฒฐ๋˜์–ด Connection ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด connect ๋ณ€์ˆ˜
        //๊ฐ’์„ true๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ PostgreSQL์ด ์ œ๋Œ€๋กœ ์—ฐ๋™๋˜์—ˆ์Œ์„ ํ‘œ์‹œํ•จ.
		
		conn.close();	//๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์—ฐ๊ฒฐ์„ ํ•ด์ œํ•จ
	}catch(Exception e){
		connect=false;
		e.printStackTrace();
	}
    //๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์—ฐ๊ฒฐํ•  ๋•Œ Exception์ด ๋ฐœ์ƒํ•˜๋ฉด Exception ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•จ.
    //๋“œ๋ผ์ด๋ฒ„ ์ด๋ฆ„์ด ํ‹€๋ฆฌ๊ฑฐ๋‚˜ ์ฃผ์†Œ์™€ ํฌํŠธ๋ช… ๋˜๋Š” SID๋ช…์ด ์ œ๋Œ€๋กœ ์ž…๋ ฅ๋˜์ง€ ์•Š์œผ๋ฉด
    //Exception์ด ๋ฐœ์ƒํ•จ.
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>
<%if(connect==true){ %>
	์—ฐ๊ฒฐ๋จ
<%}else{ %>
	์—ฐ๊ฒฐ์•ˆ๋จ
<%} %>
</h3>
</body>
</html>

ย ์œ„์•„๋ž˜๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ์ง€๋งŒ ํ•œ ํŒŒ์ผ ์•ˆ์— ๋‘˜์„ ์ด์–ด์„œ ์ž‘์„ฑํ•˜๋Š”๊ฒƒ์ž…๋‹ˆ๋‹ค.

ย ์œ„์™€ ๊ฐ™์ด jspํŒŒ์ผ ์ž‘์„ฑ ํ›„ Eclipse์™€ ์—ฐ๊ฒฐ๋œ Tomcat์„œ๋ฒ„๋ฅผ start์‹œํ‚จ ํ›„ jsp ํŒŒ์ผ์„ ์„œ๋ฒ„์—์„œ ์‹คํ–‰์‹œ์ผœ์ค๋‹ˆ๋‹ค.

ย ์•„๋ž˜์™€ ๊ฐ™์€ ํ™”๋ฉด์„ ๋งŒ๋‚œ๋‹ค๋ฉด ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค.


ย ์˜ค๋Š˜์€ JDBC Driver๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Connection ๊ฐ์ฒด๋ฅผ ์–ป์–ด์˜จ ํ›„ Eclipse์™€ DBMS๋ฅผ ์—ฐ๊ฒฐํ•ด ๋ณด๋Š” ์ž‘์—…์„ ํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

ย ๋ถ„๋Ÿ‰์ƒ ๊ฐ„๋‹จํžˆ ์—ฐ๊ฒฐ๋งŒ ํ•ด ๋ณด์•˜์„ ๋ฟ DB๋ฅผ ํ•ธ๋“ค๋งํ•˜๋Š” ์ž‘์—…์€ ๋”ฐ๋กœ ์—†์—ˆ์Šต๋‹ˆ๋‹ค๋งŒ, ์ถ”ํ›„์— ํฌ์ŠคํŒ…์„ ํ†ตํ•ด ์ปค๋„ฅ์…˜ ํ’€์„ ์‚ฌ์šฉํ•œ Eclipse์—์„œ์˜ DB ํ•ธ๋“ค๋ง๊นŒ์ง€ ๋‹ค๋ค„ ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด์ƒ์ž…๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

profile
์ฝ”๋”ฉํ•˜๋Š” ์ˆ˜ํ•™๊ณผ

1๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2023๋…„ 2์›” 8์ผ

์ฝ”๋“œ ๊ทธ๋Œ€๋กœ ์จ์„œ ์›นํŽ˜์ด์ง€๋Š” ์ œ๋Œ€๋กœ ๋–ด๋Š”๋ฐ์š”
์—ฐ๊ฒฐ์•ˆ๋จ์ด๋ผ๊ณ  ๋‚˜์™€์„œ ์ด๋Ÿฐ๊ฒฝ์šฐ์—๋Š” ๋ญ๊ฐ€ ์—ฐ๊ฒฐ์ด ์•ˆ๋˜์—ˆ์„๊นŒ์š”?

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ