본문 바로가기
728x90

분류 전체보기61

영속성 컨텍스트 JPA를 통해 entity를 만들고 DB와 연동하기 전, JPA의 동작 원리가 어떻게 되는지에 대해 알고갈 필요가 있다. JPA에 대한 개념 중 가장 중요한 두 가지를 들자면, 1. 객체와 관계형 DB 매핑 2. 영속성 컨텍스트 라고 할 수 있다. 이번 정리에서는 객체와 관계형 DB를 매핑하는 방법을 배우기 전에 영속성 컨텍스트의 개념에 대해서 정리한다. 영속성 컨텍스트 해당 포스트에는 나와있지 않지만 이 전 까지의 강의에서 JPA를 사용하기 전, EntityManagerFactory를 Singleton으로 생성하고 그것으로 부터 EntityManager를 생성하여 DB의 connection pool과 연동하여 JPA를 사용한다고 배웠다. 해당 설명을 그림으로 나타내면 아래와 같다. 영속성 컨텍스트는 이.. 2021. 6. 7.
[Java] cron 시간 설정 시 에러 발생 얼마 전, 일괄 작업을 위해 @Scheduled 어노테이션을 이용하여 배치 코드를 사용한 적이 있다. 보통 배치는 주기를 갖고 반복해서 실행되는데 내가 처리하려고 했던 것은 올해 특정일에 딱 한 번만 실행되어야 하는 작업이었고 cron 표현법을 이용하여 다음과 같이 배치 코드를 개발했었다. @Scheduled(cron = "0 10 01 30 05 ? 2021") public void test() { System.out.println("batch Test"); } cron expression(크론 표현식) 위의 Scheduled 어노테이션 옆에 cron으로 몇 가지 숫자가 할당되어 있는 것을 볼 수 있는데 이것이 cron 표현식이다. 스프링 스케줄러에서 cron 표현식은 총 7자리의 숫자들로 시간을 표현.. 2021. 6. 2.
[Java] List.sublist의 사용법과 주의할 점 얼마 전 Batch 로직을 짜면서 길이가 정해져 있지 않은 리스트를 1000개씩 잘라서 특정 메소드를 실행할 일이 있었다. 이런 경우 java.util.List 의 subList() 메소드를 사용하여 손쉽게 리스트를 잘라낼 수 있다. subList 사용법 subList() 메소드는 간단히 두 개의 파라미터만으로 사용할 수 있다. 첫 번째로 잘라낼 배열의 첫 인덱스, 두 번째로 잘라낼 배열의 마지막 인덱스 + 1 값을 넘겨주면 원하는 부분 리스트만을 얻어낼 수 있다. 여기서 주의할 점은 첫 번째 파라미터는 포함이고, 두 번째 파라미터는 포함하지 않는다는 점이다. 코드로 예시를 들면 아래와 같다. List list = Lists.newArrayList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9); .. 2021. 5. 31.
5. CPU Scheduling 이전까지 프로세스와 쓰레드에 대해 공부해 보았고 시간이 지남에 따라 단일 프로세스 / 쓰레드 환경 → 다중 프로세스/쓰레드 환경으로 변화해왔다는 사실까지 알 수 있었다. 이러한 다중 프로세스 환경에서는 자연스럽게 어느 프로세스가 CPU를 점유할 것인지에 대한 고민이 생겨났으며 보다 효율적으로 CPU에 프로세스를 스케쥴링할 수 있는 방법에 대한 고민이 늘어갔다. 이번 정리에서는 효율적으로 CPU에 프로세스를 할당할 수 있는 여러 CPU Scheduling 방법에 대해 정리해 보았다. 1. 기본 개념 1.1 CPU scheduling Multi-Programming(memory에 여러 프로세스를 올려놓고 시분할하여 cpu를 점유하는 것) OS의 기본이라고 할 수 있다. 따라서 OS 설계의 핵심이라고 볼 수 .. 2021. 5. 31.