본문 바로가기

DBMS || SQL_MAPPER5

JAVA enum <-> DB enum 바인딩 실패기 필요성 프로젝트 진행 중, 변할 일이 거의 없는 데이터들의 대해 DB insert를 어떻게 할 것이냐에 대한 회의가 있었다. 원랜 공통코드 들을 명세해서 테이블로 저장해두고, 프론트로 쏴서 foreach (value : list) 등의 방법으로 반복적으로 동적 그리기 용이하기 좋게 구상해서 만들었는데 성별, 연령대 같은 데이터는 왠만해선 범위 자체가 대격변이 발생하지 않는이상 불변에 가까운 데이터이기 때문에 이 데이터들은 있는 그대로 보관해도 좋지 않겠냐는 의견이 나왔다. 그렇다보니 DB 자체에 저장할때도 enum값으로 저장하면 좋겠다는 생각이 들었다. 즉, 클라이언트(프론트엔드)에서 gender : man 또는 woman 으로 보낸다면, enum을 활용하여 보여지는 텍스트는 man, woman이지만 실.. 2024. 1. 19.
암호화 테이블 / 복호화 view 세팅, 적용기 필요성 우리가 일반적으로 사용하는 모든 서비스, 플랫폼은 개인정보를 암호화를 하고있다. 개인정보 보호법 제 39조에 의하면 아래와 같은 내용을 확인 할 수 있다. 문서링크 그러므로 플랫폼을 개발하는 누구든 위의 내용을 준수해야한다. 계기 나는 불행인지 다행인지 관공서, 공공기관 관련 SI 개발ㆍ운영을 했었기 때문에 위의 대한 내용은 잘 알고있지만 직접적으로 내가 저런 부분까지의 DB 세팅을 할일이 없었다. 구인구직 플랫폼 운영을 할 때 DB 암/복호화 솔루션 'ㄴ' 의 신입사원이 플랫폼에 맞는 코드인지 확인조차 안하고 무지성 스크립트를 돌리고 커밋시켜 트리거, 함수가 다 깨진 대형사고를 한번 친 적이 있었다. 추궁을 하니 기존 담당자가 추노한다고 인수인계를 신입사원한테 대충 던지고 급하게 사라졌다해서.... 2024. 1. 10.
간단하게 알아보는 쿼리 실행계획의 중요성 이번 시간에는 같은 결과를 가져오더라도 쿼리 짜는 퀄리티에 따라 비용(cost)이 바뀌는 것에 대해 이야기 하고자 한다. 아주 기초적인 예시와 내용으로 작성 하였으므로 이해에 어려움이 발생하진 않을 것이라 본다. 위와 같은 사용자 정보를 담는 user_info 테이블이 있다고 가정을 하자. 이 테이블에는 더미데이터 회원정보가 1천건이 저장되어 있다. 내가 여기서 통계를 내기 위해 전체 회원수, 월 가입자 수, 6개월 이상 미접속자의 수3개를 조회하고자 한다. 쿼리 초보자의 입장에선 SELECT를 통해 세가지 값을 가져와야 한다는 것을 인지는 할텐데 문법상 select "column_name" from "table" 인 것을 생각하여 다음과 같이 조회를 했다고 가정해보자. 1 2 3 4 5 6 -- 전체 .. 2023. 11. 3.
JPA , mybatis 와의 차이 (수정 中) JPA의 관한 기초 정보를 정리하는 글. +2024.01.13 너무 겉핥기로 대충 익히고 정리했던 초창기의 글을 보니 틀린 내용이 꽤 많아 부끄럽다. 다행인점은 짧다면 짧고 길다면 긴 한달이란 시간 사이 올바른 내용으로 다시 이해했다는 것. 1. JPA(Java Persistent API) JPA는, ORM 관점으로 DB와의 데이터를 주고받기 위한 API이자 프레임워크이다. ORM을 활용할 수 있도록 해주는 Hibernate 기반으로 만들어졌으며, 이를 보다 쓰기 편하게 해주는 역할이다. Hibernate는 ORM을 구현해주는 다양한 프레임워크중 하나이다. 2.ORM(Object Relational Mapping) ORM이란 이름 그대로 DB의 데이터를 객체로 연결해준다는 의미로 쉽게 이야기 하자면 sq.. 2023. 10. 26.
'맞팔' 기능을 구현하려면 어떤 정보가 필요할까? kernel360 1주차를 보내며 상용 서비스의 대한 분석, 설계를 하는 과정을 거쳤다. 팀원들과 '인스타그램' 같은 sns 기능을 이야기 할 때, 상호간 팔로우를 했는지 정보를 db에 저장 하기위해 어떤 필드가 필요한지 정리를 하였었는데, 본인은 놀랍게도 수포자인데 불구하고 순간 머릿속으로 [ A 가 B,C,D,E 를 포함하고, B가 A,C,D,E 를 포함한다면 A와 B는 상호 상관관계에 있다. ] 명제가 생각나 '내가 누구를 팔로우 했는가?' 만 알면 될 것이라 떠올랐지만 정작 설명을 하려고 하니 말문이 막혀서 확실하게 맞는지 검증이 필요해 예시 데이터와 쿼리를 작성하여 확인을 하는 과정을 가졌다. 사용 툴, DBMS : 디비버 / MYSQL 8.0.33 64bit 1 2 3 4 5 6 7 8 9 1.. 2023. 10. 16.