우리가 Spring에서 자주 볼 수 있는 Lombok들에 대해 알아보겠습니다 아래와 같은 코드가 있다고 할 때 이를 어떻게 리펙토링 할 수 있을까요? @Getter @Setter // 문제 1. 객체가 무분별하게 변경될 가능성 있음 @NoArgsConstructor // 문제 2. 기본 생성자의 접근 제어자가 불명확함 @Builder @AllArgsConstructor // 문제3. 객체 내부의 인스턴스멤버들을 모두 가지고 있는 생성자를 생성 (매우 위험) @Entity public class Member 해결 1. @Setter를 사용하지 않기 Setter는 그 의도가 분명하지 않고 객체를 언제든지 변경할 수 있는 상태가 되어서 객체의 안전성이 보장받기 힘듭니다. 특히 엔티티에서는 @Setter를 사용..
spring
엔티티의 상태(생명주기) 영속성 컨텍스트란? 영속성 컨텍스트의 장점은 무엇인가? 엔티티의 상태(생명주기) 비영속 : 영속성 컨텍스트와 전혀 관계 없는 상태 영속 : 영속성 컨텍스트에 관리되는 상태 준영속 : 영속 상태의 엔티티가 영속성 컨텍스트에서 분리된 상태 영속성 컨텍스트가 제공하는 기능들 사용 불가 영속성 컨텍스트가 무엇인가? 엔티티를 영구 저장하는 환경 엔티티 매니저를 통해 영속성 컨텍스트에 접근 가능 영속성 컨텍스트의 장점은 무엇인가? 1차 캐시/ 엔티티의 동일성을 보장 트랜잭션을 지원하는 쓰기 지연 -> 트랜잭션 커밋시점에 쿼리 날라감 변경 감지(더티 체킹) 기능 지연 로딩 기능
1. JPA란? 2. ORM이란? JPA란? - 자바 ORM 기술에 대한 표준 명세 - 오늘날 스프링에서 많이 활용되고 있지만, 스프링이 제공하는 API가 아닌 자바가 제공하는 API다. - 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스다. ORM(Object Relational Mapping) ORM 프레임워크가 하는일? 자바 객체와 관계형 DB를 매핑해준다. (객체가 DB 테이블이 되도록 만들어준다.) Hibernate, EclipseLink, DataNucleus 등이 있다. ORM 사용 시 장점? SQL을 작성하지 않아도 직관적인 메소드로 데이터를 조작할 수 있다 (개발 생산성 향상)
1. 서블릿 이란? 2. 서블릿 컨테이너란? 하는일은? 3. 서블릿 객체의 특징? 서블릿 클라이언트의 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 Servlet 클래스의 구현 큐칙을 지킨 자바 프로그램 서블릿 컨테이너 ex) 톰캣 서블릿의 생명주기 관리 동시 요청을 위한 멀티 쓰레드 처리 통신 지원 - WAS 서버와 웹 서버가 통신할 수 있는 쉬운 방법 제공 JSP 지원 (JSP를 서블릿으로 변환해서 사용가능) 서블릿 컨테이너의 특징 서블릿 객체는 싱글톤으로 관리 => 하나만 생성해서, 모두가 공유해서 쓴다. 공유변수 사용시 주의해야함