JSP

[JSP] JSP로 CRUD 게시판 만들기 (2) - DB 접근 기술

Song hyun 2024. 7. 15. 10:26
728x90
반응형

[JSP] JSP로 CRUD 게시판 만들기 (2) - DB 접근 기술

 

1. DB 접근 기술(1)

- DBUtilBasic.java: Connection 객체를 가져오는 클래스이다.

package com.tenco.tboard.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBUtilBasic {
	private static final String DB_URL="jdbc:mysql://localhost:3306/db_tboard?useSSL=false&serverTimezone=Asia/Seoul";
	private static final String DB_USER="root";
	private static final String DB_PASSWORD="asd123";
	
	static {
		try {
			Class.forName("com.mysql.cj/Driver");
		} catch (ClassNotFoundException e) {
			System.out.println("DB 드라이버 로딩 실패");
			e.printStackTrace();
		}
		
	}
	
	public static Connection getConnection() throws SQLException{
		return DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
	}
}

 

*serverTimezone=Asia/Seoul

 

*useSSL=false : 이는 데이터베이스 연결 시 SSL(Secure Socket Layers)를 사용할지, 말지의 여부를 설정하는 부분.

-false로 사용시 SSL을 사용하지 않고 DB에 연결하게 된다.

-개발 환경에서는 보안이 덜 중요한 경우가 많아 SSL을 비활성화하여, 연결 설정을 단순화할 수 있다.

-성능을 중시하는 경우 역시 SSL을 비활성화 할 수 있다.

-하지만 SSL을 비활성화하면 보안에 취약해질 수 있기 때문에, 운영 환경에서는 SSL을 활성화하는 것이 좋다.

 

 

 

2. DB 접근 기술(2)

-context.xml : [webapp] 폴더 아래에 위치하기 때문에, 외부에서 접근이 불가능한 파일이다.

<?xml version="1.0" encoding="UTF-8"?>
<Context>
	<Resource
		name="jdbc/tboard"
		auth="Container"
		type="javax.sql.DataSource"
		factory="com.zaxxer.hikari.HikariJNDIFactory"
		uniqueResourceName="MyTboard"
		minimumIdle="5"
		maximumPoolSize="10"
		connectionTimeOut="30000"
		idleTimeOut="60000"
		maxLifeTime="1800000"
		jdbcUrl="jdbc:mysql://localhost:3306/db_tboard?serverTimezone=Asia/Seoul"
		driverClassName="com.mysql.cj.jdbc.Driver"
		username="root"
		password="asd123"/>

</Context>

 

*context.xml 파일은 톰캣 서버에서 JNDI 리소스를 설정하는 데 사용된다.

=>이 파일을 통해 DB 연결 풀을 정의하고, 설정할 수 있다.

 

 

 

3. DB 접근 기술(3) 

-DBUtil.java: JNDI를 통해, DB 연결 풀에서 연결을 가져오는 유틸리티 클래스.

package com.tenco.tboard.util;

import java.sql.Connection;
import java.sql.SQLException;

import javax.naming.InitialContext;
import javax.sql.DataSource;

public class DBUtil {
	
	private static DataSource dataSource;
	
	static {
		try {
			InitialContext ctx=new InitialContext();
			dataSource=(DataSource)ctx.lookup("java:comp/env/jdbc/tboard");
		} catch (Exception e) {
			System.out.println("DBUtil 초기화 실패");
			e.printStackTrace();
		}
	}

	public static Connection getConnection() throws SQLException {
		return dataSource.getConnection();
	}
	
}

 

 

728x90
반응형