본문 바로가기

전체 글

(51)
[디자인패턴] 퍼사드 패턴(Facade Pattern) 정의 Facade는 "건물의 정면"을 의미하는 단어로 어떤 소프트웨어의 다른 커다란 코드 부분에 대하여 간략화된 인터페이스를 제공해주는 디자인 패턴을 의미합니다. 퍼사드 객체는 복잡한 소프트웨어 바깥쪽의 코드가 라이브러리의 안쪽 코드에 의존하는 일을 감소시켜 주고, 복잡한 소프트웨어를 사용 할 수 있게 간단한 인터페이스를 제공해줍니다. 예시) 여러 클래스의 객체들을 복합적으로 사용해야 수행할 수 있는 작업들이 있다. 이러한 복잡한 작업들이 여러곳에서 이루어질 때, 복잡한 수행과정을 하나의 클래스의 메소드로 만들어 구현한다. 사용자로 하여금 복잡한 연관 관계를 알 필요가 없도록 구현부를 프랑스어로 '외벽' 을 뜻하는 Facade 뒤에 숨겨둔다. 즉, 복잡하고 반복되는 코드를 하나의 메소드로 만들어 재사용!..
[디자인패턴] 템플릿메소드(Template Method Pattern) 정의 알고리즘의 구조를 메소드에 정의하고, 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재정의 하는 패턴이다. 알고리즘이 단계별로 나누어 지거나, 같은 역할을 하는 메소드이지만 여러곳에서 다른형태로 사용이 필요한 경우 유용한 패턴이다. abstractClass : 부모 클래스에는 전반 과정을 수행하는 메인 메소드가 있다. 세부 메소드를 추상메소드로 갖는다. concreteClass : 자식클래스는 부모의 추상메소드를 상속받아 오버라이딩 구현한다. 예시) 전통약과를 만드는 과정은 3개의 과정을 순차적으로 진행하여야 한다. 1. 반죽을 만드는 과정 2. 반죽을 기름에 튀겨내는 과정 3. 시럽을 바르는 즙청 과정 이 세개의 과정을 어떻게 하느냐에 따라 다양한 약과를 만들 수 있다. => 부모 메소드가 ..
다양한 연관관계 매핑 #6 연관관계 매핑시 고려사항 3가지 다중성 단방향, 양방향 연관관계의 주인 다중성 다대일 : @ManyToOne 일대다 : @OneToMany 일대일 : @OneToOne 다대다 : @ManyToMany 단방향, 양방향 테이블 외래 키 하나로 양쪽 조인 가능 사실 방향이라는 개념이 없음 객체 참조용 필드가 있는 쪽으로만 참조 가능 한쪽만 참조하면 단방향 양쪽이 서로 참조하면 양방향 연관관계 주인 테이블은 외래 키 하나로 두 테이블아 연관관계를 맺음 객체 양방향 관계는 A -> B, B -> A 처럼 참조가 2군데 객체 양방향 관계는 참조가 2군데 있음. 둘중 테이블의 외래 키를 관리할 곳을 지정해야함 연관관계의 주인 : 외래 키를 관리하는 참조 주인의 반대편 : 외래 키에 영향을 주지 않음, 단순 조회만 가..
연관관계 매핑 기초 #5 연관관계 매핑 기초 객체의 참조와 테이블의 외래 키를 매핑할 수 있다. 방향 단방향, 양방향 다중성 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:N) 연관관계의 주인 객체 양방향 연관관계는 주인을 정해야한다. 예제 시나리오 회원과 팀이 있다. 회원은 하나의 팀에만 속한다. 회원과 팀은 대대일 관계이다. @Entity public class Member { @Id @GeneratedValue private Long id; @Column(name = "USERNAME") private String name; @Column(name = "TEAM_ID") private Long teamId; … } @Entity public class Team { @Id @GeneratedValue pri..
엔티티 매핑 #4 @Entity 속성 : name JPA에서 사용할 엔티티 이름을 지정한다. 기본값: 클래스 이름을 그댈 사용 같은 클래스 이름이 없으면 가급적 기본값을 사용한다. @Enity 적용 시 주의사항 기본 생성자는 필수. (파라미터가 없는 public 또는 protected 생성자) final 클래스, enum, interface, inner 클래스에는 사용할 수 없다. 저장할 필드에 final을 사용하면 안된다. @Table @Table은 엔티티와 매핑할 테이블 지정 속성 기능 기본값 name 매핑할 테이블 이름 엔티티 이름 사용 catalog 데이터베이스 catalog 매핑 schema 데이터베이스 schema 매핑 uniqueConstraints(DDL) DDL 생성 시 유니크 제약 조건 생성 데이터베이스..
영속성 관리 - 내부 동작 방식 #3 엔티티 매니저 팩토리와 엔티티 매니저 영속성 컨텍스트 "엔티티를 영구 저장하는 환경" 이라는 뜻. 영속성 컨텍스트는 논리적인 개념 눈에 보이지 않는다. 엔티티 매니저를 통해서 영속성 컨텍스트에 접근 엔티티의 생명주기 비영속 (new / transient) : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 영속 (managed) : 영속성 컨텍스트에 관리되는 상태 준영속 (detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제 (removed) : 삭제된 상태 비영속과 영속 준영속과 삭제 //회원 엔티티를 영속성 컨텍스트에서 분리, 준영속 상태 em.detach(member); //객체를 삭제한 상태(삭제) em.remove(member); 영속성 컨텍스트의 이점 1차 캐시 동일성(iden..
JPA 시작하기 #2
JPA 소개 #1 JPA? Java Persistence API 자바 진영의 ORM 기술 표준 ORM ? Object - Relational - Mapping(객체 관계 매핑) 객체는 객체대로 설계 관계형 데이터베이스는 관계형 데이터베이스대로 설계 ORM 프레임워크가 중간에서 매핑 대중적인 언어에는 대부분 ORM 기술이 존재 JPA는 애플리케이션과 JDBC사이에서 동작 JPA를 왜 사용하는가? SQL 중심적인 개발에서 객체 중심으로 개발 생산성 유지보수 패러다임의 불일치 해결 성능 데이터 접근 추상화와 베더 독립성 표준 생산성 - JPA와 CRUD 저장 : jpa.persist(member); 조회 : Member member = jpa.find(memberId); 수정 : member.setName("변경할 이름"); ..