🧶 Spring | Spring Boot/Spring Data JPA

Spring JDBC Template 사용법

  • -

Spring JDBC 흐름

라이브러리 추가

// build.gradle

dependencies {
		...
		implementation 'org.springframework.boot:spring-boot-starter-jdbc'
		// 추가적으로 필요한 DB 커넥터를 추가하면 됩니다.
		...
}

Repository 생성

  • DB와 연결할 repository 클래스를 생성합니다.
  • @Repository 를 붙여 Repository라는 것을 알립니다.
@Repository
public class JdbcRepository{

		// JdbcTemplate을 필드로 가져와야 합니다.
		private final JdbcTemplate jdbcTemplate;

		// 생성자로 DataSource을 주입하여 사용합니다.
		@Autowired
		public JdbcRepository(DataSource dataSource){
				this.jdbcTemplate = new JdbcTemplate(datasource);
		}
		
}

실제 사용 예시

@Repository
public class JdbcMemoRepository{

		private final JdbcTemplate jdbcTemplate;

		@Autowired
		public JdbcMemoRepository(DataSource dataSource){
				this.jdbcTemplate = new JdbcTemplate(datasource);
		}

		// 저장
		public Memo save(Memo memo){
				// 실행할 쿼리를 작성합니다.
				String sql = "insert into memo values(?,?)";
				// sql을 db로 날리면서 ?에는 입력한 매개변수가 차례대로 들어갑니다.
				// update()를 사용합니다.
				jdbcTemplate.update(sql, memo.getId(), memo.getTexT()); 
				return memo;
		}

		// RowMapper 메소드 작성
		private RowMapper<Memo> memoRowMapper(){
				// jdbc로 날린 쿼리의 결과값은 ResultSet에 담겨 옵니다.
				// RowMapper를 이용하여 쿼리 결과값을 원하는 객체에 매핑을 해주어야 합니다.
				return (rs, rowNum) -> new Memo(
									rs.getInt("id"),
									rs.getString("text")
				);
		}
		
		// 조회
		public List<Memo> findAll(){
				String sql = "select * from memo";	
				return jdbcTemplate.query(sql, memoRowMapper()); // 조회시에는 query()를 사용합니다.
		}

		public Optional<Memo> findById(int id){
				String sql = "select * from memo where id = ?";
				return jdbcTemplate.query(sql, memoRowMapper(), id).stream().findFirst();
		}
		
}

 

 

 

'🧶 Spring | Spring Boot > Spring Data JPA' 카테고리의 다른 글

JPA Persistence(영속성, 전반적인 기본 개념 설명)  (0) 2022.10.25
JPA란?  (0) 2022.10.24
Java로 JDBC 사용하기  (0) 2022.10.21
JDBC / SQL Mapper / ORM  (0) 2022.10.21
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.