전체 글 (113) 썸네일형 리스트형 로깅(Logging) 로깅의 필요성애플리케이션 디버깅, 문제 해결, 모니터링, 에러 리포트를 위한 필수 도구!예) 디버깅 - 고객의 문제 상황을 개발 환경에서 에러 재현할 수 없는 경우도 있음디버거 만으로는 한계가 존재로그를 사용하면 로그를 기록하는 상황에 따라 커스터마이징, 정보를 간략하게 혹은 더 상세하게 표시할 수 있게 구성이 가능함대표적인 로깅 요소에러예상하지 않은 동작 (버그)애플리케이션 변경 추적주요 이벤트 (서비스 / 모듈 시작과 종료, 로그인 등) 알림제대로 서비스가 동작하고 있는지에 대한 정보성 알림 무엇을 기록할 것인가? - 로그 콘텐츠항목세부 내용Error메시지, 스택 추적, 에러 발생 시 애플리케이션이 실행하고 있던 작업Debugging디버깅 시 필요한 세부 추적 정보적용되는 변수 값, 메서드 등 실행에.. 영속성 전이 영속성 전이 (cascade)특정 엔티티끼리 생명주기가 같은 경우가 있음예) 글(post)이 삭제되는 경우 글에 달린 댓글(comment)들은 독립적으로 존재할 수 없기 때문에 글이 삭제될 때 같이 삭제되어야 함엔티티 생명주기가 다른 엔티티와 연관되어 있는 경우 영속성 전이(cascade)를 사용해 관리@ManyToOne(cascade=CascadeType.ALL) 엔티티 생명주기 영속성 전이 타입 종류종류설명ALL모든 작업(상태)에 대해 영속성 전이PERSISTPersist할 때 연관된 엔티티도 PersistMERGE엔티티를 영속성 컨텍스트에 Merge할 때 연관 엔티티도 MergeREMOVEDB와 영속성 컨텍스트에서 연관 엔티티도 제거REFRESH엔티티 새로고침 시 연관 엔티티도 새로고침DETACH엔.. 다대일 단/양방향 매핑 다대일(N:1) 단방향 매핑 예)1. 댓글(comment)들은 하나의 글(post)에 달려있음 (댓글 N : 글 1)2. 댓글을 조회했을 때, 댓글이 속해있는 글도 같이 조회됨3. 글을 통해 댓글에 접근할 수 없음comment 엔티티에 매핑 설정을 추가글(post) 객체는 댓글(comment)로부터 참조 당하는 것, 참조할 필요 없으므로 추가할 설정은 없음 다대일(N:1) 양방향 매핑 예)1. 댓글(comment)들은 하나의 글(post)에 달려있음 (댓글 N : 글 1)2. 댓글을 조회했을 때 댓글이 속해있는 글도 같이 조회됨3. 글을 통해서도 댓글에 접근할 수 있음mappedBy="post" ≫ "post"는 comment의 post 필드 양방향 매핑과 주인 (owner)누가 FK를 관리(등록/수정).. 연관관계 매핑 종류 / 방향 객체지향에서는 여러 객체에 나누어 객체 간 협력을 하며 기능≫ 객체들을 서로 연결할 수 있도록 객체 간 참조 사용!≫ 객체지향과 DB 간의 차이 발생객체지향 : 객체 간 참조를 사용해 객체들을 연결DB : 테이블의 외래키를 사용해 정규화 연관관계 매핑JPA에서 성능을 결정하는 중요한 요소연관관계 설정을 통해 객체 '참조'와 테이블의 FK를 매핑시켜 사용방향성(Direction), 다중성(Multiplicity) ≫ 두 가지 기준 존재 방향성 (Direction)방향설명단방향두 엔티티 관계에서 한쪽 엔티티만 참조양방향두 엔티티 관계에서 양쪽 엔티티가 서로 참조: A → B, B → A 예)1. 게시글 객체가 참조 변수를 통해 댓글 객체만 참조하면 ≫ 단방향 2. 댓글 객체도 게시글 객체를 참조 변수를 통.. JPA Auditing / Base Entity Audit엔티티와 관련된 이벤트를 추적하고 기록Audit (감사) : '감독하고 검사함'Entity 버전 관리와 관련된 이벤트를 추적하고 기록하는 것이벤트 : Entity의 Create, Update, Delete와 같은 작업 Audit 구현하기Spring Data JPA는 @EntityListeners 어노테이션을 사용해 자체 JPA 엔티티 리스너 클래스인 AuditingEntityListener를 제공@EnableJpaAuditing과 @EntityListeners(AuditingEntityListener.class) 설정≫ 이벤트 리스너가 Content에 대한 정보를 Auditing할 수 있게 됨 SpringBootApplication(PostApplication.java 파일)에 @EnableJp.. Lombok Lombok반복되는 코드를 줄이기 위한 Java LibraryJava 라이브러리로 getter, setter, 생성자 등 반복적으로 쓰이는 코드들을 어노테이션 만으로 쉽게 설정 가능하게 함Lombok을 사용하기 위해서는 Gradle Dependency에 추가해야 함 Lombok 프로젝트에 적용하기Gradle 설정 파일 (build.gradle)에 추가원하는 class 위에 Lombok 어노테이션을 붙이면 자동으로 컴파일 시 생성됨예) getter 메소드 (public Long getId{})를 @getter로 대체 가능@Getter : 필드 모두에 Getter를 생성@Setter : 필드 모두에 Setter를 생성@NoArgsConstructor : Argument가 없는 생성자 코드 생성 많이 쓰이는 .. @Query 어노테이션 Query Method 방법메소드명으로 쿼리 생성@Query 사용JPQL(Java Persistence Query Language)을 사용하여 Query를 생성 JPQL (Java Persistence Query Language)객체지향 쿼리, DB 테이블이 아닌 엔티티 객체를 조회JPA 일부에 정의되어 있으며, DB 종류(Oracle, MySQL, PostgreSQL, ...)에 영향을 받지 않고 작성할 수 있는 장점이 있음 위치기반 (indexed) 쿼리 파라미터?1 ≫ 첫 번째 파라미터인 emailAddress의 값이 전달됨만약 파라미터가 (String emailAddress, String name) 식이었다면?1은 emailAddress / ?2는 name을 전달하게 됨 명명된 (named) 쿼리.. 페이징 / 정렬 처리 PaginationDataset을 더 작고 관리하기 쉬운 Chunk로 나누는 기술server가 client의 요청에 전체 dataset을 응답하는 것이 아닌, 나눠진 dataset을 응답지금 보고 있는 페이지에 표시할 데이터만 데이터베이스에서 가져오게 됨 Pagination이 필요한 이유성능전체 데이터 대신 필요한 데이터만 빠르게 응답할 수 있음수십만 개의 데이터를 한 번에 응답한다면 → 리소스는 많이 사용, 클라이언트에서의 응답은 느림더 나은 UX사용자에게는 반응이 빠른 인터페이스 제공초기 결과를 빠르게 볼 수 있고 추가 데이터를 요청할 수 있게 됨 PagingAndSortingRepository전체 문서들을 개별 페이지로 나누는 Pagination과 정렬하는 Sorting을 사용할 수 있게 됨데이터 .. 이전 1 ··· 4 5 6 7 8 9 10 ··· 15 다음