본문 바로가기

Spring/JPA3

[JPA] DTO 정의와 활용 범위 (※ 아래 글은 MVC 패턴을 먼저 숙지 하셔야 됩니다) 엔티티 객체(도메인 객체)는 DB table 그 자체입니다. 따라서, 엔티티를 통째로 Veiw 에게 넘겨주면, password 와 같은 민감한 정보도 함께 넘어갑니다. User.java (엔티티) public class User { public Long id; public String name; public String email; public String password; //외부에 노출되서는 안 될 정보 public DetailInformation detailInformation; //외부에 노출되서는 안 될 정보 //비즈니스 로직, getter, setter 등 생략 } UserController.java (DB 정보를 통째로 넘김 ㅠ) @G.. 2022. 8. 16.
JPA 기본 - 엔티티 매핑 1. @Entity @Entity가 붙은 클래스는 JPA가 관리 JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수 JPA 스펙상 파라미터가 없는 public 또는 protected 기본 생성자 필수 임베디드 타입에도 기본 생성자 필수 생성자에 파라미터 줄 경우 기본 생성자가 자동으로 생성안되기 때문에 따로 만들어줘야 한다. 기본 생성자를 사용할 일이 없고 그냥 스펙상 만들어 준 경우라면 public 대신 protected로 범위를 지정한다. 이렇게 해두면 나중에 사용할 때 기본 생성자는 스펙상 둔거구나 하고 알 수 있다. 이런 제약을 두는 이유는 JPA 구현 라이브러리가 객체를 생성할 때 프록시나 리플랙션 같은 기술을 사용할 수 있도록 지원해야 하기 때문 final 클래스, enum, int.. 2022. 8. 14.
JPA 기본 - 영속성 관리 1. 영속성 컨텍스트 엔티티를 영구 저장하는 환경이라는 뜻으로 EntityManager을 생성하면 영속성 컨텍스트가 J2SE 환경에서는 1:1로 눈에 보이지 않게 생성된다고 보면 된다.(스프링 프레임워크 같은 컨테이너 환경에서는 엔티티 매니저와 영속성 컨텍스트가 N:1의 관계를 가진다.) 즉, 애플리케이션 계층과 DB계층 사이에 영속성 컨텍스트가 있다고 생각하면 된다. persist 한다고 해서 바로 db에 쿼리가 날려지는게 아니라 1차적으로 영속성 컨텍스트의 관리하에 들어가 있는 것이다. EntityManager em // 주입 받았다고 가정 // Member은 Entity 클래스 Member member = new Member(); // member은 비영속 상태 em.persist(member); .. 2022. 8. 13.