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 |