정구리의 우주정복
[Spring] Datasource PostgreSql 접속하기 본문
반응형
application.yaml
spring:
datasource:
url: <db address>
username: jungry
password: jungry
driver-class-name: org.postgresql.Driver
우선 yaml 파일에 datasource 에 db 접속정보들을 저장한다
PostgreSQLConnectionExample.java
package com.example.jungry.api;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
// 생성자 주입 방식
@RequiredArgsConstructor
@Component
public class PostgreSQLConnectionExample {
// @RequiredArgsConstructor 사용해서 생성자 주입
private final DataSource dataSource;
public void connectToPostgreSQL() throws SQLException {
// Connection 객체를 초기화해줌
Connection connection = null;
// PreparedStatement 객체를 초기화해줌
PreparedStatement preparedStatement = null;
// ResultSet 객체를 초기화해줌
ResultSet resultSet = null;
try {
// dataSource 사용해서 getConnection 을 해줌
connection = dataSource.getConnection();
// 넣어줄 쿼리
String query = "SELECT * FROM animation where title like ?";
preparedStatement = connection.prepareStatement(query);
// sql 문에 매개변수 전달
preparedStatement.setString(1, "가정교사%");
// sql 실행 결과를 ResultSet 으로 받아오기
resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
// title 컬럼의 값을 가져오기
System.out.println(resultSet.getString("title"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (resultSet != null) {
resultSet.close();
}
if (preparedStatement != null) {
preparedStatement.close();
}
if (connection != null) {
connection.close();
}
}
}
}
Connection 객체
- DB 와 연결을 나타냄
- Datasource 를 통해 DB 랑 연결하면 Connection 객체 얻을 수 있음
- 작업 완료되면 리소스 닫아야함
PreparedStatement 객체
- Connection 객체를 통해 PreparedStatement 생성 가능함
- 쿼리문에 매개변수 야무지게 전달 가능
- 쿼리 실행결과는 ResultSet 객체로 받아올 수 있음
- 작업 완료시 리소스 닫아야함
TestService.java
package com.example.jungry.api.service;
import com.example.jungry.api.PostgreSQLConnectionExample;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.sql.SQLException;
@RequiredArgsConstructor
@Service
public class TestService {
private final PostgreSQLConnectionExample postgreSQLConnectionExample;
public void getAnimation() throws SQLException {
postgreSQLConnectionExample.connectToPostgreSQL();
return null;
}
}
가져와서 실행해줌
TestController.java
package com.example.jungry.api.controller;
import com.example.jungry.api.service.TestService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import java.sql.SQLException;
@RestController
@RequiredArgsConstructor
public class TestController {
// 생성자 주입 방식 => 많이 씀 타입추론하기 편해서 ! 에러도 덜난다 !
private final TestService testService;
@GetMapping("/test/animation")
public String getAnimation() throws SQLException {
return testService.getAnimation();
}
}
이후
localhost:8080/test/animation 에 접속하면 console 에 sout 되는걸 확인 가능하다
반응형
'JAVA > STUDY' 카테고리의 다른 글
[Spring] 라이브러리 (1) | 2024.02.03 |
---|---|
[Spring] Autoconfiguration 만들어보기 (3) | 2023.07.09 |
[IntelliJ] 단축키 (Mac) (0) | 2023.07.05 |
Mac mysql , Workbench download (0) | 2022.02.21 |
[JAVA] 객체지향 프로그래밍 (1) (0) | 2022.02.04 |
Comments