728x90
Database 연결
Spring Boot는 데이터베이스 연결을 설정하고 관리하는 데 도움을 주는 많은 기능을 제공합니다.
라이브러리 설정
프로젝트 생성 → Available → jdbc 검색 → JDBC API, 원하는 데이터베이스 Driver 선택
build.gradle 파일에 의존성이 추가된 것을 확인할 수 있습니다.
Oracle 설정
Oracle 데이터베이스의 경우 유료 / 무료 버전에 따라 Driver 연결이 안될 수 있기 때문에 프로젝트의 Java Build Path 를 통해 설정합니다.
프로젝트 우클릭 → Properties → Java Build Path → Libraries → Classpath → Add External JARs... 클릭
ojdbc jar 파일 선택
추가된 jar 파일 확인
DB 연결
MySQL 설정
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/[databaseName]
spring.datasource.username=root
spring.datasource.password=[password]
application.properties
Oracle 설정
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521/xe
spring.datasource.username=[username]
spring.datasource.password=[password]
application.properties
코드 구현
import lombok.Data;
@Data
public class MemberDTO {
private String mid;
private String mpw;
private String search;
}
MemberDTO.java
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
@Repository
public class MemberDAO {
@Autowired
private JdbcTemplate jdbcTemplate; // 의존관계(멤버변수)
// 응집도를 높여줌
// 상수화 선언 시 대문자로 작성
private final String SELECTALL = "SELECT * FROM MEMBER";
private final String SELECTONE = "SELECT * FROM MEMBER WHERE MID = ? AND MPW = ?";
private final String SELECTONE_CHECK = "SELECT * FROM MEMBER WHERE MID = ?";
private final String INSERT = "INSERT INTO MEMBER VALUES (?, ?)";
private final String UPDATE = "UPDATE MEMBER SET MPW = ? WHERE MID = ?";
private final String DELETE = "DELETE FROM MEMBER WHERE MID = ?";
public List<MemberDTO> selectAll(MemberDTO mDTO) {
// 반복적인 로직을 대신 수행하는 "템플릿 패턴"을 활용
return jdbcTemplate.query(SELECTALL, new BeanPropertyRowMapper<MemberDTO>(MemberDTO.class));
}
public MemberDTO selectOne(MemberDTO mDTO) {
try {
if (mDTO.getSearch() != null) {
Object[] args = { mDTO.getMid() };
return jdbcTemplate.queryForObject(SELECTONE_CHECK, new BeanPropertyRowMapper<MemberDTO>(MemberDTO.class), args);
}
else {
Object[] args = { mDTO.getMid(), mDTO.getMpw() };
return jdbcTemplate.queryForObject(SELECTONE, new BeanPropertyRowMapper<MemberDTO>(MemberDTO.class), args);
}
} catch (EmptyResultDataAccessException e) {
return null;
}
}
public boolean insert(MemberDTO mDTO) {
Object[] args = { mDTO.getMid(), mDTO.getMpw() };
int result = jdbcTemplate.update(INSERT, args);
if(result <= 0) {
return false;
}
return true;
}
public boolean update(MemberDTO mDTO) {
Object[] args = { mDTO.getMpw(), mDTO.getMid() };
int result = jdbcTemplate.update(UPDATE, args);
if(result <= 0) {
return false;
}
return true;
}
public boolean delete(MemberDTO mDTO) {
Object[] args = { mDTO.getMid() };
int result = jdbcTemplate.update(DELETE, args);
if(result <= 0) {
return false;
}
return true;
}
}
MemberDAO.java
BeanPropertyRowMapper는 Spring Boot의 JDBC 지원에서 사용되는 클래스 중 하나입니다. 이 클래스는 ResultSet의 열을 Java 객체의 필드에 자동으로 매핑해주는 역할을 합니다.
GitHub
https://github.com/Qkrwnsgus0522/SpringBoot
728x90