JPA를 사용할 때, 용어와 개념 실무에서 발생할수 있는 실수들을 정리해보았습니다. 그전에 JPA가 어떤 역할을 하는지 확인해보겠습니다.SQL문을 통해 DB를 제어하는 것과 달리, Method를 통해 DB를 조작하여개발자가 객체 모델을 이용한 비즈니스 로직에 집중할 수 있게 돕습니다. Spring Data JPA를 만약 사용하신다면, JPA를 편하게 사용할 수 있도록 추상화되어 내부적인 동작을 이해할 필요가 있습니다. JPA의 동작 원리를 확인하고, Spring Data JPA에서 동작하는 방식을 확인해보겠습니다. 위 그림으로 하나씩 설명해보겠습니다.용어부터 알아보겠습니다.flush : persistence context의 변경 내용을 db에 반영합니다. 일반적으로는 commit명령이 들어오면 자동으로 ..
기술 스텍/Spring
IntelliJ 단축키 모두 알고 계신가요? 보통 사용하는 키만 사용하고 나머지는 사용하지 않고 계신건 아닌가요? Tobby님의 강연을 들으면서 IntelliJ에 대해 얼마나 자세히 알고 있는지 물어보셨을때 매일 쓰면서도 자세히 모른다는 사실을 직면했습니다. 한번 알아볼게요 우선 jet brain에서는 아래 링크를 통해 가시면 자세히 설명되어 있는 것을 알수 있습니다.https://www.jetbrains.com/help/idea/getting-started.html command + , 를 통해 설정창으로 들어간다. → 색맹, 커스텀 ui, keymap(short key)등 수정가능command + d 를 파일 2개를 클릭한 상태에서 실행하면 2 파일의 코드를 비교한다. command + g 를 bl..
JPA에서 영속성 관리는 정확하게 알아야합니다.트랜잭션 내에서 persist, commit은 정확하게 알지 못하면 제대로된 메서드를 관리하기 어렵기 때문입니다.영속성과 관련해서 공부하면서 의문을 가지게 되었습니다.스프링 프레임워크에서 EntityManager 주입받아서 사용하면, 같은 트랜잭션 범위에 있는 EntityManager는 동일 영속성 컨텍스트에 접근한다.따라서 동일한 @Transactional (같은 트랜잭션 범위 전파되는 경우에도) 이면 같은 영속성 컨텍스트에 접근한다.그럼 Id가 GenerationType.IDENTITY인 경우에는 어떻게 구성되는 걸까? 먼저 용어에 대해 알아보겠습니다.비영속 (new/transient)영속성 컨텍스트와 전혀 관계가 없는 새로운 상태입니다.주로 객체를 생성..

Spring에서 MSA를 사용하는 경우 서버는 고가용성을 가질 필요가 있고, 하나의 서버가 터졌을 때 다른 서비스까지 되지 않는 로직은 사이트의 규모가 커질수록 경제적 손해가 큽니다. Netflix에서 개발된 서비스 디스커버리 툴이 공개되고 나서 Eureka는 다음과 같은 장점을 가집니다. 1. 서비스 디스커버리 - 수십, 수백개의 서버의 url을 모두 외워서 적용시키는 것은 개발적 loss가 큽니다. 따라서 서버이름을 통해 lb:severname을 통해 맵핑을 시킨다면 해당 서버의 위치를 조회할 수 있습니다. 2. 로드 벨런싱 - eureka서버는 상태를 주기적으로 체크합니다. 응답하지 않는 서비스에 있어서 장애 서비스에 요청을 보내는 것을 방지할 수 있습니다. 3. 자동 장애 복구 - 서비스가 장애 ..