| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 코딩부트캠프후기
- java알고리즘문제풀이
- java set 출력
- 격파르타장점
- 인터프린터언어
- javaJRE
- java map
- sqld자격증합격
- 프로그래머스제일작은수
- java list 출력
- java map 저장
- 격파르타후기
- javaJVM
- java참조자료형
- java list 저장
- java최솟값구하기
- 격파르타비전공자
- java 자료구조 활용
- java기본자료형
- 비전공자sqld
- 격파르타합격후기
- java map 출력
- 컴파일
- 프로그래머스
- 노베이스부트캠프
- 작은수제거하기
- java알고리즘
- java set 저장
- 항해15기
- 항해99후기
- Today
- Total
목록분류 전체보기 (259)
코딩과 결혼합니다
이전에 아키텍처 패턴에 대한 질문을 받았었다. 난 이 개념에 대해 모르고 있어 알고 있는 디자인 패턴을 설명하는 부끄러운 실수를 했었다. 강의를 들으며 그때 물어봤던 게 이 패턴이었구나 깨닫는다. 오늘도 새로운 지식을 습득하며 한층 성장한다! 디자인 패턴 소프트웨어 설계 시 특정 맥락에서 자주 발생하는 문제들을 효과적으로 해결하기 위한 방법 생성 패턴, 구조 패턴, 행동 패턴 등으로 분류할 수 있다. https://refactoring.guru/ko/design-patterns 디자인 패턴들 refactoring.guru 아키텍처 패턴 주어진 상황에서의 소프트웨어 아키텍처에서 일반적으로 발생하는 문제점들에 대한 일반화되고 재사용 가능한 솔루션이다. 아키텍처 패턴은 소프트웨어 디자인 패턴과 유사하지만 더 ..
객체 지향 프로그래밍에서는 클래스 간의 상속 관계를 통해 상위클래스와 하위 클래스 간의 관계를 표현한다. 하지만 관계형 데이터베이스는 상속 관계의 개념이 존재하지 않는다. 대신 슈퍼타입 서브타입 관계라는 모델링 기법을 사용하면 객체 상속과 유사하게 구성할 수 있다. 상속관계 매핑 객체 지향 프로그래밍에서 상속 관계에 있는 클래스들을 데이터베이스 테이블과 매핑하는 방법 논리 모델을 실제 물리 모델로 구현하는 방법이다. 1. 단일 테이블 전략 상속 계층 구조에 있는 모든 클래스들을 한 개의 테이블에 매핑한다. 테이블에는 부모 클래스와 자식 클래스의 모든 속성들을 포함한다. 조인이 필요 없어 일반적으로 조회 성능이 빠르다. ( 조회 쿼리가 단순함) 자식 클래스의 속성들은 NULL값을 허용해야 한다. 단일 테이..
엔티티에는 가급적 Setter를 사용하지 않는다. 캡슐화와 정보 은닉 - 세터를 제공하면 외부에서 엔티티의 상태를 직접 변경할 수 있다. 불변성 유지 - 상태를 변경할 수 있기 때문에 불변성을 유지하기 어렵다. 부작용 최소화 - 세터는 상태 변경 외에도 다른 동작을 수행할 수 있다. 이는 예기치 않은 부작용을 초래할 수 있으며, 코드의 복잡성을 증가시킬 수 있다. 세터를 대체하는 방법 일반적으로는 생성자를 통해 초기 상태를 설정하고, 필요에 따라 내부 메서드를 사용하여 상태를 변경할 수 있다. 모든 연관관계는 지연로딩으로 설정한다. 즉시로딩(EAGER)은 예측이 어렵고, 어떤 SQL이 실행될지 추적하기 어렵다. 특히 JPQL을 실행할 때 N+1 문제가 자주 발생한다. 실무에서 모든 연관관계는 지연로딩(L..
기본키를 맵핑하는 방법으로는 크게 3가지가 있다. 1. 단일 키 맵핑 한 개의 컬럼만을 기본키로 사용하는 방법. @Id @Entity public class Member { @Id private String id; // 나머지 필드들... } // 엔티티 사용 예시 Member member = new Member(); member.setId("myId"); // 직접 아이디 할당 entityManager.persist(member); 개발자가 직접 기본키를 할당하는 방식이다. 이 방식은 기본키 값을 애플리케이션 로직에서 제어해야 할 때 주로 사용한다. 특정 규칙에 따라 기본키를 생성하거나, 사용자가 직접 아이디를 입력하는 경우 등에 유용하다. 그러나 직접 관리를 해야 하므로 코드가 복잡해질 수 있다. (..
JPA 자바에서 데이터베이스와의 상호 작용을 담당하는 ORM 프레임 워크이다. JPA를 사용하면 개발자는 데이터베이스에서 직접 SQL을 작성하거나 실행하는 대신, 자바 객체와 데이터베이스 테이블 사이의 매핑을 정의할 수 있다. 데이터베이스 스키마 자동 생성 JPA의 매핑을 기반으로 데이터베이스 스키마를 자동으로 생성해 주는 것으로 주요 옵션 설정에는 create, update, validate, none 등이 있다. 주의해야 할 점 create (개발초기) 애플리케이션을 실행할 때마다 기존 테이블을 삭제하고 새로운 테이블 생성 update (개발초기, 테스트서버) 애플리케이션을 실행할 때마다 데이터베이스 스키마를 자바 엔티티와 동기화한다. 기존 데티어 유지, 필요한 테이블이나 컬럼 생성 validate ..
엔티티 매니저 DB와의 상호작용을 담당하는 핵심 컴포넌트. 영속성 컨텍스트를 관리하며, 엔티티의 생성, 수정, 삭제, 조회 등의 작업을 처리한다. 영속성 컨텍스트 엔티티의 상태를 관리하는 공간. 영속성 컨텍스트는 엔티티 매니저를 통해 접근하며, 엔티티의 영속성을 보장하고 엔티티의 변경을 추적한다. 엔티티 매니저를 생성하면 그 안에 1대1로 영속성 컨텍스트가 생성된다. 엔티티의 생명주기 비영속 : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 영속 : 영속성 컨텍스트에 관리되는 상태 준영속 : 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제 : 삭제된 상태 //엔티티를 생성한 상태(비영속) Member member = new Member(); member.setId("member1"); member.se..
보호되어 있는 글입니다.
개발자가 직접 객체를 생성하고 관리하는 것에는 여러 가지 불편함을 초래할 수 있다. 첫 번째로 코드 간의 강한 결합성을 가지게 되어, 하나의 변화가 전체적인 코드 변경을 요구하는 경우가 많아진다. 예를 들어 A클래스가 B클래스를 사용하는데, 이 클래스를 직접 new 연산자를 통해 생성한다면, B클래스가 변경되면 A클래스도 함께 변경해야 한다. 이는 유지보수를 어렵게 만든다. 두 번째는 테스트가 어려워질 수 있다. 테스트를 위해 실제 객체를 생성하거나, 테스트를 위한 별도의 코드를 작성해야 할 수도 있다. 이는 테스트의 복잡성을 증가시키며, 효율성을 저하시킬 수 있다. 세 번째는 DI를 사용하면, 필요에 따라 다양한 객체를 주입받아 사용할 수 있다. 그러나 직접 객체를 생성하면, 해당 객체만을 사용해야 하..