본문 바로가기

전체 글

(51)
Entity Inheritance in Hibernate - (2) Single-Table 상속 전략 Overview Single-Table 상속 전략은 상속 관계에 있는 Entity를 모두 묶어서 하나의 Table로 만드는 방식이다. 이전에 사용한 예제를 Single-Table 상속전략을 사용했을 경우를 개념적으로 도식화 하면 과 같다. 최상위 Class인 Product Class가 모든 Child Class를 포함하는 상태로 Table이 만들어지며 다른 Entity Class와의 Relation도 이 Class에서 처리된다. 모든 상속 관계가 한 Table로 모이는 Diagram Single-Table 상속 전략이 가지는 장, 단점은 아래와 같다. 장점 상속 관계에 있는 Entity 관리 편의성과 높은 성능 다른 Entity들과의 Relation 설정 용이 단점 상속 관계에 있는 모든 Entity가 ..
Entity Inheritance in Hibernate - (1) MappedSuperClass 전략 ORM(Object-Relational Mapping), JPA(Java Persistence API), Hibernate 간단하게 3개에 대해 언급하자면... ORM : Class와 DB Table Mapping. 즉, 하나의 Class를 DB의 Table로 Mapping 해서 Code로 DB Table을 관리하고 Query할 수 있게 하는 기술이다. JPA : Java에서 ORM 기술을 표준화한 API 명세이다. Hibernate : JPA에서 정의한 API명세를 구현한 구현체이다. (Hibernate외에도 몇 가지 구현체가 더 있지만 최근에는 Hibernate가 defacto standard가 됨.) Inheritence in JPA Java의 Class가 가지는 특징 중에 하나는 '상속(Inher..
pgbench를 통한 Postgresql 성능 분석 pgbench란... pgbench는 PostgreSQL이 기본적으로 제공하는 Benchmark Tool이다. 기본적으로 Select, Insert, Update등의 command를 조합해서 simulate하고, 이를 통해 얻어지는 TPC-B라 불리는 초당 Transaction 횟수로 성능을 평가한다. 즉, 현재 설치되어 있는 HW 및 OS 환경에서 일정 Pattern의 Transaction을 수행해서 성능을 측정한다. DB와 연동하는 Application들의 특성 등은 고려하지 않는다는 단점이 있으나 사용 방법이 쉬워서 필자의 경우에는 postgreSQL을 처음 설치할 때 postgres.conf에 있는 몇몇 환경 변수 값을 정하는데 사용한다. 설치 예전에는 postgres-contrib라는 Packa..
알아두면 유용한 psql 명령어 정리 PSQL 보통 PostgreSQL을 설치할 때 Client Tool인 pgAdmin이 같이 설치되고, 대부분 GUI 환경에서 pgAdmin을 사용하기 때문에 PSQL의 존재조차 모를 때가 있다. (필자는 PostgreSQL 처음 사용했을 때 psql의 존재를 1년 정도는 몰랐었다.) 그러나 때때로 오직 Terminal로 DB 상태를 확인해야 할 상황이 생기게 되는데, 그 때 psql이 필요하고, 이 포스팅이 도움이 될 것이다. PSQL을 통한 PostgreSQL DB 접속 Linux에 PostgreSQL을 설치한 경우 아래의 경로에서 확인할 수 있으며 바로 실행이 가능하다. ... [root@localhost sedtest]# ls -la /usr/pgsql-11/bin/ total 10028 ... -..
Spring Boot Application을 Docker Image로 생성하기 - 3. jib plugin을 활용 + 배포 내용이 3편에 걸쳐 나누어져 있습니다. Spring Boot Application을 Docker Image로 생성하기 - 1. Docker file (with Jar) Spring Boot Application을 Docker Image로 생성하기 - 2. Docker Image Layer 활용 Spring Boot Application을 Docker Image로 생성하기 - 3. jib plugin을 활용 + 배포 Case 3. jib plugin을 활용해서 Image 생성 위에서 언급했던 방식이 Build해서 만들어진 jar(or war) file을 활용해서 Docker image를 만드는 방법인데, 별도의 Docker daemon 없이 gradle이나 maven plugin을 이용해서 Docker i..
Rest API에서 date type의 Parameter 처리 최근에 Rest API를 추가할 때 datetime type의 parameter를 처리하는 과정에서 살짝 고생을 했다. 그냥 String으로 받아 Parameter Validation과정에서 Convert해서 쓰면 될 문제였는데, 가끔 발동되는 오기로 인해 관련 내용을 파게 됐고 그 내용을 정리해 보았다. 실험 환경 Spring Boot v2.19 JDK 1.8 예제 코드 ... @RestController public class DateController { @PostMapping("/date") public ResponseEntity dateTest(@RequestParam("date") Date date) { SimpleDateFormat dateFormat = new SimpleDateFormat..
Spring Boot Application을 Docker Image로 생성하기 - 2. Docker Image Layer 활용 내용이 3편에 걸쳐 나누어져 있습니다. Spring Boot Application을 Docker Image로 생성하기 - 1. Docker file (with Jar) Spring Boot Application을 Docker Image로 생성하기 - 2. Docker Image Layer 활용 Spring Boot Application을 Docker Image로 생성하기 - 3. jib plugin을 활용 + 배포 Case 2. Layer를 세분화 해서 Image 생성 Docker image는 여러 개의 Layer로 나뉘어서 저장/관리되는데 기존 Image가 Update되더라고 변경되지 않는 Layer나 다른 Image들과 공유하는 Layer는 변경없이 그대로 다시 사용된다. 그런데 jar 파일을 기반으..
Spring Boot Application을 Docker Image로 생성하기 - 1. Docker file (with Jar) 이번 포스팅에서는 Spring Boot로 만들어진 Web Application을 Docker Image로 만들어서 docker hub에 push하는 과정을 정리해 보았다. 고맙게도 스프링 사이트에서 이 내용에 대해 정리를 잘 해주셨고(Link), 이 포스팅은 거기에 있는 내용 중에 개인적으로 필요한 사항 위주로 정리하면서 약간의 실무적인 내용과 개인의 삽질을 추가하였다. 내용이 길어 둘로 나누어 작성하였다. Spring Boot Application을 Docker Image로 생성하기 - 1. Docker file (with Jar) Spring Boot Application을 Docker Image로 생성하기 - 2. Docker Image Layer 활용 Spring Boot Application을 ..