inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

순수 JDBC

JdbcMemberRepository 에러 질문

683

작성자 없음

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
package hello.hellospring.repository;
import hello.hellospring.domain.Member;
import org.springframework.jdbc.datasource.DataSourceUtils;
import javax.sql.DataSource;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
public class JdbcMemberRepository implements MemberRepository {
private final DataSource dataSource;

public JdbcMemberRepository(DataSource dataSource) {
this.dataSource = dataSource;
}

@Override
public Member save(Member member) {
String sql = "insert into member(name) values(?)";

Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null; // 결과를 받는것이다.

try {
conn = getConnection();
pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); // DB에 인서트를 할 때 이것을 써야 값을 얻는다.

pstmt.setString(1, member.getName());

pstmt.executeUpdate();
rs = pstmt.getGeneratedKeys(); // 자동으로 들어가는 ID수를 꺼내준다.

if (rs.next()) {
member.setId(rs.getLong(1));
} else {
throw new SQLException("id 조회 실패");
}
return member;
} catch (Exception e) {
throw new IllegalStateException(e);
} finally {
close(conn, pstmt, rs);
}
}
@Override
public Optional<Member> findById(Long id) {
String sql = "select * from member where id = ?";

Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;

try {
conn = getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setLong(1, id);

rs = pstmt.executeQuery();

if(rs.next()) {
Member member = new Member();
member.setId(rs.getLong("id"));
member.setName(rs.getString("name"));
return Optional.of(member);
} else {
return Optional.empty();
}
} catch (Exception e) {
throw new IllegalStateException(e);
} finally {
close(conn, pstmt, rs);
}
}
@Override
public List<Member> findAll() {
String sql = "select * from member";

Connection conn = null;
PreparedStatement pstmt = null;

ResultSet rs = null;

try {
conn = getConnection();
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
List<Member> members = new ArrayList<>();
while(rs.next()) {
Member member = new Member();
member.setId(rs.getLong("id"));
member.setName(rs.getString("name"));
members.add(member);
}
return members;
} catch (Exception e) {
throw new IllegalStateException(e);
} finally {
close(conn, pstmt, rs);
}
}
@Override
public Optional<Member> findByName(String name) {
String sql = "select * from member where name = ?";

Connection conn = null;
PreparedStatement pstmt = null;

ResultSet rs = null;

try {
conn = getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, name);
rs = pstmt.executeQuery();
if(rs.next()) {
Member member = new Member();
member.setId(rs.getLong("id"));
member.setName(rs.getString("name"));
return Optional.of(member);
}
return Optional.empty();
} catch (Exception e) {
throw new IllegalStateException(e);
} finally {
close(conn, pstmt, rs);
}
}
private Connection getConnection() {
return DataSourceUtils.getConnection(dataSource);
}
private void close(Connection conn, PreparedStatement pstmt, ResultSet rs)
{
try {
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (pstmt != null) {
pstmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (conn != null) {
close(conn);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
private void close(Connection conn) throws SQLException {
DataSourceUtils.releaseConnection(conn, dataSource);
}
}
템플릿을 그대로 복사를 한 후 SpringConfig까지 진행해서 실행 후 localhost8080 에 들어갔는데 회원 목록을 누르게 되면 화이트라벨 에러가 뜨고 hikaripool 에러가 뜹니다. 어디서 에러가 났는지 찾기 어려워서 질문 드려요

spring-boot MVC spring java

답변 2

0

OMG

안녕하세요. 공식 서포터즈 OMG입니다.

질문 게시글을 삭제하신 것으로 확인됩니다.

추가적으로 궁금한 사항이 있으신 경우 글을 새로 작성해주세요.

감사합니다.

0

jhj9469

이런 에러가 뜹니다.

인텔리제이 오류

0

58

1

..

0

122

2

Unused property.....

0

122

2

project JDK is misconfigured

0

171

2

외부 API의 ID 타입(String/UUID)과 내부 도메인의 ID 타입(Long)이 불일치할 때의 설계 정석

0

102

2

단위/통합 테스트 버전충돌 문제

0

104

2

❗️springboot 4.0.2 버전 aspectj dependency 설정❗️

0

264

1

왜 컨트롤러는 변한게 없는데 새로 만든 html 파일이 뜨나요?

0

125

2

윈도우 build test오류 질문

1

127

2

테스트 관련 공부에 대한 조언을 얻고 싶습니다

0

118

2

테스트 실행 시 에러 질문

0

328

1

name을 통한 비교와 객체를 통한 비교

0

83

1

빌드 후 libs 없음

1

155

1

윈도우 gradlew.bat 에러

0

190

1

@PostMapping("/members/new")가 동작하지 않습니다

0

99

1

java static class와 kotlin class

0

92

1

스프링 DB연결

0

150

1

소요 시간

0

98

2

ddl.sql에 빨간 밑줄

1

119

2

welcome page 에러

0

208

3

잘 모르겠습니다.

0

178

2

fail을 똑같이 쳤는데 오류가 발생해요

0

181

2

index.html Welcome page

0

144

1

프로젝트 gradle-groovy ?

0

409

1