💻 Web_Back end/Spring
스프링 JDBC 기능
개발진스
2023. 5. 16. 22:44
728x90
JDBC(Java Database Connectivity)는 많이 사용하는 데이터 액세스 기술이다.
그러나 시간이 지남에 따라 SQL문이 지나치게 복잡해지면서 Connection 객체 같은 공유 리소스를 제대로 처리해 주지 않으면 버그를 발생시키는 원이 되곤 했다.
스프링에선 이런 JDBC의 장점과 단순함을 유지하면서 단점을 보완했다.
실제 개발을 진행할 때는 스프링 JDBC보다는 마이바티스 같은 데이터베이스 연동관련 프레임워크를 사용하지만, 기초적인걸 배워보자!
파일 | 설명 |
web.xml | ContextLoaderListener를 이용해 빈 설정 XML 파일들을 읽어 들입니다. |
action-servlet.xml | 스프링에서 필요한 여러 가지 빈을 설정합니다. |
action-dataSource.xml | 스프링 JDBC 설정에 필요한 정보를 설정합니다. |
jdbc.properties | 데이터베이스 연결정보를 저장합니다. |
action-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.springramework.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>
action-servlet.xml
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
<bean id="memberController"
class="com.spring.member.controller.MemberControllerImpl">
<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>
<prop key="/member/listMembers.do" >listMembers</prop>
<prop key="/member/addMember.do" >addMember</prop>
<prop key="/member/memberForm.do" >memberForm</prop>
<prop key="/member/memberDetail.do">memberDetail</prop>
</props>
</property>
</bean>
<bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" >
<property name="mappings" >
<props>
<prop key="/member/*.do">memberController</prop>
</props>
</property>
</bean>
</beans>
action-service.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<bean id="memberService" class="com.spring.member.service.MemberServiceImpl">
<!-- memberService 빈의 memberDAO 속성에 memberDAO 빈을 주입합니다. -->
<property name="memberDAO" ref="memberDAO" />
</bean>
</beans>
action-dataSource.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<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>
<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>
<!-- 생성된 dataSource 빈을 memberDAO 빈에 주입합니다. -->
<bean id="memberDAO" class="com.spring.member.dao.MemberDAOImpl">
<property name="dataSource" ref="dataSource" />
</bean>
</beans>
jdbc.properties
jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:XE
jdbc.username=scott
jdbc.password=scott
JdbcTemplate 클래스에서 제공하는 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