JPA Error: could not initialize proxy - no Session 접근 JPA강의에서 분명히 이거에 대한 내용을 다뤘던 거 같은데 기억이 안난다.. 영속성 컨텍스트, Proxy, Lazy Loading에 대한 이해가 필요함. Lazy Loading 내용은 제외하고 작성하겠다. 원인 JPA를 사용할 때 흔히 볼 수 있는 에러임. DB에 저장된 값을 사용할 때 발생한다. User와 Post는 1 : N 관계를 맺고있다. Post 엔티티에서 User Fetch => Lazy로 설정해놓은 상태임. (국룰) Post를 조회할 때 API 과정을 살펴보자. 오류가 나는 컨트롤러 Post를 조회하는 내요이고, PostId를 이용해서 조회 함. Post 제목, 작성자, 내용, 등등 PostDTO..
빌더 패턴(Builder pattern)이란? 객체를 정의하고 그 객체를 생성할 때 보통 생성자를 통해 생성하는 것을 생각한다. 객체를 생성할 수 있는 빌더를 builder() 함수를 통해 얻고 거기에 셋팅하고자 하는 값을 셋팅하고 마지막에 build()를 통해 빌더를 작동 시켜 객체를 생성한다. 빌더를 왜 써야할까? 1. 생성자 파라미터가 많을 경우 가독성이 좋지 않다. 2. 값을 넣는 순서가 상관이 없다. 1번 User oneUser = new User( "test@test", "test1", "bang", "010-1234-1234", "dsa", "hi", "n", "ahffk", "dsa", LocalDateTime.now()); 이런 경우에 어떤 값을 넣어야 되고 어떤 순서인지 너무 헷갈리지 ..
detached entity passed to perist 발생 JPA 프로젝트에 엔티티를 영속화 및 커밋 시도하니 다음과 같은 에러가 발생 구글링 결과 CascadeType.ALL 옵션과 관련있는 듯 해보였으나 회원 가입만 구현한 상태이기 때문에 해당 문제는 아니였다. CascadeType.ALL 관련 옵션이 없으나 동일한 오류가 발생하였다면 엔티티 클래스에 @Id를 부여한 필드에 @GeneratedValue를 작성하여 AUTO, SEQUENCE, IDENTITY 전략 등 데이터베이스에게 key 값을 자동 생성하도록 하는 전략을 선택하였으면서 엔티티 객체 생성 시 Id에 해당하는 필드에 직접 값을 입력하지 않았는지 확인