JPA Study 02
·
Programming
책을 읽고 배운 내용을 정리한다. MappedBy - 양방향 바인딩에 있어서 생각할 점은 어느 쪽에 MappedBy를 사용할 것이냐이다. - MappedBy는 주인이 아닌 엔티티의 변수에 할당해줘야 한다. - 주인이 아니라는 것은 DB 테이블로 생각했을 때 해당 엔티티와 맵핑되어있는 테이블에서 FK를 관리하지 않는다는 것과 같다. - 예를 들어 회원, 팀이 있으면 회원 엔티티에는 Team team이, 팀 엔티티에는 List members가 있을 것이다. - DB 테이블로 상상해서 생각해보면 JOIN을 고려했을 때 테이블 모델링을 하면 TEAM_ID라는 FK는 멤버 테이블에 있는 게 일반적으로 생각할 수 있는 모습이다. - 그래서 일반적으로 @ManyToOne을 가지고 있는 엔티티는 항상 연관관계의 주인이..
JPA Study 01
·
Programming
책을 읽고 배운 내용을 정리한다. GenerationType.IDENTITY - 엔티티가 영속 상태가 되려면 식별자가 반드시 필요하다. - 그런데 이 생성 전략은 엔티티가 데이터베이스에 저장이 되어야 식별자가 생긴다. - 그래서 em.persist()를 직접 호출하거나 내부에서 호출하는 즉시 삽입 SQL 작업이 수행된다. - 즉 트랜잭션을 지원하는 쓰기 지연이 동작하지 않는다. - 생각해보면 당연한 게 영속 상태에 있으려면 식별자가 있어야 하는데 데이터베이스에 삽입하기 전에는 식별자가 존재하지 않는다. - 그러니깐 식별자를 만들어주기 위해서 삽입 SQL이 지연되지 않고 바로 수행되어 식별자를 얻은 엔티티가 영속 상태가 되는 것 같다. 대리 키를 권장한다. - PK에는 대리 키를 권장한다. - 대리 키는 ..
DB 예약어(MySQL, MariaDB)
·
Programming
MySQL MySQL 예약어 - 제타위키 다음 문자열 포함... zetawiki.com MariaDB MariaDB - 예약어 - 다음은 MariaDB의 모든 예약어 목록입니다. 예약어 는 인용 부호가 없으면 식별자 다음은 MariaDB의 모든 예약어 목록입니다. 예약어 는 인용 부호가 없으면 식별자 로 사용할 수 없습니다 . 각 버전의 예약어 목록은 keyword 규칙 sql/sql_yacc.yy 또는 keyword 규칙에 포함 된 keyword_sp 규 runebook.dev JPA 뿐만 아니라 DDL을 사용할 때 DB에서 사용하는 예약어, 혹은 시스템 관리용으로 생성되는 테이블(USER 등)을 Table, Column 이름으로 사용할 경우 에러가 발생한다. 혹시 이상한 곳에서 안 되는 것 같을 땐 ..
Spring Study 04
·
Programming
온라인 강의를 듣고 배운 점들을 기록한다. ServiceResult - 서비스 단의 결과물도 하나의 모델에 반환하는 식으로 코드를 작성한다. - 서비스단 코드가 간결해지는 효과도 있고, 가독성도 좋아진다. - ResponseResult라는 모델을 만들어서 결과를 반환하게 하는 것과 비슷한 맥락 같다. - 이렇게 Model을 만들어서 따로 관리해주면 각 코드가 실제로 해야 하는 일에 집중할 수 있는 코드가 된다고 한다. JpaResultMapper // https://mvnrepository.com/artifact/ch.simas.qlrm/qlrm implementation group: 'ch.simas.qlrm', name: 'qlrm', version: '1.7.1' - Native Query 결과인 ..
Spring Study 03
·
Programming
온라인 강의를 듣고 배운 점들을 기록한다. Custom ResponseResult - HTTP 헤더를 이용해서 정보를 표현하는 것은 굉장히 제한적이다. - 그래서 억지로 HTTP 헤더를 이용해 결과를 표현하는 것보단, Body에 따로 헤더 역할을 하는 객체를 사용해서 정보를 표현하는 방법이 좋다. - 그러니깐 Body에 내가 만든 헤더를 넣고 그 안에 정보(성공, 실패, 기타 로그 등)를 넣고, 반환해야 할 정보는 따로 바디 객체 안에 넣어서 반환한다. - 실제로 공공 데이터 API를 보면 반환 정보 스펙이 비슷하다. 00 NORMAL SERVICE. ... - 이런 식으로 Body에 모두 표현한다. - 클라이언트 입장에서도 이런 방법이 괜찮다고 보는 게, 무조건 서버에서 HTTP 상태 에러를 보내지 않..
Docker 03
·
Programming
어떻게 컨테이너의 변경 사항 및 데이터를 저장할 수 있을까? - 컨테이너는 하나의 프로세스라고 생각할 수 있다. - 프로세스가 완벽히 종료되어 사라지면 프로세스의 데이터도 같이 사라진다. - 이렇게 컨테이너 내부에서 생성되거나 변경된 파일에 대한 데이터를 관리해야 하는 니즈가 있다. - Docker는 Container Layer의 문제점을 개선한 Docker Volumne이라는 기술로 이것을 해결했다. R/W Container Layer - 컨테이너 내에서 생성/변경된 모든 파일을 Read-Write 가능한 Container Layer에 저장한다. - Docker는 Copy-on-Write 방식으로 변경 사항을 관리한다. - 컨테이너는 이미지의 연속된 층인데 컨테이너 자체에서 관리하는 층(R/W laye..