📘

【初心者向け/ITスクール46日】ServerとDB連携(READ)

2023/09/14に公開

はじめに

今日は、ITスクールに通った46日目の日で、今日学んだ知識を記事にシェアしたいと思います。本記事が、ITを勉強を始めた方々にもロードマップになればいいと思います。

46日目は、今まで、JDBCとTomcatを連携し、WEBSITEからREAD(SELECT)したデーターを呼び出すことを練習しました。全体的な復習みたいな感じでした。

DBCP(Connect Pool)

前回はOracle DBに連携する際に、OracleDBとデーターをIOするたびにConnectionオブジェクトを生成する形でした。
しかし、とてもスピードが遅くなるので、事前にConnectionオブジェクトを生成しておき、必要たびにDateを交換するDBCPについて勉強しました。

<?xml version="1.0" encoding="UTF-8"?>
<Context>
	<Resource
		name="hyonPool"
		type="javax.sql.DataSource"
		driverClassName="oracle.jdbc.driver.OracleDriver"
		factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory"
		username="rnjsgurah2"
		password="1234"
		url="jdbc:oracle:thin:@localhost:1521:xe"
		maxTotal="500"
		maxIdle="100"
	/>
</Context>

このような設定をxmlに込みます。

package com.hyon.db.manager;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class HyonDBManager {
	public static Connection connect(String poolName) throws Exception{
	Context ctx = new InitialContext();
	DataSource ds = (DataSource) ctx.lookup("java:comp/env/" + poolName);
	return ds.getConnection();
	}
	
public static void close(Connection con, PreparedStatement pstmt, ResultSet rs) {
	try {
	   rs.close();
	}catch(Exception e) {
	
	}
	try {
	  pstmt.close();
	}catch(Exception e) {
			
	}
	try {
		con.close();
	}catch(Exception e) {
			
	}
  }
}

JSP + Custom TAG

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>    
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<div class="table">
	 <table>
      <thead>
        <tr>
          <th>지역</th>
          <th>이름</th>
	    </tr>
	    <tbody>
		<c:forEach var="apple" items="${apples }">
			<tr>
			   <td>
			      ${apple.a_location}
			   </td>
			   <td>
			      <fmt:formatNumber type="currency" value="${apple.a_price }" />
			   </td>
			</tr>
		</c:forEach>
	    </tbody>
	 </table>
	 </div>
</body>
</html>

setAttributeに込めたDTOのデーターをcustom tagを通してループすることがポイントでした。
こちらはうまく具象できなくて、<%= %>のようなJSP文法に依存したところが悔しかった!

結果

Discussion