상속관계 매핑 관계형 데이터베이스에는 상속 관계가 없습니다. 객체의 상속 구조와 DB의 슈퍼타입 - 서브타입 관계를 매핑 슈퍼타입-서브타입 논리 모델을 물리 모델로 구현하는 3가지 방법 조인 전략 : 각각 테이블로 변환 단일 테이블 전략 : 통합 테이블로 변환 구현 클래스마다 테이블 전략 : 서브 타입 테이블로 변환 (비추천) 주요 어노테이션 @Inheritance(strategy=InheritanceType.XXX) JOINED : 조인 전략 SINGLE_TABLE : 단일 테이블 전략 TABLE_PER_CLASS : 구현 클래스마다 테이블 전략 슈퍼 타입 엔티티 @DiscriminatorColumn(name=’DTYPE’) 부모 클래스에 선언합니다. 하위 클래스를 구분하는 용도의 컬럼입니다. 관례는 ..
다대일 페치 조인 (Member - Team) 다대일 페치 조인을 하게 되면 데이터 중복이 발생하지 않습니다. String jpql = "select m from Member m join fetch m.team"; List members = em.createQuery(jpql, Member.class) .getResultList(); for (Member member : members) { //페치 조인으로 회원과 팀을 함께 조회해서 지연 로딩X System.out.println("username = " + member.getUsername() + ", " + "teamName = " + member.getTeam().name()); } // username = 회원1, teamname = 팀A // u..
목표 객체와 테이블 연관관계의 차이 이해 객체의 참조와 테이블의 외래 키 매핑 이해 단방향, 양방향 이해 다중성 : 다대일, 일대다, 다대다 이해 연관관계의 주인 연관관계가 필요한 이유 객체를 테이블에 맞추어 모델링 (연관관계가 없는 객체 / 사용 X) @Entity public class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String @Column(name = "TEAM_ID") private Long teamId; } @Entity public class Team { @Id @GeneratedValue private Long id; private String name; } 참조 대신에 외래 ..
AssertJ 란 테스트코드를 작성 시, JUnit 보다 더욱 테스트 코드의 가독성과 편의성을 높여 주는 라이브러리이다. 메소드 체이닝을 지원하기 때문에 좀 더 깔끔하고 읽기 쉬운 테스트 코드를 작성할 수 있습니다. 형식 : assertThat(테스트 타겟).메소드1().메소드2().메소드3()’ assertThat() 으로 시작한다. JUnit 5 어노테이션 JUnit5 내용 JUnit4 @Test 테스트 Method임을 선언함. @Test @DisplayName 테스트 클래스 또는 메소드의 사용자 정의 이름을 선언할 때 사용함. @BeforeEach 모든 테스트 실행 전에 실행할 테스트에 사용함. @Before @AfterEach 모든 테스트 실행 후에 실행한 테스트에 사용함. @After @Befo..
자바의 Enum 클래스는 연관된 상수들의 집합을 정의할 수 있는 데이터 유형입니다. Enum 클래스를 통해 관련 있는 상수들을 그룹으로 묶어 표현할 수 있고, 코드를 보다 읽기 쉽게 만들어 줍니다. Enum 특징 1. 열거형으로 선언된 순서에 따라 0부터 index 값을 가집니다. 2. 선언된 상수들은 모두 대문자로 이어야 합니다. 3. 열거형 변수들을 선언한 후 마지막에 세미콜론(;)을 찍지 않습니다. Enum 문법 문법 : public enum Day {MONDAY, TUESDAY, WEDNESDAY ...} 사용법 : Day.MONDAY Enum 메소드 values() : 열거형의 모든 상수를 배열에 담아 반환합니다. ordinal() : 정의된 순서를 정수로 반환합니다. valueOf() : 지정..
포워드 프록시(Forward Proxy)란포워드 프록시는 클라이언트 앞에 위치하여, 클라이언트가 서버로 요청을 보낼 때 포워드 프록시 서버가 해당 요청을 대신 받아서 서버에게 전달해 줍니다. 이후에 서버의 응답을 포워드 프록시가 대신 받아 클라이언트에게 전달해줍니다. 간단히, 사용자들은 서버에게 요청을 보내면 이 요청들은 포워드 프록시가 받아서 원하는 외부 서버에 전달해 주고 응답 값을 대신 받아 전달해 주는 역할을 합니다.장점온라인상에서 클라이언트 신원 보호가 가능하다.캐싱 및 사용자 기능을 향상시킨다. (어느 서버에 요청을 보내야 하는지 알 필요 없음)특정 콘텐츠에 대한 액세스 차단 (방화벽 : 포워드 프록시 앞에 방화벽을 두어 민감한 콘텐츠인 경우 사전에 차단할 수 있다) 리버스 프록시(Revers..
WAS(Web Application Server)를 이해하기 전에 예전부터 사용하고 있던 Web Server는 무엇이고, 어떤 기능을 수행했는지 파악한 다음에 WAS 서버가 왜 생기게 됐는지 순으로 정리하겠습니다. 웹서버란 HTTP 프로토콜을 기반으로 클라이언트가 웹 브라우저에서 어떠한 요청을 하면 그 요청을 받아 정적 컨텐츠를 제공하는 서버입니다. 💡 정적 컨텐츠란 단순 HTML 문서, CSS, 이미지, 파일 등 즉시 응답 가능한 컨텐츠입니다. 이때 웹 서버가 정적 컨텐츠가 아닌 동적 컨텐츠를 요청받으면 WAS에게 해당 요청을 넘겨주고, WAS에서 처리한 결과를 클라이언트에게 전달하는 역할도 해줍니다. 이러한 웹 서버에는 Apache, NginX 등이 있습니다. Web Server의 개념 소프트웨어와 ..