1. 엔티티영구 도메인 객체. 즉, 도메인을 표현할 수 있는 객체라는 것이다.=> 엔티티 클래스는 최상위 클래스여야하거나, static inner 클래스이어야 한다.(enum, record, interface면 안됌)=> public, protected 접근제한자를 가진 기본 생성자가 있어야 한다.(런타임에 리플렉션을 사용한 객체)=> 엔티티의 필드는 final이면 안된다.=> 엔티티의 필드는 무조건 getter나 setter 등의 다른 메서드를 통해 접근해야한다. entitiy.필드 이런식으로 접근하면 안된다. 1-1. 리플렉션과 엔티티 값 설정=> 상황: em.find를 해온 상태이다. ResultSet이 있겠다.Constructor constructor = Member.class.getDeclare..
jpa 개념
@GeneratedValue(strategy = GenerationType.IDENTITY)mysql에서 위의 id값 전략을 사용 시List를 saveAll 시 bulk insert가 되는 것이 아닌 단일 insert가 됨을 확인함 IDENTITY의 동작-> Hibernate의 insert 쿼리-> mysql은 AUTO_INCREMENT를 사용해 ID를 생성, 저장-> Hibernate는 mysql에서 생성된 ID를 가져옴.(LAST_INSERT_ID())-> 즉, ID를 조회하기 위해 db에 요청을 보냄-> 엔티티에 저장 SEQUENCE의 동작-> DB는 SEQUENCE를 설정하여 하나의 테이블에 둠-> SEQUENCE는 다음 insert 시 DB수준에서 ID값을 반환하여 설정함-> Hibernate는..

JPA는 객체를 통해 데이터베이스와 상호작용한다. 위의 코드를 보면 우리는 EntityManager를 통해 1. 객체를 등록 -> 쿼리를 통해 데이터 베이스에 저장 2. 수정 -> 수정된 값을 무언가? 가 알아서 읽어서 데이터베이스에 쿼리를 통해 저장 3. 한 건 조회 -> Member.class 중 특정 id를 조회 하였다. 이렇게 jpa에서는 무언가?를 통해 등록, 수정, 조회 등 데이터베이스와 상호작용을 할 수 있었다. 그 무언가에 대하여 알아보자. 1. 무언가란 무엇인가? 이것은 바로 영속성 컨텍스트라는 것이다. 영속성 컨텍스트 영속성 컨텍스트란 엔티티(객체)를 저장할 수 있는 환경이다. 즉, 로직을 통해 객체 등록 로직 -> 영속성 컨텍스트에 저장 + 객체 정보를 데이터 베이스에 저장하는 쿼리 ..

package jpabook.start; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity //Entity는 이 클래스를 테이블과 매핑한다고 알려준다.->엔티티 클래스 @Table(name="MEMBER") // public class Member{ @Id @Column(name="ID") private String id; @Column(name="NAME") private String username; //매핑 정보가 없는 필드 private Integer age; //Getter, setter public Str..