Entity에서 암복호화 & JAVA 비동기 처리

단비·2023년 4월 28일
0

학습

목록 보기
26/66

Entity에서 암복호화 하는 방법

@ColumnTransformer 어노테이션 활용

  • read를 통해서 불러올 데이터를 복호화
  • write를 통해서 저장할 데이터를 암호화
@ColumnTransformer(
    read = "AES_DECRYPT(FROM_BASE64(HP), " + key + "," + iv)"    // 칼럼 값을 가져올 때
    write = "FUNCTION_ENCRYPT(?)")              // 칼럼 값을 쓸 때
private String hp;




JAVA에서 비동기 프로그래밍 하는 방법

ExecutorService

  • 병렬 작업 시 여러 개의 작업을 효율적으로 처리하기 위해 제공되는 JAVA 라이브러리
  • 각기 다른 Thread를 생성해서 작업을 처리하고, 처리가 완료되면 해당 Thread를 제거하는 작업을 손수 진행하지 않아도 됨
  • Executors 인터페이스를 상속 받음

ExecutorService의 종류

  1. newCachedThreadPool

    • 멀티 스레드 처리를 위한 스레드 풀을 생성하되 기존에 생성한 스레드를 가능한한 재사용
    • 등록한 스레드를 모두 한번에 실행시키며 동시 처리에 대한 개수 제한이 없음
    • 스레드를 캐싱하는 스레드 풀
      (여기서 쓰이는 캐싱의 의미는 일정시간동안 스레드를 검사한다는 뜻
      60초 동안 작업이 없으면 Pool에서 제거)
  2. newFixedThreadPool

    • 입력 파라미터로 생성할 스레드 풀의 크기를 정의
    • 스레드 풀의 크기를 넘으면 풀에 여유가 생길때까지 대기
  3. newSingleThreadExecutor

    • 하나의 스레드로 처리하며 나머지 스레드 생성 요청은 현재 스레드가 종료될때까지 대기
  4. newWorkStealingPool

    • 스레드 풀을 생성하며, 실행되는 하드웨어의 사용 가능한 모든 프로세스(CPU)의 코어를 쓰도록 병럴 처리 레벨을 설정
    • 해당 하드웨어의 자원을 모두 선점하려고 하기 때문에 다른 프로세스 혹은 애플리케이션 성능에 영향을 끼침
  5. newScheduledThreadPool

    • 일정 시간 뒤에 실행되는 작업이나 주기적으로 수행되는 작업을 수행

사용법

  • ExecutorService 인스턴스를 생성해 준 후 submit으로 작업 전달

    submit: 작업 전달
    awaitTermination: 지정된 시간 내에 종료되지 않으면 false를 리턴

    shutdownNow: 남아있는 스레드 강제 종료
    shutdown: 작업 완료된 스레드 종료

ExecutorService executorService = Executors.newCachedThreadPool();
executorService.submit(() -> {
	실행문
});
executorService.shutdown();

// 20초 전에 완료되면 true
// 20초가 지나도 완료가 되지 않으면 false
executorService.awaitTermination(20, TimeUnit.SECONDS)

executorService.shutdownNow();

🤗 Thread.sleep(밀리초) 을 이용해 대기를 걸어둘 수 있음





💡 TIPS!


1. mysql my.cnf 설정 방법

C:\Program Files\MySQL\MySQL Server 8.0\etc
my.cnf 파일 vim 편집기로 수정

profile
tistory로 이전! https://sweet-rain-kim.tistory.com/

0개의 댓글