나만의 개발 로그 | 고민 로그
23.02.01 TIL 본문
☑️ 엔티티 이름 vs 테이블 이름
도메인 모델의 이름은 코드 안에서, 테이블 이름은 DB·SQL 매퍼에서 사용
@Entity
@Table(name = "orders") // 실제 RDB 테이블명
public class Order { … } // JPQL · Querydsl 에서 쓰일 도메인 이름
| 구분 | 어디서 쓰나 | 왜 분리하나 |
| 클래스명 (Order) | JPQL, Querydsl, 단위 테스트 | 도메인 용어를 그대로 표현 → 가독성 ↑ |
| 테이블명 (orders) | JDBC, SQL 매퍼(MyBatis 등) | 예약어·네이밍 규칙(복수형) 충돌 방지 |
@Table 한 줄로 DB 네이밍 규칙을 따르면서도, 코드 쪽 도메인 용어 일관성을 유지할 수 있음!
☑️ @NoArgsConstructor(access = PROTECTED) 를 쓰는 이유
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Entity
public class User { … }
| 이점 | 설명 |
| JPA 프록시가 사용 | JPA가 리플렉션으로 객체를 만들 때 기본 생성자가 필요 |
| 외부 생성 차단 | protected 로 막아 두면 생성자 의도를 모르는 곳에서 new 할 수 없음 |
☑️ IntelliJ Live Template – “psvm”도 직접 만든다
- Settings → Live Template → Java
- + 클릭 → Abbreviation에다가 원하는 단축키 명 쓰고 내용 작성

반복 구문(try-with-resources, Builder 패턴 등) 을 템플릿으로 등록해 두면 코딩 속도가 체감될 만큼 빨라진다!
☑️ Docker로 PostgreSQL 1분 세팅
컨테이너 실행
docker run -d
-p 5432:5432
-e POSTGRES_USER=devuser
-e POSTGRES_PASSWORD=devpass
-e POSTGRES_DB=messenger
--name pg_local
postgres:16
| 옵션 | 의미 |
| -p 5432:5432 | 호스트 5432 ↔ 컨테이너 5432 포트 매핑 |
| -e POSTGRES_* | 초기 계정·DB 생성 |
| -d | 백그라운드(detached) 모드 |
| postgres:16 | 공식 이미지 태그 |
컨테이너 셸 접속
docker exec -it pg_local bash # 컨테이너 내부로
su - postgres # postgres 사용자 전환
psql -U devuser -d messenger # psql 클라이언트 접속
- \l : 데이터베이스 목록
- \dt : 테이블 목록
- \q : 종료
참고
- Docker Desktop에서 볼륨을 지정해 두면 데이터가 컨테이너 재시작에도 유지된다!
'TIL&WIL' 카테고리의 다른 글
| 23.02.06 TIL (0) | 2023.02.07 |
|---|---|
| 23.02.03 TIL (0) | 2023.02.04 |
| 23.01.31 TIL (0) | 2023.02.01 |
| 23.01.30 TIL (2) | 2023.01.31 |
| 23.01.26 TIL (0) | 2023.01.26 |
Comments