2022.12.22.THU

ronglong·2022년 12월 22일
0

코드스테이츠 Day46

  1. 오전 데일리 코딩
  • 부분적으로 오름차순 정렬된 배열에서 값 찾는 문제였다.
    사실 그냥 리스트에 넣고 .contains() 쓰고 싶었는데, 막혀 있었음ㅠ
  • 시간 복잡도를 logN으로 하려면 이진 탐색 방법을 이용해서, 중간 값을 기준으로 점점 찾는 범위를 줄여나가야하는데, 생각하기가 귀찮아서 그냥 for문으로 돌았다,,
    시간 복잡도는 N.
  • 알고리즘 너무 스트레스 받지 말아야겠다. 언젠간 좀 나아지겠지,라는 마음으로.
public class Solution { 
	public int rotatedArraySearch(int[] rotated, int target) {
    for(int i=0; i<rotated.length; i++){
      if(rotated[i]==target) return i;
    }
    return -1;
	}
}
  1. Spring Data JDBC(Java Database Connectivity)
  • Java 애플리케이션의 코드 레벨에서 데이터베이스와 연결하는 API
  • Java 어플리케이션 - JDBC API - JDBC 드라이버 - DB
    1) DriverManager 클래스를 통해 JDBC 드라이버를 로딩.
    2) Connection 객체를 생성하여 DB와 연결
    - 미리 만들어서 Connection Pool(CP)에 넣어두고 꺼내서 사용
    - HikariCP : Spring boot 기본 DBCP
    3) Statement 객체 생성
    4) Query 실행
    5) ResultSet 객체로 데이터 처리 후, 모든 객체 역순으로 close.
  1. 데이터 액세스 기술 유형
    1) SQL 중심 기술 : mybatis, Spring JDBC 등
    2) 객체(Object) 중심 기술
    - ORM(Object-Relational Mapping)
    - 쿼리문 직접 사용 빈도 적음
    - Spring Data JDBC, JPA(Java Persistence API), Spring Data JPA 등

  2. Spring Data JDBC 적용 순서 및 패키지 구조
    1) build.gradle에 dependencies 추가(의존 라이브러리)
    2) application.yml 설정 파일 수정
    - path, database url, sql init 등
    - application.properties보다 선호되는 추세
    3) schema.sql에 필요한 테이블 설정
    4) 패키지 구조
    [API 계층]
    - Controller class (@RequestMapping @RestController, Service, Mapper DI)
    - PostDto class, PatchDto class, ResponseDto class 등 Dto class (유효성 검사)
    - Mapper Interface (@Mapper(componentModel="spring"))
    [Service 계층]
    - Service class ( @Service, Repository DI )
    - Entity class (@Id 필드 = PK) --> DB table
    [DB access 계층]
    - Repository interface (extends CrudRepository<Entity class, @Id type>)
    [예외 처리]
    - ErrorResponse class (멤버 필드 = property, private 생성자, of())
    - Enum ExceptionCode
    - BusinessLogicException class (extends RuntimeException, ExceptionCode DI)
    - GlobalExceptionAdvice (@RestControllerAdvice, @Slf4j, @ExceptionHandler)

<느낀 점>
웹 브라우저 주소에 콘솔 주소 찍으면 DB 나오는 거 신기했다.
yml 작성은 형식이나 입력 값이 낯설다.
사실 낯설지 않은게 없지만...

알고리즘은 어려우면 차라리 당분간 버리고, 일단은 스프링에 집중하라는 이야기를 들었다.
조급해하지 말고 마음 편하게 가자. 적당히...
뭘해도 중간은 하겠지..

0개의 댓글