Back-End169 [Java] IntelliJ 디버깅 애플리케이션 실행이 비정상적이거나 구현한 코드가 의도한 대로 동작하지 않는 경우 IDE의 디버깅 모드를 통해 문제를 분석하고 해결할 수 있는 방안을 찾을 수 있습니다. 본 포스팅에서는 IntelliJ 환경에서 디버깅 모드를 실행하는 방법을 정리하고 활용 방안에 대한 내용을 쌓아갈 예정입니다. Break Point 애플리케이션을 구동하는 중에 Break Point를 사용하려면 Debug 모드여야 하기 때문에 로컬 개발 환경에서는 Run보다는 Debug로 실행하는 것이 편리하다.코드 실행 중 Break를 걸어서 상태를 확인하고 싶은 구간이 있다면 사진과 같이 라인 넘버를 클릭하여 Break Point를 만들 수 있다. 애플리케이션이 실행되어 Break Point가 지정된 라인이 실행되는 시점에 멈추게 .. 2024. 12. 19. [MySQL] 실행 계획 서버 개발자라면 운영하는 서비스의 데이터를 어떻게 잘 보관하고 다룰지 늘상 고민하는 것이 가장 중요하다고 생각합니다. 방대한 양의 데이터 사이에서 데이터를 조회할 때, 효율적인 접근 방식을 탐색하고 개선하는 방법을 고민하면서 이번 기회에 MySQL에서의 실행 계획에 대한 개념을 정리하고자 합니다. 실행 계획 SELECT 쿼리 앞에 EXPLAIN 명령문을 위치하고 실행하면 MySQL은 옵티마이저로부터 쿼리의 실행 계획을 가져와서 출력해 줍니다. 이를 통해서 옵티마이저가 최적의 순서로 테이블을 조인할 수 있는지 검사할 수 있고, 조회가 지체되는 구간을 확인해서 인덱스 구성에 대한 고민과 함께 성능 향상을 위한 개선 방안을 찾을 수 있습니다.여기서 옵티마이저란, 쿼리를 최적으로 실행하기 위해 각 테이블의.. 2024. 12. 19. [JPA] 값 타입 이 글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의를 수강하며 정리한 글입니다. 기본값 타입임베디드 타입(복합 값 타입)값 타입과 불변 객체값 타입의 비교값 타입 컬렉션 JPA에서는 데이터 타입을 엔티티 타입과 값 타입으로 분류할 수 있다.엔티티 타입이란 `@Entity`로 정의하는 객체를 말한다. 데이터가 변해도 식별자로 추적이 가능하다. 값 타입은 `int`, `Integer`, `String`처럼 단순히 값으로 사용하는 자바의 기본 타입이나 객체를 말한다. 식별자가 없고 값 자체이므로 변경하면 추적이 불가능하다. 값 타임은 기본값 타입, 임베디드 타입, 컬렉션 값 타입으로 나눌 수 있다. 기본값 타입 생명 주기를 엔티티에 의존한다. 회원을 삭제하면 이름과 나이 필드가 .. 2023. 1. 25. [JPA] 프록시와 연관 관계 관리 이 글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의를 수강하며 정리한 글입니다. 프록시 즉시 로딩과 지연 로딩 영속성 전이(CASCADE)와 고아 객체 프록시 데이터베이스에서 member를 조회할 때, member의 이름만 필요한 경우(A)가 있고, member가 속한 team의 정보가 필요한 경우(B)가 있다. A는 member의 정보만 가져오는 것이, B는 team의 정보까지 가져오는 것이 효율적일 것이다. Member member = em.find(Member.class, 1L); printMember(member); // A printMemberAndTeam(member); // B 🌕 em.find() vs em.getReference() em.find(): 데이터베이스를 .. 2023. 1. 24. [JPA] 고급 매핑(상속 관계 매핑, @MappedSuperclass) 이 글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의를 수강하며 정리한 글입니다. 상속 관계 매핑@MappedSuperclass 상속 관계 매핑 관계형 데이터베이스는 상속 관계가 없다. 모델링 기법 중 슈퍼 타입 서브 타입 관계가 객체의 상속과 유사하다. 슈퍼 타입 서브 타입 논리 모델을 실제 물리 모델로 구현하는 방법에는 세 가지 방법이 있다. 1. 조인 전략 각각 테이블로 변환한다. 장점은 테이블 정규화가 되어 있고, 외래 키 참조 무결성 제약 조건을 활용할 수 있다는 점과 저장 공간이 효율화 되어 있다는 것이다.단점은 조회 시 조인을 많이 사용해서 성능이 저하되고, 조회 쿼리가 복잡하다는 것이다. (ALBUM의 데이터를 조회하려면 ITEM과 조인 해야 한다) 또한 데이터 .. 2023. 1. 23. [JPA] 다양한 연관 관계 매핑 이 글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의를 수강하며 정리한 글입니다. 다대일 [N:1] 일대다 [1:N] 일대일 [1:1] 다대다 [N:M] 다대일 [N:1] 🌕 단방향 // Member.java @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; 🌕 양방향 // Team.java @OneToMany(mappedBy = "team") private List members = new ArrayList(); 일대다 [1:N] 더보기 🌕 단방향 // Team.java @OneToMany @JoinColumn(name = "TEAM_ID") private List members = new ArrayList(); 엔티티가 관리.. 2023. 1. 23. 이전 1 2 3 4 ··· 29 다음