Spring
Java의 JDBC을 단순화시킨 데이터베이스 엑세스 기술이다.
데이터베이스에 대한 CRUD 기능을 제공하는 JdbcTemplate 클래스를 활용한다.
int | update(String sql, Object... args) |
INSERT, UPDATE, DELETE sql을 실행한다. | |
T | queryForObject(String sql, RowMapper rowmapper, Object... args) |
SELECT sql으 실행한다. | |
반드시 한 건의 데이터가 조회되어야 한다. | |
List | list(String sql, Rowmapper rompper, Object... args) |
Select sql을 실행한다. | |
여러 건의 데이터를 조회한다. |
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<context:component-scan base-package="com.sample.dao" />
<!--
Connection Pool객체를 스프링의 빈으로 등록하기
-->
<bean id="cp" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe" />
<property name="username" value="hr"/>
<property name="password" value="zxcv1234" />
</bean>
<!--
데이터베이스 엑세스 기능이 구현되어 있는 JdbcTemplate객체를 스프링의 빈으로 등록하기.
-->
<bean id="template" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="cp" />
</bean>
</beans>
@Repository
public class UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public void insertUser(User user) {
String sql = "INSERT INTO sample_users "
+ "(user_id, user_name, user_password, user_email, user_phone) "
+ "VALUES "
+ "(?, ?, ?, ?, ?) ";
jdbcTemplate.update(sql, user.getId(),
user.getName(),
user.getPassword(),
user.getEmail(),
user.getPhone());
}
}
스프링과 연동가능한 데이터처리 프레임워크
스프링 데이터 처리의 필수 절차
DataSource 객체를 스프링의 빈으로 등록하기
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${driver}" />
<property name="url" value="${dburl}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource“ destroy-method="close“>
<property name="driverClassName" value="${driver}" />
<property name="url" value="${dburl}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</bean>
<jee:jndi-lookup id="dataSource" jndi-name="${jndiName}"resource-ref="true"/>
mybatis와 스프링 연동하기
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="mapperLocations" value="classpath:/META-INF/mybatis/mappers/*.xml"></property>
</bean>
<mybatis-spring:scan base-package="매퍼인터페이스 패키지명" factory-ref="sqlSessionFactory"/>
mybatis.jar, mybatis-spring.jar 라이브러리 의존성을 pom.xml에 추가
매퍼 인터페이스 정의하기
package com.sample.dao;
public interface UserMapper {
void insertUser(User user);
void updateUser(User user);
User getUserById(String userId);
}
* DAO 클래스에 대한 인터페이스 버전이다
매퍼 파일 정의하기
users.xml
<mappers namespace="com.sample.dao.UserMapper">
<insert id="insertUser" parameterType="com.sample.vo.User">
SQL 작성
</insert>
<update id="updateUser" parameterType="com.sample.vo.User">
SQL 작성
</update>
<select id="getUserById" parameterType="string" resultType="com.sample.User">
SQL 작성
</select>
</mappers>
mybatis-config.xml 파일 정의
spring과 mybatis 연동시키기