전체 글

# Konkuk Univ. CSE # 일상, 개발 블로그 # 2021.05.15 ~
Backend/Spring

[JPA] 복합 기본키, @IdClass vs @EmbeddedId

개요 졸업프로젝트에서 사용자가 다른 사용자의 산책기록을 보고 좋아요를 클릭하는 과정이 필요하다. 좋아요 테이블을 생성하던 중 복합 기본키를 생성하는 것이 필요해짐. 좋아요 테이블의 경우 User의 PK와 산책 기록의 PK 두 컬럼으로 이루어져 있다. 평소같았으면, PK를 추가했겠지만, 식별관계로 만들면서 PK가 따로 존재하지 않는다. 이 과정을 JPA로 어떻게 매핑하는지 확인해보자 복합 기본키를 생성하는 방법 2가지 2가지 방법의 공통점 두 방법 모두 Serializable 인터페이스를 구현하여 키 클래스를 생성해야 한다. hashCode(), equals() 두개의 메소드가 오버라이딩해야 한다. 기본 생성자가 필요하다. public 접근제어자 설정이 필요하다. @NoArgsConstructor @Equ..

카테고리 없음

[JAVA] default 메소드에 대하여(모던 자바 인 액션)

자바 인터페이스 자바 인터페이스를 통해 구현하는 클래스는 인터페이스에서 정의하는 모든 메서드 구현을 제공하거나 슈퍼클래스의 구현을 상속 받아야 한다. 평소에는 이 규칙을 지키는 데 아무 문제가 없지만, 라이브러리 설계자 입장에서 인터페이스에 새로운 메서드를 추가하는 등 인터페이스를 변경하게되면 문제가 발생한다.(바이너리 호환성은 유지) 바이너리 호환성? 새로 추가된 메서드를 호출하지만 않으면 새로운 메서드 구현이 없어도 기존 클래스 파일 구현이 잘 동작한다는 의미. 바이너리 실행에는 인증, 준비, 해석 등의 과정이 포함 됨.그 외 호환성 소스 호환성 코드를 고쳐도 기존 프로그램을 성공적으로 재컴파일할 수 있음을 의미 인터페이스에 메서드 추가하는건 소스 호환성을 만족시키지 않는다. 코드를 수정해야하기 때문..

Backend/JAVA

[JAVA] 동작 파라미터화에 대하여(모던 자바 인 액션)

0. 개요 사용자의 요구사항은 시시각각 변함 그에 맞게 엔지니어링을 꾸준히 변화해야 하는데, 비용을 최소화하면 좋음 동작 파라미터화를 통해 자주 바뀌는 요구사항에 대해 대응할 수 있도록 함 메소드의 인수로 코드 블록을 전달함으로써 ‘동작’ 자체를 인수로 전달할 수 있음. 리스트를 예로 들면, 아래처럼 진행 가능함 리스트의 모든 요소에 대해서 ‘어떤 동작’을 수행 리스트 관련 작업을 끝낸 다음 ‘어떤 다른 동작’ 수행 에러가 발생하면 ‘정해진 어떤 동작’을 수행 1. 변화하는 요구사항에 대응 예컨데, “필터링”하는 작업에서 기준이 달라지는 경우가 있다. 현재는 녹색사과만 선택(필터링)하고 있다. 만약, 빨간사과도 필터링하고자 하면 어떻게 고칠까?? public static List filterRedAppl..

ETC

설을 앞두고 쓰는 2023년 회고와 2024년 계획

매우 늦은 글쓰기 회고글을 쓰고 싶었지만 항상 그랬듯(?) 미루고 미루다가 설이 지나기 전 드디어 써본다. (물론, 다른 공부하기 싫어서 그런것도 있다 하하) 2023년은 정말 다사다난하고 정신없던 한 해여서 어떻게 정리해야 할지 모르겠다. 굳이 나눠보자면 휴학을 기점으로 크게 상반기와 하반기로 나눌 수 있을거 같다. 2023년 상반기 상반기엔 크게 두가지 이슈가 있었다. 하나는 동아리 회장, 하나는 KB IT아카데미이다. 백투더 3학년... 나는 2022년 처음으로 IT 동아리 활동을 했다. 지금와서 동아리 활동이 만족스러웠나? 생각하면 100%만족했다고 할 수는 없지만, 분명 내 대학생활의 큰 변환점이 된건 사실이다. 군 전역 후 3학년 복학하고 적응하기에 벅찼다. 특히, 3-1에는 코로나로 인해 많..

[Book]/Effective Java

2. 객체 생성과 파괴

개요 2장은 객체의 생성과 파괴에 대해 다룸 객체를 만들어야 할 때와 만들지 말아야 할 때를 구분 올바른 객체 생성 방법 불필요한 생성을 피하는 방법 제때 파괴됨을 보장하고 파괴 전에 수행해야 할 정리 작업을 관리하는 요령 1. 생성자 대신 정적 팩터리 메서드를 고려하라 일반적으로 클래스의 인스턴스를 얻는 전통적인 수단은 public 생성자이다. 클래스는 생성자와 별개로 정적 팩터리 메서드를 제공할 수 있다. JDBC같은 경우가 대표적인 예시이다. 장점 이름을 가질 수 있다. 생성자에 넘기는 매개 변수와 생성자 자체 만으로는 반환될 객체의 특성을 설명하지 못한다. 하지만, 정적 팩터리는 이름만 잘 지으면 반환될 객체의 특성을 쉽게 묘사할 수 있다. 호출될 때마다 인스턴스를 새로 생성하지 않아도 된다.반복..

ETC

KB IT's Your Life 4기 지원 후기

이번 여름에 7월부터 9월까지 3달간 진행했던 교육과정에 대해서 후기를 드디어.. 남겨본다. 매일매일 미루고 미루다가 하나은행에서도 비슷한게 보여서 생각난 김에 바로 적는다! 1. 지원 과정 멀티캠퍼스 event.multicampus.com 어쩌다 접했는지는 기억이 나지 않는다. 아마 인스타 광고같은거 였던거 같은데, 참 귀신같다. 아무튼 들어가봤는데, 일단 금융권에서는 리드기업인 KB에서 진행하고, 멀티캠퍼스라는 든든한 교육 단체가 붙어있어서 사실 무조건 써야겠다 했다. 게다가 졸업 예정자도 가능...! 근데 후기를 찾아보니 조금 걱정됐던건 1,2기때는 AI와 Python을 위주로 진행했는데, 3기부터는 Spring으로 바뀐 점이었다. 사실, 나는 스프링을 공부하니까 "오히려 좋아"긴 했지만, 걱정됐던..

[Book]/객체지향의 사실과 오해

[객체지향의 사실과 오해] - 1장 협력하는 객체들의 공동체

객체지향의 사실과 오해를 읽고 쓰는 글입니다. 0. 개요 객체지향 프로그래밍이란 현실 속에 존재하는 사물을 최대한 유사하게 모방해 소프트웨어 내부로 옮겨오는 작업이라고 표현한다. 하지만, 이 책의 필자는 객체지향의 목표는 실세계를 모방하는 것이 아닌 새로운 세계를 창조하는 것이라 표현한다. 다시 말해, 고객과 사용자를 만족시킬 수 있는 신세계를 창조하는 것이다. 1장에서는 객체지향에 관한 기본적인 내용을 설명하기 위해 잠시 동안 실세계의 모방을 진행한다. 1. 협력하는 사람들 커피를 구매하기 위해서는 주문하는 손님, 주분을 받고 바리스타에게 메뉴를 전달하는 캐시어, 커피를 제조하는 바리스타라는 역할이 존재한다. 각각은 이 세가지 역할이 협력하는 과정에서 자신이 맡은 바 책임을 다한다. “커피 주문”이라는..

Backend/Database

[DB] 물리삭제와 논리삭제

데이터베이스에서 삭제하는 방법은 용도에 따라 크게 '물리삭제'와 '논리삭제'로 나눌 수 있다. 물리삭제와 논리삭제 물리삭제는 SQL의 DELETE 명령을 이용해 직접 데이터를 삭제하자는 사고 방식이다. 삭제 대상 데이터는 "필요 없는 데이터이니 DELETE명령으로 테이블에서 삭제한다"라는 사고방식은 지극히 정상적이다. 한편 논리삭제의 경우, 테이블에 '삭제플래그'와 같은 열을 미리 준비하는 것이다. 테이블에서 실제로 행을 삭제하는 대신, UPDATE명령을 이용해 삭제플래그의 값을 유효하게 갱신하는 것이다. 논리삭제를 구현하는 방법은 삭제 플래그 말고도 여러 방법이 있다. 다만, 일반적으로는 삭제 플래그를 사용해서 논리삭제를 구현한다. 논리삭제의 장단점 논리삭제의 장점으로는 데이터를 삭제하지 않기 때문에 ..

기만주
Leap Day