본문 바로가기

분류 전체보기32

자바 ORM 표준 JPA 프로그래밍 - 엔티티와 테이블 생성 JPA 에서는 엔티티라는 개념을 사용한다. 이는 '데이터 모델링에 사용되는 객체' 라고 이해하면 된다. - 엔티티 선언 JPA 에서 엔티티를 사용할 때는 @Entity 어노테이션을 통해 해당 클래스를 엔티티로 설정할 수 있다. @Entity public class Team { @Id @GeneratedValue @Column(name = "TEAM_ID") private Long id; private String name; } 위의 코드에서 Team 이라는 클래스는 @Entity 어노테이션을 통해 '이 객체는 데이터 모델링에 사용되는 객체야' 라고 말해주는 것이다. 엔티티에는 Id 가 필요하다. Id 는 식별자로 테이블에서의 기본키를 매핑해주는 것이다. 또한 @GeneratedValue 어노테이션은 생성.. 2023. 2. 15.
상속(Inheritance)과 구성(Composition) 디자인 패턴을 학습하면서 구성이라는 단어를 마주했다. 처음에는 ~ has A 정도로 그저 이해하고 넘어갔었다. 하지만 읽으면 읽을수록 상속과 구성이라는 단어가 계속해서 번갈아서 언급되니 이 단어에 대한 정확한 이해가 있어야 문맥을 정확하게 이해할 수 있었다. - 상속의 장점? 먼저 우리가 상속을 사용하는 이유는 다양하다. 코드의 재사용, 변화에 대한 유연성 등 여러 장점들을 생각하고 사용하는데 실상은 상속을 정확하게 이해하고, 이를 바탕으로 적절하게 사용해야 이런 상속의 장점들을 발현시킬 수 있으며 그렇지 않은 경우 오히려 강한 결합을 가진 즉, 코드의 유연성을 해치게 된다. - 상속이란 상속은 부모 클래스(상위 클래스 혹은 슈퍼 클래스) 와 자식 클래스(하위 클래스) 관계를 만들어 자식 클래스는 부모클.. 2023. 2. 10.
자바 ORM 표준 JPA 프로그래밍 - Flush Flush flush 는 '변기물을 내리다, 물로 씻어내다' 라는 뜻을 가진다. JPA 에서 이 의미를 사용하며 쿼리들을 모아서 날리는 작업을 flush 라고 한다. JPA에는 영속성 컨텍스트라는 1차캐시 개념이 존재한다. 우리가 객체를 생성하고 엔티티 매니저를 통해 영속화 하면 해당 객체는 영속성 컨텍스트에 저장된다. 아래 코드를 보자. em.persist(memberA);//memberA 영속 em.persist(memberB);//memberB 영속 em.persist(memberC);//memberC 영속 em.persist(memberD);//memberD 영속 em.persist(memberE);//memberE 영속 위 상황에서 영속할 때마다 쿼리를 날린다고 생각하면 em.persist(me.. 2023. 2. 8.
디자인패턴 - 옵저버 패턴 (Observer Pattern) 1. 옵저버 패턴이란 - 옵저버 패턴은 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 1대다 (one-to-many) 의존성을 정의한다. - 디자인 원칙인 변경 가능성이 있는 부분과 그렇지 않은 부분을 분리하고, 구현보다는 인터페이스에 맞추어 프로그래밍하며, 상속보다는 구성을 활용하는 원칙을 준수한다. - 추가로 느슨한 결합을 사용하여 프로그램의 유연성이 매우 좋아진다. 느슨한 결합이란, 객체들의 상호작용은 가능하지만, 서로에 대해서 잘 모르는 관계를 이야기한다. 즉 주제는 옵저버의 구상 클래스가 무엇인지, 어떤 역할을 하는지에 대해 알 필요가 없으며 주제나 옵저버가 달라져도 각 주제 혹은 옵저버를 구현한다는 조건만 만족하면 수정이 자유롭다. 구.. 2023. 2. 6.