🔥스파르타 TIL (Spring) 23

Entity란 무엇일까? (3) - Entity의 상태

JPA가 관리하는 상태 => 영속 상태 (MANAGED) ex) User user = new User() : 비영속 상태 준영속 상태 (Detached) : 영속성 상태에서 관리되다가 분리된 상태   영속 상태 -> 준영속 상태contains() : Entity 객체가 현재 영속성 콘텍스트에 저장되어 관리되는 상태인지 확인하는 메서드detach() : 특정 Entity를 영속성 콘텍스트 상태에서 분리시켜서 준영속성 상태로 만드는 메서드, 영속성 콘텍스트로 관리되고 있는 영속 상태일 때만 변경 감지가 일어난다.clear() : 컨텍스트를 완전 초기화 시킨 뒤, 영속성 콘텍스트에 있는 모든 Entity를 준영속 상태로 만든다. 하지만 영속성 콘텍스트의 틀은 유지해서 내용만 바뀐다. => 비우고 다시 사용cl..

Entity란 무엇일까? (2) - 영속성 콘텍스트의 기능

이전 내용과 더불어 영속성 콘텍스트의 기능에 대해 알아보자. 1차 캐시영속성 콘텍스트는 내부적으로 캐시 저장소를 가지고 있다.우리가 저장하는 Entity 객체들이 1차 캐시 (캐시 저장소)에 저장된다고 생각하면 된다.캐시 저장소는 Map 자료구조 형태로 되어있고, key에는 @Id로 매핑한 기본 키 value에는 해당 Entity 클래스의 객체를 저장한다. key에 저장한 식별자 값을 사용하여 Entity 객체를 구분하고 관리한다.만약 캐시 저장소에 조회하는 id가 존재하지 않는다면 저장 후에 조회를 한다.삭제할 Entity를 조회한 후, 캐시 저장소에 없다면 DB에 조회해서 저장한 뒤 Entity를 DELETED 상태로 만든 후 트랜잭션 commit 후 삭제된다.User user = new User()..

Entity란 무엇일까? (1)

Entity란 데이터베이스에서 테이블과 1:1로 매칭되는 객체를 의미한다. Spring Boot의 JPA 기술을 사용할 때 사용되며, JpaRepository를 상속받은 클래스에서 ORM을 사용할 수 있다.@Entitypublic class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false, unique = true) private String username; @Column(nullable = false) private String password; @Entity : 해당하는 클래스가 JPA가 관리할 수 있는 Entity 클래스로..