목록JPA (5)
DevKim
[ 벌크성 수정 쿼리 ] - 모든 멤버의 나이를 1씩 증가시켜줘 ! 할때 쿼리 한번으로 쭉 1씩 더해주는게 효율적일 때 벌크연산을 한다. ※ 주의 ※ 벌크성 수정,삭제 쿼리는 @Modifying 어노테이션을 꼭 넣어주어야하고, 만약 벌크 쿼리를 날린 후, 다시 조회해야한다면 꼭!! 영속성 컨텍스트를 초기화 해주어야한다. ** 벌크 연산은 영속성 컨텍스트를 무시하고 직빵으로 DB에 반영하기 때문에, 영속성 컨텍스트에 있는 엔티티의 상태와 DB에 있는 엔티티의 상태가 달라질 수 있다. ** ※ 권장 방안 ※ 1. 영속성 컨텍스트를 clear해준 후 엔티티가 없는 상태에서 벌크 연산을 먼저 수행한다. 2. 부득이하게 영속성 컨텍스트에 엔티티가 있으면, 벌크 연산 직후 영속성 컨텍스트를 초기화한다. -> @Mo..
1. 객체와 테이블 매핑: @Entity,@Table 2. 필드와 컬럼 매핑: @Column 3. 기본 키 매핑: @Id 이 세가지에 대해 정리해보려고한다. 프로젝트 할 때 기계적으로 사용했던 애들인데, 깊게 생각해볼 시간이 없었던 것 같다. [ 객체와 테이블 매핑 ] 1. @Entity - @Entity가 붙은 클래스는 JPA가 관리하는 엔티티이다. * 주의 * - 기본 생성자 필수 - final,enum,interface,inner 클래스 사용 X * 속성 * (1) name => 헷갈리니까 웬만하면 기본값으로 그냥 클래스 이름을 그대로 사용하는게 좋지만, 만약 다른 패키지에 같은 클래스명이 있는데 그게 또 JPA에 매핑된 경우에, name을 지정하여 JPA가 구분할 수 있게 지정할 수 있다. 2. ..
[ 엔티티의 생명주기 ] 1. 비영속 (new/transient) - 비영속은 말 그대로, 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태이다. = 그냥 객체만 생성했을 때 - JPA와 관계 X 2. 영속 (managed) - 영속 상태가 되어 관리되어지는 상태를 이야기한다. em.persist( ) 3. 준영속 (detached) - 영속 상태였던 애를 , 영속성 컨텍스트에서 분리한 상태 => 분리한 후에 commit을 해도 update 쿼리가 나가지 않는다. em.detach( ) ****************************** 참고 ******************************** 준영속 상태로 만드는 방법은 직접 쓸 일은 없고 원리만 이해하면 된다! 1> 특정 엔티티만 준영속 상태..
[ Entity Manager & Factory ] 영속성 컨텍스트에 들어가기 전에, 엔티티 매니저 팩토리와 엔티티 매니저 동작과정을 간단하게 정리해보자 1.고객의 요청이 올때마다 팩토리가 EntityManager을 생성하고 2. EntityManager은 내부적으로 데이터 connection을 사용해서 DB를 사용하게된다. [ 영속성 컨텍스트란? ] "엔티티를 영구 저장하는 환경"이라는 뜻이다. -> DB에 저장하는게 아니라, entity를 영속성 context에 저장한다는 뜻 -> EntityManager.persist(entity); 영속성 컨텍스트는 논리적인 개념이기에 당연히 눈에 보이지 않는다. 엔티티매니저를 통해 영속성 컨텍스트에 접근한다. 풀어서 이해해보면, 엔티티 매니저가 생성될 때 그 안..
docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.repositories Spring Data JPA - Reference Documentation Example 109. Using @Transactional at query methods @Transactional(readOnly = true) public interface UserRepository extends JpaRepository { List findByLastname(String lastname); @Modifying @Transactional @Query("delete from User u where u.active = false") v docs.spring.io 공식 홈에 들..