[TIL] 240409

Geehyun(장지현)·2024년 4월 9일

TIL

목록 보기
58/70
post-thumbnail

Today

  • Enum 타입 : Array와 유사하나 인덱스(코드)를 사용자가 직접 지정할 수 있다.
    클래스도 enum 타입으로 생성할 수 있다.

  • DB 연결

    1. 라이브러리 갖고오기 : MVN REPOSITORY - mariaDB Java Client 라이브러리

    2. build.gradle 에 값 추가 및 적용
    3. DB 연결 테스트
    package org.fullstack4.chap1.dao;
    import org.junit.jupiter.api.Assertions;
    import org.junit.jupiter.api.Test;
    import org.mariadb.jdbc.Driver;
    import java.sql.Connection;
    import java.sql.DriverManager;
    public class ConnectTests {
        @Test
        public void testConnection() throws Exception {
            Class.forName("org.mariadb.jdbc.Driver");
            String url = "jdbc:mariadb://localhost:3306/webdb";
            String id = "user";
            String pwd = "1234";
            Connection conn = DriverManager.getConnection(url, id, pwd);
    
            Assertions.assertNotNull(conn);
            conn.close();
        }
        // 테스트 메서드는 무조건 public void
    }

    1. 인탤리제이에 데이터베이스 연결

  • Lombok 라이브러리
    : @어노테이션을 이용해서
    1) getter()/setter() : @Getter / @Setter / @Data
    2) toString() : @ToString
    3) equals()/hashCode() : @EqualsAndHashCode
    4) 생성자 자동생성 : @AllArgsConstructor / @NoArgsConstructor
    5) 빌더생성 : @Builder
    6) 리소스 해제 : @clean
    을 간단히 이용할 수 있습니다.

    Lombok 다운로드

    • 사용예시 : VO에서 사용해보기

      package org.fullstack4.chap1.domain;
      
      import lombok.Builder;
      import lombok.Getter;
      import lombok.Setter;
      import lombok.ToString;
      
      import java.time.LocalDate;
      import java.time.LocalDateTime;
      
      @Getter
      @Setter
      @ToString
      @Builder
      public class BbsVO {
          private int idx;
          private String user_id;
          private String title;
          private String content;
          private String display_date;
          private LocalDate reg_date;
          private LocalDate modify_date;
          private int readCnt;
      }
    • 사용예시 : 위에 VO에 넣은 @Builder 이용하기

      public void testModify() throws Exception {
            BbsVO vo = BbsVO.builder()
                    .idx(1)
                    .user_id("gee")
                    .title("게시글 타이틀 수정 테스트")
                    .content("게시글 내용 수정 테스트")
                    .display_date(LocalDate.now().toString())
                    .build();
            System.out.println(dao.modify(vo));
        }
    • 사용예시 : @Cleanup 이용해보기

      public int delete(int idx) throws Exception {
            int result = 0;
            String sql = "DELETE FROM tbl_bbs" +
                         " WHERE idx = ?";
            @Cleanup Connection conn = ConnectionUtil.INSTANCE.getConnection();
            @Cleanup PreparedStatement psmt = conn.prepareStatement(sql);
            psmt.setInt(1, idx);
            result = psmt.executeUpdate();
            return result;
        }
  • HikariCP
    : Connection Pool 의 종류
    HikariCP 다운로드

@Test
    public void testHikariCP() throws Exception {
        HikariConfig config = new HikariConfig();
        // DB 연결하는 부분 JDBC 커넥트 연결할 때와 유사
        config.setDriverClassName("org.mariadb.jdbc.Driver");   // Class.forName 과 동일한 설정 부분
        config.setJdbcUrl("jdbc:mariadb://localhost:3306/webdb");
        config.setUsername("user");
        config.setPassword("1234");
        // 히카리 캐시 용량 설정 등 : 다른데서는 안하고 쓰거나 디비에이가 해줌
        config.addDataSourceProperty("cachePrepStmts", true);
        config.addDataSourceProperty("prepStmtCacheSize", 250);
        config.addDataSourceProperty("prepStmtCacheSqlLimit", 2048);

        // 열심히 설정해준거 Connection 연결
        HikariDataSource ds = new HikariDataSource(config);
        Connection conn = ds.getConnection();

        System.out.println("Connection : " + conn);

        conn.close();
    }
  • CRUD 만들 작업을 할때,
    1) 본인 혼자서 할 때는 소스를 직접 쓰고 컴파일해서 바로바로 확인하면 됨
    2) 협업을 할 때는 오류 투성이인 소스를 빌드할 수 없음.
    => 따라서, Junit Test를 통해 테스트해서 추후 합쳐서 진행하는 식으로 진행해야 함.

Review

  • 게시판 처음 만들때 보다 뭔가... lomboc 라이브러리 사용해보고, 살짝 어렵지만 익숙해지면 확실히 편해질꺼같음.
  • Spring 아직 들어가지 않았지만 나름 기대됨.
  • 정처기 공부가 시급함.
  • Eenum 클래스를 왜 사용하는지 궁금함 => 찾아봐야겠다.
profile
블로그 이전 했습니다. 아래 블로그 아이콘(🏠) 눌러서 놀러오세요

5개의 댓글

comment-user-thumbnail
2024년 4월 12일

안녕하세요, 이번에 같은 교육과정 6기에 합격했는데 정보가 없어서 이렇게 댓글 남겨봅니다.. 혹시 해당 과정이 전반적으로 어떠신가요?!!

1개의 답글