[우아한테크코스] 7월 3일 TIL

1 minute read

[Algorithm] 정렬 - H-index

  • 처음 시도
    def solution(citations):
      answer = []
      citations.sort()
        
      size = len(citations)
      for i in range(0, len(citations)):
          if citations[i] == size - (i):
              print(str(citations[i]) + str(size - (i)))
              answer.append(citations[i])
      if not answer:
          print(answer)
          for i in range(0, len(citations)):
              if citations[i] < size - (i):
                  answer.append(size - (i+1))
      return max(answer)
    
  • 정답
    def solution(citations):
      answer = 0
      citations.sort()
        
      size = len(citations)
      for i in range(0, len(citations)):
          if citations[i] >= size - (i):
              answer = max(answer, size - i)
      return answer
    
  • 처음 시도에서 마지막 한문제 오답
    def solution(citations):
      answer = []
      citations.sort()
        
      size = len(citations)
      for i in range(0, len(citations)):
          if citations[i] == size - (i):
              print(str(citations[i]) + str(size - (i)))
              answer.append(citations[i])
      if not answer:
          print(answer)
          for i in range(0, len(citations)):
              if citations[i] > size - (i):
                  answer.append(size - (i))
      return max(answer)
    

값 비교해서 큰 값 들고 있기 : answer = max(answer, i)

[JPA] 값 매핑

  1. @Lob: clob, blob과 매핑
    • CLOB: 문자 대형 객체, character
    • BLOB: 이진 대형 객체, Binary
      최고 4gb까지 저장, lob 값, lob 위치에 대한 포인터인 위치자 존재
      lob에 저장하고자 하는 값이 너무 크므로 메모리에 저장해두고 포인터로 들고 있다가 필요할 때 가서 쓴다.

mysql의 large object -> BLOB, TEXT, LONG TEXT
oracle의 large objecct -> BLOB, CLOB

  1. @Temporal: 날짜 타입(Date, Calendar) 매핑
    @Temporal(TemporalType.DATE) //날짜  
    @Temporal(TemporalType.TIME) //시간  
    @Temporal(TemporalType.TIMESTAMP) //날짜와 시간  
    

    temporal 사용하지 않으면 timestamp로 매핑

  2. @Column: 컬럼 매핑
    name, nullable과 같은 속성 전달
    생략하면 데이터타입에 맞춰서 전달, 하지만 int 같은 경우 null이 허용되지 않는데 허용하고 싶으면 @Column 사용해서 전달해야 함
    • length로 String인 경우에만 길이 제한 가능
      @Column(nullable = false, length = 100)
      private String title;
      
    • unique로 컬럼에 유니크 제약조건 걸 수 있음, 두 컬럼 이상 주고 싶으면 클래스 레벨에서 @Table(uniqueConstraints = ~~) 사용
      @Column(nullable = false, length = 20, unique = true)
      private String userId;
      
  3. @Enumerated: 이넘 타입 매핑
    ORDINAL: enum을 숫자로 0, 1, 2로 저장
    STRING: enum의 이름을 String으로 저장
    @Enumerated(EnumType.STRING)
    private ContentType contentType;
    
  4. @CreatedDate, @LastModifiedDate
    • @CreatedDate: 생성일자 LocalDateTime으로 매핑
    • @LastModifiedDate: 마지막 수정일자 LocalDateTime으로 매핑
      @CreatedDate
      private LocalDateTime createDate;
      

      참고

[JPA] 설정

  • mysql
    spring.datasource.url=jdbc:h2:~/test;MODE=MySQL
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57Dialect
    
  • h2
    spring.datasource.url=jdbc:h2:~/test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
    spring.datasource.username=sa
    
  • 로그 설정
    spring.jpa.properties.hibernate.format_sql=true
    spring.jpa.show-sql=true