Spring_DB연결(IntelliJ)

song·2023년 10월 31일

Spring

목록 보기
12/19

DB연결

일반(순수) JDBC 드라이버 이용해서 하기( Mysql )

  • 드라이버 다운받기
    1. Maven Repository 사이트 가기
      https://mvnrepository.com/
    2. mysql이라고 검색
    3. MySQL Connector/J 눌러서 8.2.0 누르기
    4. 아래 코드 복사해서

      poom.xml가서 dependencies 밑에 붙여놓기.
    5. poom.xml Maven > 업데이트하기. 그런데 인텔리제이에서는 그렇게 가도 아래 버튼 누르면 된다
  • 스키마의 이름에 맞춰서 DB 경로 설정
    String DB_URL = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC";
    3306 : db 설치할 때 사용한 포트번호.
    test : db 만들었던 스키마 이름
    useUnicode=true&characterEncoding=utf8 : 인코딩 타입
    serverTimezone=UTC : 서버 시간은 세계 공용 시간
  • db 유저 이름
    String DB_USER = "bitstudy";
  • db 비밀번호
    String DB_PASSWORD = "tiger";
  • DB 들어갈 열쇠 conn
    Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
  • 열쇠를 가지고 할 일을 적을 빈 종이 생성.
    Statement stmt = conn.createStatement();
  • 할 일
    String sql = "select now()";
  • 종이에 할 일 넣기.
    ResultSet rs = stmt.executeQuery(sql);
  • 결과값 리턴하기.
    int i = 0;
    while(rs.next()){
       String currDate = rs.getString(i+=1);
       System.out.println(currDate);
    }

일반(순수) JDBC 드라이버 이용해서 하기 (Spring JDBC)

  • 드라이버 다운받기
    1. Maven Repository 사이트 가기
      https://mvnrepository.com/
    2. spring jdbc 라고 검색
    3. 버전 아무거나 선택
    4. 아래 코드 복사해서

      poom.xml가서 dependencies 밑에 붙여놓기.
      버전을 알아서 맞추게 version에 버전 지우고 ${org.springframework-version}이라고 적기.
      org.springframework-version 현재 스프링버전인지 확인하기. (5.2.0.RELEASE)
    5. poom.xml Maven > 업데이트하기. 그런데 인텔리제이에서는 그렇게 가도 아래 버튼 누르면 된다

DB 연결 방법 (Spring JDBC)

1. DriverManager 방법 (수동)

  • 사용하기 간편하지만 잘 사용하지 않는다.
    왜냐하면 db 계정 아이디, 비밀번호를 다 컨트롤러에 적어야 하기 때문이다.
  • 스키마의 이름에 맞춰서 DB 경로 설정
    String DB_URL = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC";
    3306 : db 설치할 때 사용한 포트번호.
    test : db 만들었던 스키마 이름
    useUnicode=true&characterEncoding=utf8 : 인코딩 타입
    serverTimezone=UTC : 서버 시간은 세계 공용 시간
  • db 유저 이름
    String DB_USER = "bitstudy";
  • db 비밀번호
    String DB_PASSWORD = "tiger";
  • db 드라이버 로드. 오라클로 하고 싶으면 이 부분을 오라클로 하면 됨.
    String DB_DRIVER = "com.mysql.cj.jdbc.Driver";
  • db 셋팅
    DriverManagerDataSource ds = new DriverManagerDataSource();
    ds.setDriverClassName(DB_DRIVER);
    ds.setUrl(DB_URL);
    ds.setUsername(DB_USER);
    ds.setPassword(DB_PASSWORD);
  • db 연결 (exception 필요함)
    Collection conn = ds.getConnection();

2. ApplicationContext 방법 (수동)

  • root-context.xml 파일에 DB관련 정보를 넣어놓고 Bean객체로 등록해서 사용하기 (getBean() 이용)
  • 이 방법이 1번방법보다 더 좋은 코드다.
    보안성이 좋으며, 유지보수하기 좋다.
  • 1번 방법에서 DB_XXX 이 정보들을 xml 파일로 옮기기.
    1. webapp > WEB-INF > spring > root-context.xml
    2. 아래 구문 추가.
      <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
      				<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
      				<property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf8"></property>
      				<property name="username" value="bitstudy"></property>
      				<property name="password" value="tiger"></property>
      </bean>
      • value에 &를 그냥 쓰면 안됨. &로 바꿔야 한다.
    3. db 코드 작성
      ApplicationContext ac = new GenericApplicationContext("file:src/main/webbapp/WEB-INF/spring/**/root-context.xml");
      DataSource ds = ac.getBean(DataSource.class);
      Collection conn = ds.getConnection();

3. 자동 (TDD 방식)

  • 위 1번 2번 방식으로 만들고 sout하면 같은 결과가 나와야 한다.
    그런데 이렇게 돌려보면 제대로 된건지 안된건지 콘솔창에 찍어서 일일히 확인해야 한다.

  • 이런 것을 자동으로 해주는 것이 있다. Test 자동화라는 건데 JUnit 이라는 테스트 도구를 사용하면 된다.

  • 이것을 TDD라고 한다.

  • 만드는 방법

    1. 파일 내부에서 우클릭 > Go To > Test

    2. Testing library를 JUnit 4로 선택하고 OK
    3. test 폴더안에 Test 파일이 만들어진다.
      • 테스트에서 작성해서 성공했는지 확인 후 컨트롤러에 복붙해서 사용하면 된다. (컨트롤러에서도 한 번 더 테스트 필요)
    4. Maven Repository 사이트 가기
      https://mvnrepository.com/
    5. spring test 라고 검색 > Spring TestContext Framework 누르기
    6. 버전 아무거나 선택
    7. 아래 코드 복사해서

      poom.xml가서 dependencies안에 junit 위에 붙여놓기.
    8. junit 버전을 4.7로 변경하기
    9. poom.xml Maven > 업데이트하기. 그런데 인텔리제이에서는 그렇게 가도 아래 버튼 누르면 된다
  • db 코드 작성 (ApplicationContext를 사용한 수동방법)

    @Test
    public void main() throws SQLException {
          ApplicationContext ac = new GenericXmlApplicationContext("file:src/main/webapp/WEB-INF/spring/**/root-context.xml");
          DataSource ds = ac.getBean(DataSource.class);
          Connection conn = ds.getConnection();
    
          assertTrue(conn != null);
    }

    메소드에 static을 쓰면 안된다.

    • @Test : 이 메서드는 테스트 메서드이다.
    • assertTrue(conn != null); : (conn이 not null이라는 것은 잘 돌아갔다는 뜻. )
      assertTrue에 내가 예상한 결과를 넣으면 결과값을 띄워준다.
      연결 잘 된것이 맞는지 체크해서 성공하면 성공이 뜨고 실패하면 실패를 띄워준다.
      • 아래 사진은 성공 띄워준 모습.
    • getBean으로 Bean해서 작성해둔 아이디비밀번호 끌어와서 연결.
  • db 코드 작성 (자동으로 주입받기)

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = {"file:src/main/webapp/WEB-INF/spring/**/root-context.xml"})
    public class Ex02_2_DBConnectionTest2Test {
       @Autowired
       DataSource ds;
    
       @Test
       public void main() throws SQLException {
          Connection conn = ds.getConnection();
    
          assertTrue(conn != null);
       }
    }
    • 위에 ContextConfiguration으로 root-context.xml 연결해서 가져와서 연결.
    • @Autowired 쓰려면 필요한 애너테이션이 2개가 있다.
      1. @RunWith
        • 자동완성 안되거나 빨간글씨로 뜨면 Test 관련 모듈이 없는 것. 설치 방법은 위에 4번부터.
      2. @ContextConfiguration : xml 파일 지정해주는 것

IntelliJ 에 DB 연결하기


우측 DB아이콘 누르기

+버튼 누르고 > 데이터 소스 누르기 > MySQL 누르기

만들어둔 사용자(bitstudy), 비밀번호(tiger), 데이터베이스(test) 입력후
연결 테스트 누른다.

테스트 누르면 드라이버 다운로드하라고 뜨는데 다운로드 하면 됨.

성공 뜨면 OK누르기.

테이블 더블클릭하면 조회할 수 있다.

  • 콘솔창 띄우기
  • 새 테이블 만들기.
    db 우클릭 > 새로 작성 > 테이블

    테이블명 작성 및 컬럼 추가. (열 선택하고 플러스버튼 누르면 됨. )
  • 쿼리 실행 환경설정
    Ctrl + Space누르면 실행되는데
    한 줄만 실행할 건지 전체 실행할 건지 선택하라고 한다.
    이걸 무조건 한줄만 실행하게 하려면

    사용자 지정누르고 가장 짧은 구문을 선택하면 된다.

에러


java.lang.ExceptionInInitializerError
에러날 시 poom.xml junit의 버전을 확인해보자
만약 4.7로 되어있다면 4.12로 변경하기!

profile
계속 나아가기

0개의 댓글