본문 바로가기
관리자

Programming-[Backend]

(394)
[링크] ERD 관계선 표기법, 의미 참조 1. https://mjn5027.tistory.com/43
[JPA기본] 10. 즉시/지연 로딩과 CASCADE 1. 즉시/지연 로딩 : FetchType-EAGER, LAZY FetchType.LAZY 특정 엔티티를 불러올때, 연관된 엔티티를 무조건 가져온다면 EAGER, 미리 가져오지 않는다면 LAZY FetchType으로 지정할 수 있다. 아래와 같이 Member 객체에서 연관관계를 갖는 Team 필드의 @ManyToOne에 fetch 속성을 걸어주면 Team 프록시를 초기화하지 않는 이상, Team 테이블에는 쿼리를 보내지 않는다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 @Entity @Getter @Setter public class Member { @Id @GeneratedValue private Long id; private String name..
[JPA기본] 9. 프록시 객체 1. 프록시 기초 프록시는 JPA의 실제 엔티티를 필요할때만 꺼내쓸 수 있도록 하는 가짜 객체이다. 실제 클래스를 상속받아서 만들어지며 겉모양이 같기 때문에 이론적으로는 사용자가 Proxy 객체를 그대로 써도 문제가 없다. 프록시 객체에는 아래와 같이 상속받은 엔티티 타입의 target이라는 필드값이 있다. 실제 데이터가 필요하면 이 target을 통해 id, name 등 원래 entity의 속성값을 조회한다. 아래 예제를 살펴보자. 아래와 같이 1:N의 관계로 연관지어진 Member와 Team 객체 관계에서 member 객체를 불러와서 SQL문을 확인해보자. src/main/java/com/example/jpamain/JpaMainApplication.java 1 2 3 4 5 6 7 8 9 10 11..
[JPA기본] 8. 연관, 상속관계 매핑 실습 : 테이블 -> 엔티티 환원 1. 테이블 설계도 이때까지 배운 내용을 바탕으로, 테이블 설계 내용에 따라 Entity를 직접 작성해본다. 테이블의 설계도만 보고 이때까지 배운 내용대로 Entity들을 작성할 수 있어야 한다. 실제로 그렇게 해보고, 안되는 부분이 있다면 아래 내용들을 참고한다. 강의에서 나온 테이블 설계도는 다음과 같다. 2. 단방향 연관관계 : ORDERS, MEMBER, DELIVERY Member와 Orders는 1:N의 관계이고, Orders와 Delivery는 1:1의 관계이다. Orders에서 Member를 여러 개 가지므로 Member_id를 FK로 갖는다. 그렇기 때문에 Orders가 연관관계의 주인이다. 단방향 연관관계로 설정된 이유는 (아마도) 비즈니스 로직상 Delivery 정보에서 Order 정..
[TIL][Thymeleaf] String null 처리 : #string.defaultString #strings의 메서드들을 사용하면 객체의 값이 null 일때 처리할 값을 지정할 수 있다. Elvis(?:) 문법을 써도 되지만, 여러 객체가 한 번에 표시될 때는 #strings의 메서드를 활용해야한다. 1 2 3 4 Colored by Color Scripter cs 이렇게 쓰면, 만약 4개의 값 중 세번째 값인 XxxEntity.attr.address.detail 값이 null일때는 , default로 빈 공백(' ')을 넣어준다. 참조 https://cizz3007.github.io/타임리프/syntax/thymeleaf/2018/04/10/thymeleaf2/
[TIL]자바 리스트 중복 항목만 추출 : indexOf, lastIndexOf, HashSet 활용 자바의 리스트에서 중복된 항목들만 뽑아내기 위해 indexOf, lastIndexOf, HashSet을 활용한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 @Test void overrodeTest() { List list = List.of("사자", "호랑이", "사자", "토끼", "거북이", "거북이", "사자"); HashSet hs = new HashSet(); for (String el : list) { if (list.indexOf(el) != list.lastIndexOf(el)) { hs.add(el); } } System.out.println("hs = " + hs); } Colored by Color Scripter cs 출력결과 원리 List.indexOf : 리스..
[패턴][TIL] HashSet으로 자바 List String 중복검사, equals, hashCode Override List 내부 모든 항목 중복 검사를 위한 패턴과 비교 List의 원소 내부에 공통으로 중복되는 필드값이 있는 경우 에러를 반환해야되는 상황을 생각해보자. 아래 코드와 같이 SchoolDto가 level과 code가 모두 같은 경우 에러를 던져야한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 public class SchoolService { public void checkOverrode()..
[JPA기본] 7. 상속관계 매핑 1. 상속관계 매핑 전략 엔티티 계층화와 테이블 생성 전략 상속관계 매핑은 아래 그림과 같이 두 엔티티 사이에 공통적인 속성이 있는 경우 엔티티를 상속관계로 만들어서 공통화하고, 독립적인 속성만 각 엔티티의 속성으로 두는 경우에 필요하다. 원래는 테이블의 스키마를 기준으로 엔티티를 생성하지만, 만약 이러한 계층화된 엔티티를 기준으로 테이블을 생성한다면, 3가지의 생성 전략을 적용할 수 있다. 1) 단일 테이블 전략(Single Table) : 1개 테이블에 모든 필드값 넣기 2) 클래스별 테이블 전략(Table per class) : 위 그림의 왼쪽과 같이 중복되는 항목 무시하기 3) 조인 테이블 전략(Joined) : 위 그림의 오른쪽과 같이 중복되는 항목만 따로 테이블화하기 2. 단일 테이블 전략 J..