일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- db
- SQL
- 생성자 주입
- thymeleaf
- spring
- 스프링 부트 입문
- JPA
- mybatis
- assertThat
- @Configuration
- java
- 스프링 부트
- 싱글톤
- sqld
- DIP
- kafka
- resultMap
- 스프링
- 스프링 부트 기본
- jdbc
- 스프링 빈
- assertThrows
- springboot
- 필드 주입
- DI
- Effective Java
- Javascript
- 스프링 컨테이너
- 스프링부트
- 스프링 프레임워크
- Today
- Total
선 조치 후 분석
DB 접속 정보를 관리하는 방법 [서블릿 컨테이너, 스프링 빈] 본문
요즘에는 클라우드 서비스를 이용하면 시크릿 매니저를 사용해서 DB 접속 정보를 관리하고
또는 Docker 시크릿, Property 파일을 이용하여 DB 접속 정보를 관리하는 방법들이 다양하다.
필자는 레거시를 다루면서 좀 옛날 방식으로 DB 접속 정보를 관리하는 방법들을 접하고 있다.
그래서 그 방법들을 정리하고자 한다.
서블릿 컨테이너(WAS)에서의 DB 접속 정보 관리
서블릿 컨테이너에서는 주로 JDBC(Java Database Connectivity)를 사용하여 DB에 접속하고 데이터를 처리한다.
서블릿 컨테이너에서 DB 리소스를 관리할 때, 보통 JNDI (Java Naming and Directory Interface)를 사용하여 DB 연결정보를 설정하고 관리한다.
JNDI는 네이밍 서비스를 통해 리소스의 이름을 기반으로 리소스에 접근하는 방식을 제공한다.
웹 애플리케이션에서는 server > context.xml이나 웹 서버 설정 파일을 통해 DB 연결 정보를 설정하고,
이를 JNDI 이름에 등록하여 사용한다.
서블릿 코드에서는 JNDI를 통해 DB 연결을 얻어올 수 있다.
<Resource
auth="Container"
driverClassName="com.tmax.tibero.jdbc.TbDriver"
name="jdbc/name"
password="tibero"
type="javax.sql.DataSource"
url="jdbc:tibero:thin:@xx.xxx.xxx.xxx:portNo:name"
username="user"/>
장점
- 경량화된 애플리케이션에 적합
- 단순한 설정 정보는 XML 또는 프로퍼티 파일에 저장하여 사용
- 별도의 프레임워크나 라이브러리 없이도 구현 가능
단점
- 보안 문제가 발생할 수 있으며, 암호화나 보안 관리에 추가 작업이 필요
- 유지보수가 어려울 수 있으며, 설정 정보 변경 시 애플리케이션 재시작 필요
- 더 복잡한 설정이 필요한 경우 유연성이 부족
스프링에서의 DB 접속 정보 관리
스프링은 환경 설정 파일에서 DB접속 정보를 관리하는 방법을 제공한다.
XML 또는 Java Config를 사용하여 데이터 소스 정보를 정의하고, 스프링 컨테이너가 해당 정보를 읽어와서
빈으로 등록한다. 데이터 소스는 일반적으로 커넥션 풀을 사용하여 DB 커넥션을 관리한다.
필자는 mybatis-context.xml에 bean으로 등록하여 DB 정보를 관리하였다.
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy" />
<property name="url" value="jdbc:log4jdbc:tibero:thin:@xx.xxx.xxx.xxx:portNo:name" />
<property name="username" value="user" />
<property name="password" value="tibero" />
</bean>
스프링의 DB 접속 정보 관리 방법
- 환경 설정 파일 : 스프링 설정 파일 (XML or Java Config)에서 DataSource를 정의하고 필요한 DB접속 정보를 설정한다. 이렇게 정의한 DataSource는 스프링 컨테이너가 빈으로 관리하며, DI를 통해 다른 컴포넌트에서 사용 가능
- 외부 설정 소스 활용 : application.properties 또는 application.yml과 같은 외부 설정 소스를 통해서 DB 접속 정보를 관리하는 것이 가능
장점
- 스프링의 기능을 활용하여 DB 접속 정보를 관리
- 스프링의 IOC 컨테이너를 통해 빈을 관리하므로 의존성 주입과 관련된 장점 활용
- 프로퍼티 파일 또는 환경 변수 등 다양한 방식으로 설정 정보 관리
- JdbcTemplate, MyBatis 등과 통합하여 사용 가능
단점
- 스프링을 도입하는데 초기 설정과 학습 필요
- 경량화된 애플리케이션에서는 과도한 기능을 제공할 수 있기에 오버헤드 발생 우려
개인적으로는 스프링으로 Bean을 관리하는 방법이 더 편리하고 개발하기 수월했다.
'ETC > IT Knowledge' 카테고리의 다른 글
GSLB 그리고 DNS 개념과 차이점은? (0) | 2023.09.12 |
---|---|
커넥션 풀 (Connection Pool) (0) | 2023.09.12 |
[STS] STS3, STS4 차이점? (0) | 2023.02.24 |
[기본 of 기본] Repository 및 Service에서 XML 쿼리에 넘길 수 있는 파라미터 수는 1개 (0) | 2022.10.25 |
GSON이란? (0) | 2022.10.19 |