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
반응형