DB

DB-java ์—ฐ๊ฒฐ

byeol_dev 2023. 2. 16. 17:23
package insert;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

@WebServlet("/InsertServlet2")
public class InsertServlet2 extends HttpServlet {
	private static final long serialVersionUID = 1L;
    public InsertServlet2() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// oracle๊ณผ java๋ฅผ ์—ฐ๊ฒฐ์‹œ์ผœ์ค„ ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด
		Connection conn = null;

		// ์‹คํ–‰ํ•  ์ฟผ๋ฆฌ๋ฌธ ์ž‘์„ฑ
		String sql = "INSERT INTO MEMBER (MEM_NUM, MEM_NAME, MEM_AGE) VALUES (?, ?, ?)";

		// ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰์‹œ์ผœ์ฃผ๋Š” ๊ฐ์ฒด
		PreparedStatement pstmt = null;

		try {

			// ๋ฆฌ์†Œ์Šค(ํŒŒ์ผ, ์‚ฌ์ง„ ๋“ฑ) ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด ์ƒ์„ฑ
			Context init = new InitialContext();
			// context.xml ํŒŒ์ผ์˜ ๋””๋น„ ์ ‘์† ์ •๋ณด๋ฅผ ์ฝ์–ด ๋“ค์ž„.
			DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
			// ์ฝ์–ด์˜จ ๋””๋น„ ์ •๋ณด๋กœ๋ถ€ํ„ฐ ์ž๋ฐ”์™€ ๋””๋น„๋ฅผ ์—ฐ๊ฒฐํ•จ.
			conn = ds.getConnection();

			// ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ
			pstmt = conn.prepareStatement(sql);

			// ?๊ฐ’์„ ์ฑ„์›Œ์ค˜์•ผ ํ•จ
            pstmt.setInt(1, 6);
			pstmt.setString(2, "๊น€์ž๋ฐ”");
			pstmt.setInt(3, 35);

			// ์ฟผ๋ฆฌ ์‹คํ–‰
			pstmt.executeUpdate();

		} catch (Exception e) {
			System.out.println("๋””๋น„ ์˜ค๋ฅ˜!!!!!");
			e.printStackTrace();
		} finally {
			try {
				pstmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}

		}

	}
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	}

}

์ฟผ๋ฆฌ์— ๋“ค์–ด๊ฐˆ ์ •๋ณด๋ฅผ ?๋ผ๋Š” ๋ณ€์ˆ˜๋กœ ์คŒ

// ?๊ฐ’์„ ์ฑ„์›Œ์ค˜์•ผ ํ•จ

pstmt.setInt(1, 6);

pstmt.setString(2, "๊น€์ž๋ฐ”");

pstmt.setInt(3, 35);

1 , 2, 3 > ๋ฌผ์Œํ‘œ ๋“ค์–ด๊ฐ„ ์ž๋ฆฌ ์œ„์น˜

์ฟผ๋ฆฌ๋ฌธ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ’ ์ถ”๊ฐ€

 

๋Œ€๋ฌธ์ž ์†Œ๋ฌธ์ž ์ž˜๋ชป ์ณค์„ ๋•Œ ๋ฐ”๊พธ๋Š” ๋‹จ์ถ•ํ‚ค : 

ctrl + shift + x : ๋Œ€๋ฌธ์ž ๋ฐ”๊ฟˆ

crtl + shift + y : ์†Œ๋ฌธ์ž ๋ฐ”๊ฟˆ

 

์—ฐ์Šต)

ํšŒ์›๋ฒˆํ˜ธ

์ด๋ฆ„ 

๋‚˜์ด

์ž…๋ ฅ ๋ฐ›์•„์„œ ์ „์†ก ๋ˆ„๋ฅด๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€

 

jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="test" method="get">
<table>
	<tr>
		<td>ํšŒ์›๋ฒˆํ˜ธ</td>
		<td><input type="text" name="memNum"> </td>
	</tr>
	<tr>
		<td>์ด๋ฆ„</td>
		<td><input type="text" name="memName"> </td>
	</tr>
	<tr>
		<td>๋‚˜์ด</td>
		<td><input type="text" name="memAge"> </td>
	</tr>	
</table>
<input type="submit" value="์ „์†ก">
</form>

</body>
</html>

servlet

package insert;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

@WebServlet("/test")
public class Test extends HttpServlet {
	private static final long serialVersionUID = 1L;
    public Test() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//๋ฐ์ดํ„ฐ ๋ฐ›๊ธฐ
		int memNum = Integer.parseInt(request.getParameter("memNum"));
		String memName = request.getParameter("memName");
		int memAge = Integer.parseInt(request.getParameter("memAge"));
		
		
		
		// oracle๊ณผ java๋ฅผ ์—ฐ๊ฒฐ์‹œ์ผœ์ค„ ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด
		Connection conn = null;

		// ์‹คํ–‰ํ•  ์ฟผ๋ฆฌ๋ฌธ ์ž‘์„ฑ
		String sql = "INSERT INTO MEMBER (MEM_NUM, MEM_NAME, MEM_AGE) VALUES (?, ?, ?)";

		// ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰์‹œ์ผœ์ฃผ๋Š” ๊ฐ์ฒด
		PreparedStatement pstmt = null;

		try {

			// ๋ฆฌ์†Œ์Šค(ํŒŒ์ผ, ์‚ฌ์ง„ ๋“ฑ) ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด ์ƒ์„ฑ
			Context init = new InitialContext();
			// context.xml ํŒŒ์ผ์˜ ๋””๋น„ ์ ‘์† ์ •๋ณด๋ฅผ ์ฝ์–ด ๋“ค์ž„.
			DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
			// ์ฝ์–ด์˜จ ๋””๋น„ ์ •๋ณด๋กœ๋ถ€ํ„ฐ ์ž๋ฐ”์™€ ๋””๋น„๋ฅผ ์—ฐ๊ฒฐํ•จ.
			conn = ds.getConnection();

			// ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ
			pstmt = conn.prepareStatement(sql);

			// ?๊ฐ’์„ ์ฑ„์›Œ์ค˜์•ผ ํ•จ
			pstmt.setInt(1, memNum);
			pstmt.setString(2, memName);
			pstmt.setInt(3, memAge);

			// ์ฟผ๋ฆฌ ์‹คํ–‰
			pstmt.executeUpdate();

		} catch (Exception e) {
			System.out.println("๋””๋น„ ์˜ค๋ฅ˜!!!!!");
			e.printStackTrace();
		} finally {
			try {
				pstmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}

		}

	}
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	}

}

** ์ฃผ์˜์‚ฌํ•ญ

์ฟผ๋ฆฌ ์‹คํ–‰๋ฌธ ์“ธ ๋•Œ

pstmt.executeUpdate() : INSERT, UPDATE, DELETE (๋ฐ์ดํ„ฐ์— ๋ณ€ํ™”๊ฐ€ ์ƒ๊ธฐ๋Š” ์ฟผ๋ฆฌ์— ์”€)

pstmt.executeQuery() : SELECT

SELECT๋Š” ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜ ๋” ์ƒ์„ฑํ•ด์•ผ ๋œ๋‹ค.

์กฐํšŒ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์•„์˜ค๋Š” ๊ฐ์ฒด : 

ResultSet rs = null;

 ์…€๋ ‰ํŠธ ์ ˆ์—๋งŒ ํ•„์š”ํ•œ ๊ฐ์ฒด > ์กฐํšŒ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋„๋ก

			// ์ฟผ๋ฆฌ ์‹คํ–‰
			// rs๊ฐ์ฒด๋Š” ์กฐํšŒ๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
			rs = pstmt.executeQuery();
			
			// rs์—์„œ ๋ฐ์ดํ„ฐ ์ถ”์ถœ
			// rs.next() : ๋‹ค์Œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋‹ˆ?
			while(rs.next()) {
				int memNum = rs.getInt("MEM_NUM");  //rs.get๊ฐ€์ ธ์˜ฌ๋ฐ์ดํ„ฐ์ž๋ฃŒํ˜•("์ปฌ๋Ÿผ๋ช…")
				String memName = rs.getString("MEM_NAME");
				int memAge = rs.getInt("MEM_AGE");
				System.out.println("๋ฒˆํ˜ธ : " + memNum + " / ์ด๋ฆ„ : " + memName + " / ๋‚˜์ด : " + memAge);
			}

SELETE์ ˆ ์ „์ฒด ์ฝ”๋“œ

package select;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

@WebServlet("/SelectServlet1")
public class SelectServlet1 extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public SelectServlet1() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ํ•˜๋Š” ๊ธฐ๋ณธ ๋‹จ๊ณ„
		// oracle๊ณผ java๋ฅผ ์—ฐ๊ฒฐ์‹œ์ผœ์ค„ ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด
		Connection conn = null;

		// ์‹คํ–‰ํ•  ์ฟผ๋ฆฌ๋ฌธ ์ž‘์„ฑ
		String sql = "SELECT MEM_NUM, MEM_NAME, MEM_AGE "
				+ "FROM MEMBER";

		// ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰์‹œ์ผœ์ฃผ๋Š” ๊ฐ์ฒด
		PreparedStatement pstmt = null;
		
		//์กฐํšŒ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์•„์˜ค๋Š” ๊ฐ์ฒด
		ResultSet rs = null;  //์…€๋ ‰ํŠธ ์ ˆ์—๋งŒ ํ•„์š”ํ•œ ๊ฐ์ฒด > ์กฐํšŒ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋„๋ก

		try {

			// ๋ฆฌ์†Œ์Šค(ํŒŒ์ผ, ์‚ฌ์ง„ ๋“ฑ) ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด ์ƒ์„ฑ
			Context init = new InitialContext();
			// context.xml ํŒŒ์ผ์˜ ๋””๋น„ ์ ‘์† ์ •๋ณด๋ฅผ ์ฝ์–ด ๋“ค์ž„.
			DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/OracleDB");
			// ์ฝ์–ด์˜จ ๋””๋น„ ์ •๋ณด๋กœ๋ถ€ํ„ฐ ์ž๋ฐ”์™€ ๋””๋น„๋ฅผ ์—ฐ๊ฒฐํ•จ.
			conn = ds.getConnection();

			pstmt = conn.prepareStatement(sql);

			// ?๊ฐ’์„ ์ฑ„์›Œ์ค˜์•ผ ํ•จ

			// ์ฟผ๋ฆฌ ์‹คํ–‰
			// rs๊ฐ์ฒด๋Š” ์กฐํšŒ๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
			rs = pstmt.executeQuery();
			
			// rs์—์„œ ๋ฐ์ดํ„ฐ ์ถ”์ถœ
			// rs.next() : ๋‹ค์Œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋‹ˆ?
			while(rs.next()) {
				int memNum = rs.getInt("MEM_NUM");  //rs.get๊ฐ€์ ธ์˜ฌ๋ฐ์ดํ„ฐ์ž๋ฃŒํ˜•("์ปฌ๋Ÿผ๋ช…")
				String memName = rs.getString("MEM_NAME");
				int memAge = rs.getInt("MEM_AGE");
				System.out.println("๋ฒˆํ˜ธ : " + memNum + " / ์ด๋ฆ„ : " + memName + " / ๋‚˜์ด : " + memAge);
			}

		} catch (Exception e) {
			System.out.println("๋””๋น„ ์˜ค๋ฅ˜!!!!!");
			e.printStackTrace();
		} finally {
			try {
				pstmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}

		}

	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	}

}

์‹คํ–‰ ํ•˜๋ฉด ์ฝ˜์†”์—์„œ ์กฐํšŒ๋œ ์ „์ฒด ๋ฐ์ดํ„ฐ ํ™•์ธ ๊ฐ€๋Šฅ

์—ฐ์Šต

** dto : Data Transfer Object(๋ฐ์ดํ„ฐ๋ฅผ ์ด๋™์‹œ์ผœ์ฃผ๋Š” ๊ฐ์ฒด)

ํŽ˜์ด์ง€ ์ด๋™ ์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„์„œ ์ „๋‹ฌ์‹œํ‚ฌ ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ!

 

** dao : Data Access Object (๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด) 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ธฐ๋Šฅ์„ ๋‹ด๋‹น.