본문 바로가기

개발/Spring

스프링 JDBC(Java Database Connectivity)

728x90
반응형
스프링 JDBC

 

JDBC(Java Database Connectivity) 는 자바 데이터 접근 기술의 근간이라 할 정도로 대부분의 개발자가 쉽게 이해할 수 잇어 많이 사용하는 데이터 액세스 기술입니다.
스프링에서 제공하는 JDBC 는 기존 JDBC 의 장점과 단순함을 유지하면서 단점을 보완했을 뿐만 아니라 확장된 JDBC 의 기능도 제공합니다.

실제 개발을 진행할 때는 스프링 JDBC 기능보다는 마이바티스나 하이버네이트 같은 데이터베이스 연동 관련 프레임워크를 사용하지만 스프링 JDBC 의 기본적인 기능을 알아두면 도움이 됩니다.

 

스프링 JDBC 설정 파일

 

파일 설명
web.xml ContextloaderListener 를 이용해 빈 설정 XML 파일들을 읽어 들입니다.
servlet.xml 스프링에서 필요한 여러가지 빈을 설정합니다.
/config/dataSource.xml 스프링 JDBC 설정에 필요한 정보를 설정합니다.
/config/jdbc.properties 데이터베이스 연결 정보를 저장합니다.
/config/service.xml 서비스 빈 생성을 설정합니다.

 

 

[ web.xml ]

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
	id="WebApp_ID" version="3.1">
	<!-- ContextLoaderListener 설정 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			<!-- 애플리케이션 실행 시 ContextLoaderListener 로 해당 위치 설정 파일 읽어옴 -->
			/WEB-INF/config/action-service.xml
			/WEB-INF/config/action-dataSource.xml
      </param-value>
	</context-param>

	<servlet>
		<servlet-name>action</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>action</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
</web-app>

 

 

[ servlet.xml ]

 

...
	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="viewClass"
			value="org.springframework.web.servlet.view.JstlView" />
		<!-- URL 요청명에 대해 /WEB-INF/views 폴더의 JSP 를 선택 -->
		<property name="prefix" value="/WEB-INF/views/" />
		<property name="suffix" value=".jsp" />
	</bean>
	<bean id="memberController"
		class="com.spring.member.controller.MemberControllerImpl">
		<!-- memberService 빈을 주입 -->
		<property name="methodNameResolver">
			<ref local="methodResolver" />
		</property>
		<property name="memberService" ref="memberService" />
	</bean>

	<bean id="methodResolver"
		class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
		<property name="mappings">
			<props>
				<!-- URL 요청명에 대해 동일한 이름의 메서드를 호출하도록 설정 -->
				<prop key="/member/listMembers.do">listMembers</prop>
				<prop key="/member/memberForm.do">memberForm</prop>
			</props>
		</property>
	</bean>
...

 

 

[ service.xml ]

 

...
	<bean id="memberService"
		class="com.spring.member.service.MemberServiceImpl">
		<!-- service 에 DAO 빈을 주입 -->
		<property name="memberDAO" ref="memberDAO" />
	</bean>
...

 

 

[ dataSource.xml ]

 

...
	<bean id="propertyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<!-- jdbc.properties 파일에서 데이터베이스 연결에 필요한 4가지 설정 정보 가져옴 -->
				<value>/WEB-INF/config/jdbc.properties</value>
			</list>
		</property>
	</bean>
	<!-- 얻어온 정보로 스프링의 SimpleDriverDataSource 빈 생성 시 데이터베이스에 연결 -->
	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
		<property name="driverClass" value="${jdbc.driverClassName}" />
		<property name="url" value="${jdbc.url}" />
		<property name="username" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
	</bean>

	<bean id="memberDAO" class="com.spring.member.dao.MemberDAOImpl">
		<!-- 생성된 datasource 빈을 DAO 에 주입 -->
		<property name="dataSource" ref="dataSource" />
	</bean>
...

 

 

[ jdbc.properties ]

 

// database 접속에 필요한 정보
jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:XE
jdbc.username=scott
jdbc.password=tiger

 

 

XML 설정 파일에 의해 생성된 빈의 주입 과정

 

 

 

JDBC Template 클래스에서 제공하는 SQL 메서드

 

기능 메서드
insert, update, delete 메서드 int update(String query)
int update(String query, Object []  args)
int update(String query, Object [] args, int [] argTypes)
select 메서드 int queryForInt(String query)
int queryForInt(String query, Object [] args)
long queryForLong(String query)
long queryForLong(String query, Object [] args)
Object queryForObject(String query, Class requiredType)
List queryForList(String query)
List queryForList(String query, Object [] args)

 

 

 

여기까지 임미다.

728x90

'개발 > Spring' 카테고리의 다른 글

메이븐(Maven) 구성요소  (0) 2022.11.17
스프링 @Autowired  (0) 2022.11.16
스프링 애너테이션(Annotation)  (0) 2022.11.16
스프링 트랜잭션(Transaction)  (0) 2022.11.16
스프링 마이바티스 연동  (0) 2022.11.16
마이바티스(Mybatis)  (0) 2022.11.15
스프링 MVC(Model - View - Controller)  (0) 2022.11.15
스프링 프레임워크란?  (0) 2022.11.15
스프링 AOP(Aspect-Oriented Programming)  (0) 2022.11.15
스프링 DI(Dependency Injection)  (0) 2022.11.15