LikeLion_1114

현보·2022년 11월 14일

알고리즘

에라토스테네스의 체

여러 개의 수가 소수인지 아닌지를 판별할 때 사용하는 대표적인 알고리즘.
N보다 작거나 같은 모든 소수를 찾을 때 사용할 수 있다.

  • 장점: 공간복잡도가 절반으로 줄어든다.
  • 단점: 메모리가 많이 필요
  1. 2를 제외한 2의 배수 지우기
  2. 3을 제외한 3의 배수 지우기
  3. 5를 제외한 5의 배수 지우기 ... 반복
  4. N을 제외한 N의 배수 지우기

int N = 50;
int[] arr = new int[N - 1]; // idx는 0~48 숫자는 2~50
for (int i = 0; i < arr.length; i++) arr[i] = i + 2; // 2 ~ 50까지 값 채우기

//2를 제외한 2의 배수를 0으로 만들기
for (int i = 0; i * i <= N ; i++) {
   System.out.println("i:" + i);
   if (arr[i] != 0) {
       for (int j = i * 2 + 2; j < arr.length; j += arr[i]) { // arr.length = 49이므로 49미만까지
           System.out.println(j);
           arr[j] = 0;
       }
   }
}

Spring Data Jpa

product 테이블 생성하기

application.yml에 ddl-auto: update로 변경

spring:
 jpa:
   hibernate:
     ddl-auto: update
   show-sql: true
  • column에 nullable = false 는 Not Null과 같다.
    :테이블 생성시 Not Null이 찍힌다.
@Entity
@Table(name="product") //생략 가능
public class Product {
   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private Long number; // 상품번호

   @Column(nullable = false)
   private String name;

   @Column(nullable = false)
   private Integer price;

   @Column(nullable = false)
   private Integer stock;

   private LocalDateTime createdAt;
   private LocalDateTime updatedAt;
}

product 테이블 생성

엔티티 관련 기본 어노테이션

@Entity

해당 클래스가 엔티티임을 명시하기 위한 어노테이션. 클래스 자체는 테이블과 일대일로 매칭되며, 해당 클래스의 인스턴스는 매핑되는 테이블에서 하나의 레코드를 의미한다.

@Table

엔티티 클래스는 테이블과 매핑되므로 @Table 어노테이션이 필요없다. 클래스의 이름과 테이블의 이름을 다르게 지정한 경우에 반드시 명시해야한다.

@Id

@Id가 붙은 컬럼은 primary key가 됩니다.
(모든 엔티티는 @Id 어노테이션 필요)

@GeneratedValue

해당 필드의 값을 어떤 방식으로 자동 생성할지 결정할 때 사용
IDENTITY -AUTO_INCREMENT
AUTO - 기본 설정값
SEQUENCE - @SequenceGenerator 어노테이션으로 식별자 생성기를 설정하고 이를 통해 값을 받는다.
TABLE - 어떤 DBMS를 사용하더라도 동일하게 동작하기를 원할 경우 사용.

0개의 댓글