[정리] 기능별 개념 정리/JPA(16)
-
Persist vs Merge
Persist : create Merge : update JPA 에서 Save 는 경우에 따라 persist 또는 merge 를 호출하기도한다. Detached 객체를 save 할 경우 Save 시 merge (= update)를 하게된다. merge 의 결과로 update 쿼리가 발생한다. MyClass myClassB = myRepository.save(myClassA); myClassA 와 myClassB는 다른 객체이다. myClassA = myRepository.save(myClassA); 습관적으로 JPA save 한 객체는 반환된 객체를 사용하는 것이 좋다. Detached 객체 = 즉 한번이라도 영속화가 됬었을 법한 객체를 save 할 경우 = Id 가 있는 객체를 save 할 경우 htt..
2020.02.04 -
영속성 컨텍스트 정리 (2)
1. Query 어노테이션을 사용하여 만든 쿼리는 반드시 SQL 문을 날린다 (같은 파라미터 일지라도) 코드 @Repository public interface TeamRepository extends JpaRepository { Optional findById(long teamId); } TeamEntity teamEntity = teamRepository.findById(teamId).get(); teamEntity = teamRepository.findById(teamId).get(); teamEntity = teamRepository.findById(teamId).get(); teamEntity = teamRepository.findById(teamId).get(); teamEntity = tea..
2019.11.14 -
JPA : Query 발생 시점
@Data @Entity("member") public class MemberEntity{ @Id @GeneratedValue private long id; private String name; private int age; } public interface MemberRepository extends JpaRepository { } @RunWith(SpringRunner.class) @DataJpaTest @EnableAutoConfiguration @ContextConfiguration(classes = {MemberRepository.class}) public class MemberRepositoryTest { @Autowired private MemberRepository = memberRepos..
2019.06.17 -
JPA : Embeddable
출처 : https://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html create table Contact ( id integer not null, first varchar(255), last varchar(255), middle varchar(255), notes varchar(255), starred boolean not null, website varchar(255), primary key (id) ) @Data @Entity @Table("contact") public static class ContactEntity { @Id private Integer id; private Name name; pr..
2019.06.17 -
@EntityGraph : FetchType.EAGER 일 경우 Select 쿼리 줄이기
예시 @Data @Entity("member") public class MemberEntity{ @Id @GeneratedValue private long id; private String name; @OneToOne @JoinColumn("country_id") private CountryEntity country; } @Data @Entity("country") public class CountryEntity{ @Id @GeneratedValue private long id; private String name; } public interface MemberRepository extends JpaRepository { List findByName(String name); } MemberEntity m..
2019.06.15 -
JPA fetch 맵핑별 기본값
OneToOne : FetchType.EAGER 가 기본값 ManyToOne : FetchType.EAGER 가 기본값 OneToMany : FetchType.LAZY 가 기본값 ManyToMany : FetchType.LAZY 가 기본값
2019.06.14