본문 바로가기
728x90

전체 글126

[JPA] jdbc에서의 Transaction 1. auto commit 모드 끄기 커넥션이 생성되면 바로 auto commit 모드로 세팅된다 즉, 각 SQL문이 완료되는 족족 commit된다. 그 다음 실행된다 완료 → commit → 실행 그래서 동시에 업데이트 하려면 auto commit 모드를 꺼야 한다 con.setAutoCommit(false); con : active connection 2. Transaction commit하기 auto commit 모드를 끄면 commit() 명령실행 전까지 commit하지 않는다 commit을 실행하면 현재 트랜잭션에서 모든 SQL명령들이 하나의 unit으로 반영된다 public void updateCoffeeSales(HashMap salesForWeek) throws SQLException { .. 2021. 3. 3.
[JPA] 엔티티타입 vs 값타입 종류 엔티티 타입 @Entity PK를 가진다 데이터가 변해도 식별자로 계속 추적가능한 것 값 타입 int, string... PK가 없다 (값 그 자체이므로...) 기본값 타입 (int, Integer, String...) 임베디드 타입 (사용자가 정의한다) 컬렌션 타입 (사용자가 정의한다) 1. 기본값 int, String 등의 기본타입 절대 공유되어서는 안되고 복사만 가능 immutable해야한다 2. 임베디드 타임 class Line { @Embedded private Sections sections; } @Embeddable class Sections { private List sections } embed된 객체의 멤버만 가져와서 사용 그냥 엔티티의 값이다 장점 재사용 가능하다 응집도가 높아진.. 2021. 3. 3.
톰캣 엑세스 로그 설정 application.yml 로그 파일이 생성될 위치를 설정한다 server.tomcat.basedir:/var/log/ AccessLoggingConfig 로깅 파일의 내용과 제목 등을 설정한다 @Configuration public class AdminAccessLogConfig implements WebServerFactoryCustomizer { @Override public void customize(WebServerFactory factory) { final TomcatServletWebServerFactory containerFactory = (TomcatServletWebServerFactory) factory; final AccessLogValve accessLogValve = new A.. 2021. 2. 24.
자바의 철학으로 보는 JVM Java가 무엇인가라는 질문에 자바의 철학을 먼저 살펴봐야 될 것 같다. 자바의 철학은 Write Once, Run Everywhere으로 시작하여 점차 발전해왔다. 이러한 철학을 실현하기 위해 4가지의 개념을 도입했다. 자바 프로그래밍 언어 클래스 파일 포멧 자바 API (Application Programming Interface) JVM 이 순서대로 자바의 구동원리를 이해한다면 전반적인 그림을 그릴 수 있을 것이다. 우리는 Java라는 언어를 통해 .java 형식으로 개발자가 읽을 수 있는 코드를 작성한다. 작성한 코드는 JDK라는 Java를 개발하기 위한 여러 툴을 가진 곳에서 javac라는 컴파일러를 사용하여 컴퓨터가 이해할 수 있는 byte code인 .class로 컴파일된다. 우리가 흔히 아.. 2021. 2. 19.
서비스를 시작하며 지난 1년 동안 서비스 회사에서 거의 풀스텍으로 서비스 개발 및 운영을 해왔었다. 작은 규모의 회사였기에 서비스 기획, 디자인, 개발, 운영 등 많은 부분에 대해 아이디어를 공유하고 참여할 수 있었다. 개발 역할 뿐 아니라 기획, 디자인 등의 서비스 전반에 대한 롤을 맡다보니 각 역할이 어떤 고민을 하고 있는지 생각할 수 있었다. 예전에 서비스 회사에 들어오기 전에 생각했던 서비스 개발과 지금의 서비스의 개발에 대한 생각은 많이 다르다. 막연히 서비스라는 것은 개발자가 치밀하게 잘 개발하고 홍보하면 시장에서 알아줄 것이라고 생각했다. 실상은 개발보다는 각 역할간의 커뮤니케이션과 정확한 목표를 설정하는 것이 매우 중요하였다. Letshadow라는 서비스 개발하면서 세웠던 세가지 원칙이 있다. 해당 원칙들은.. 2021. 2. 17.
VisualVM 원격에서 접속하기 [이론편] 지난 주 Udemy에서 Java Application Performance and Memory Management 강의를 보편서 한동안 개인 프로젝트 letshadow에 사용해보고 싶은 생각이 문득 들었습니다. 회사에서는 scouter를 사용해서 모니터링하고 있지만 개인 프로젝트 서버에 scouter를 도입하기는 agent를 따로 설치해야되어 모니터링 효율대비 리소스를 잡아 먹을 것 같다는 생각이 들었고, 스프링부트 어드민 또한 어드민 어플리케이션을 하나 더 띄워야 했기 때문에 한동안은 JVM에 내장되어있는(JDK 8기준) visualvm을 사용하는 것이 좋겠다고 생각했습니다. 이번에는 visualvm을 원격에서 구동하는데 필요한 JMX와 RMI에 대해서 한번 알아보겠습니다. visualvm 동작과정 v.. 2021. 2. 17.
728x90