전체 글

Spring

[spring] spring scheduler vs quartz scheduler

개인적으로 spring shceduler와 quartz shceduler가 같은건 줄 알았는데, 알고보니 다른거여서 다시 포스팅을 남긴다. Spring scheduler spring scheduler는 spring에서 built in 으로 제공한다. quartz보다 훨씬 간단하게 사용할 수 있다는 장점이 있다. 프로젝트가 복잡하지 않고 단순히 scheduling과 bean만 필요하다면 quartz보다 spring scheduler가 낫다. 메인메소드에 @EnabledScheduling을 달아주고, @EnableScheduling @SpringBootApplication public class Application() { public static void main(String[] args) { Spring..

IntelliJ

[intellij] (톰캣) 한글깨짐 해결

어느날 갑자기 프로젝트를 열어봤더니 톰캣 로그 한글이 깨져있었다. 데이터를 받는 프론트쪽에서도 한글이 깨지고 있었다. 한글 깨짐은 인코딩 문제이다. 해결방법 ctrl + alt + s를 눌러 settings에 들어간다. Editor > FileEncodings에 들어간다. 모든 인코딩을 UTF-8로변경하고 path에 프로젝트 루트를 넣어 UTF-8로 설정한다.

java

[java] 익명클래스

익명클래스 java에서는 아래와 같은 클래스가 있을 때, 익명 클래스로 만들 수 있다. // 부모 클래스 class Animal { public String bark() { return "동물이 웁니다"; } } // 자식 클래스 class Dog extends Animal { @Override public String bark() { return "개가 짖습니다"; } } public class Main { public static void main(String[] args) { Animal a = new Dog(); a.bark(); } } class Animal { public String bark() { return "동물이 웁니다"; } } public class Main { // 익명 클래스 ..

SQL

[SQL] 정규화의 개념

정규화란? 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화(Normalization)라고 한다. 데이터를 정규화하지 않으면 쿼리의 성능이 저하되고, 삽입이상, 갱신이상, 삭제이상 등의 이상현상이 발생한다. 삽입이상은, 원치 않은 데이터가 삽입되는것, 갱신이상은 원치 않게 일부 데이터만 갱신되는 것, 삭제이상은 원치 않는 데이터가 삭제되는 것 을 말한다. 정규화의 종류에는 1NF(1정규화), 2NF, 3NF, BCNF(보이스-코드 정규화), 4NF, 5NF, (6NF)가 있다. 비공식적으로 3NF면 정규화되었다고 한다. 반대로 테이블을 합쳐서 중복되게 하는 것을 반정규화라고 한다. 성능상의 이유로 반정규화를 진행하기도 한다. 1NF 1. 도메인(각 칸의 값)이 원자값(..

jpa

[jpa] 지연로딩과 즉시로딩 FetchType.EAGER, LAZY, 프록시

지연로딩과 즉시로딩 JPA는 객체 그래프로 연관된 객체들을 탐색하는데, 객체가 DB에 저장되어있으므로 마음껏 탐색하기 어렵다. 따라서 처음부터 객체를 조회하지 않고, 실제 사용하는 시점에 조회한다.(이때 프록시를 이용한다.) 이것을 지연로딩이라고 한다. 하지만, 자주 함께 사용하는 객체들은 조인을 사용해서 함께 조회하는게 효과적이다. 이렇게 로딩하는 방식을 즉시 로딩이라고 한다. 아래 예제를 보자. @Data @Entity public class Member { private String username; @ManyToOne private Team team; } @Data @Entity public class Team { private String name; } //비즈니스로직 1 : 회원의 팀을 조회 ..

java

[java] 코드 실행시간 측정하기

java에서 코드 실행시간을 측정하려면 아래처럼 하면 된다. long start = System.currentTimeMillis(); //로직 long end = System.currentTimeMillis(); System.out.println("수행시간: " + (end - start) + " ms");

java

[java] List, Map에서 유용하지만 생소한 함수 정리

Collection Collection을 공부하다가, 내게 익숙치 않지만 유용해 보이는 메소드들이 있어서 정리해보았다. Collection을 처음 만들 때 List, Set, Map으로 분리했다가, List와 Set만 공통되는 점이 있어서 Collection이라는 인터페이스를 상속받도록 했다고 한다. List 리스트는 위의 사진과 같은구조로 되어있다. 메소드 목록이다. 아래 외에도 많은 메소드가 있으니 API를 살펴보자. boolean addAll(int index, Collection c) 저장된 위치 index에 컬렉션의 모든 객체를 추가한다. ListIterator listIterator() ListIterator listIterator(int index) List의 객체에 접근할 수 있는 List..

jpa

[jap] jpa entity 변수명 대소문자 바뀜

mapstruct를 쓰다가 jpa의 entity변수명과 다른 변수명이 mapping이 안됬다면서, 빌드가 안되는 오류가 발생했다. 엔티티의 변수명은 xCrdnt인데 mapstruct에서는 XCrdnt로 해야 된다. JPA에서 두번째 글자가 대문자면 첫번째 글자가 자동으로 대문자로 바뀌어 버린다고 한다...........

우주유령
우주