반응형 개발111 [Java] Arrays.asList / 특징 / 배열을 List 컬렉션으로 바꾸기 자바 컬렉션에는 유용한 API들이 많이 있다 배열을 사용하는 것보다 자바 컬렉션 API를 사용하는 것이 편할 때 배열을 List로 변경해서 사용하면 편리하다 1. 예제 코드(배열->List) String[] stringArr = {"A","B","C"}; List stringList = Arrays.asList(stringArr); 2. Arrays.asList 특징 - Arrays.asList를 이용하면 고정된 사이즈의 리스트로 반환 -> 추가,삭제 불가 new ArrayList() 로 새로운 리스트를 생성하면 추가, 삭제 가능 String[] stringArr = {"A","B","C"}; List stringList = new ArrayList(Arrays.asList(stringArr)); - R.. 2022. 4. 13. [JPA] JPQL fetch join / 연관된 entity 한번에 select / distinct로 엔티티 중복 제거 / fetch join 페이징 안 될 때 @BatchSize 설정 fetch join을 설명하기전에 fetch type에 대해 복습을 해보자! # FetchType @ManyToOne, @OneToOne FetchType이 기본이 EAGER다 - FetchType.EAGER entity를 조회할 때 연관된 entity도 같이 조회해온다 이 경우 연관된 entity까지 select하는 쿼리가 나가야 하므로 성능이 좋지 않다 ex. member entity 조회 시 team entity까지 select 하므로 2번의 select 쿼리가 나간다 그래서 성능을 위해 모든 엔티티의 연관관계의 FetchType은 LAZY로 설정해두는 것이 좋다 - FetchType.LAZY 조회한 엔티티와 연관된 엔티티는 실제 사용 시에 조회해온다 ex. member 조회 -> member만 s.. 2022. 4. 12. [JPA] Hibernate Query Language(HQL) Projection / 하이버네이트 쿼리 언어 프로젝션 조회 / 특정 컬럼만 조회 / 예문 하이버네이트쿼리(hql)로 조회를 해올 때 엔티티(전체 컬럼)조회와 특정 컬럼만 조회해오는 방법!! # 엔티티 조회 entityManager.createQuery 로 select 를 해올 때 엔티티 기준으로 조회해오는 것은 쉽다 // Member 엔티티 조회 List entityList = entityManager.createQuery("select m from Member m", Member.class).getResultList(); // Member의 Team 엔티티 조회 List teamEntityList = entityManager.createQuery("select m.team from Member m", Member.class).getResultList(); List teamEntityList.. 2022. 4. 11. [Java] eqauls, hashCode 구현 시 getter 를 이용하자! eqauls, hashCode 구현 시 getter 를 이용하는 것이 좋다 => 객체에 직접 접근해서 비교하도록 구현한다면 , 프록시 객체의 경우 제대로 비교를 할 수 없다! (프록시 네 이놈 @_@) => 사실 equals, hashCode가 아니어도 getter를 사용하는 것이 좋다 [인텔리제이 Generate 이용하여 구현하는 방법] 1. command + n 으로 Generate 메뉴 열은 후 equals() and hashCode() 클릭 2. Use getters during code generation 선택 후 Next next next~ 3. 인텔리제이가 만들어준 코드! @Override public boolean equals(Object o) { if (this == o) return t.. 2022. 4. 8. [JPA] 연관관계 영속성 전이 CASCADE # CASCADE - 부모 엔티티에서 자식 엔티티로 상태를 전이하는 것 ex. 부모 엔티티 저장할 때 자식 엔티티도 함께 저장, 게시글과 첨부파일 - Parent와 Child가 라이프사이클이 동일할 때, Child를 소유하는 Parent가 하나일 때 사용하는 것이 좋음 # CascadeType ALL - 엔티티의 모든 상태 전이 PERSIST - 엔티티 persiste(영속) 전이 REMOVE - 삭제 전이 MERGE - merge 전이 REFRESH - refresh 전이 DETACH - detach 전이 [Hibernate ORM 6.0.0 User Guide 예제 코드] @Entity public class Person { @Id private Long id; private String name; .. 2022. 4. 7. [JPA] 지연 로딩 LAZY , 즉시 로딩 EAGER # 지연 로딩 가급적 지연 로딩 사용! 연관된 엔티티를 프록시 객체로 가져옴 실제 사용할 때 프록시 초기화(디비에서 조회해서 가져옴) @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "TEAM_ID") private Team team; # 즉시 로딩 주로 연관된 엔티티를 함께 조회해서 사용할 때 사용 조인 쿼리로 조회 ★@ManyToOne, @OneToOne => 기본이 즉시로딩이므로 Lazy로 설정해줘야함★ @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "TEAM_ID") private Team team; ★즉시 로딩은 JPQL에서 N+1 문제 일으킴★ JPQL은 SQL로 번역해서 실행함 (최적화X) -.. 2022. 4. 6. 이전 1 2 3 4 5 6 7 ··· 19 다음