2022/05 9

[Spring/JPA] JPA 객체 매핑

※ 본 글은 저자 김영한 개발자의 "자바 ORM 표준 JPA 프로그래밍"의 내용을 요약하였습니다. ※ 기존 테이블을 생성하기 위해서는 DDL을 사용하여 다음과 같은 방식으로 테이블을 생성했어야 했으며, 예외란 존재하지 않았다. 개발자가 직접 DDL를 작성했어야 했다. CREATE TABLE MEMBER ( ID VARCHAR(255) NOT NULL, NAME VARCHAR(255), AGE INTEGER, PRIMARY KEY (ID) ); 하지만 JPA(=자바 진영 ORM)의 등장으로 위 테이블을 매핑하여 객체지향적인 방식으로 구현이 가능하다. 매핑을 하기에 앞서 우선 자바 코드로 객체화시켜보면 다음과 같다. public class Member { private String id; private St..

Spring/JPA 2022.05.27

[Spring/JPA] JPA 소개

※ 본 글은 저자 김영한 개발자의 "자바 ORM 표준 JPA 프로그래밍"의 내용을 요약하였습니다. ※ 과거 엔터프라이즈 자바 빈즈(이하 EJB)라는 기술 표준이 있었는 데, 그 안에도 엔티티 빈이라는 ORM 기술이 있었다. 하지만, 너무 복잡하고 J2EE 애플리케이션 서버에서만 동작하였기에 오픈소스 ORM 프레임워크, Hibernate(하이버네이트)가 등장하였다. 하이버네이트는 EJB의 ORM에 비해 가볍고, 기술 성숙도가 높으며, J2EE 애플리케이션 서버없이도 동작하였기에 결국, EJB 3.0에서 하이버네이트를 기반으로 새로운 자바 ORM 기술 표준을 만들었는 데, 바로 JPA이다. JPA를 사용하는 이유는 다음과 같으며, 이유의 9할은 JPA의 등장배경과 관련이 깊다. 생산성: JCP(자바 컬렉션 ..

Spring/JPA 2022.05.25

백엔드 로드맵 공부

백엔드 로드맵 공부 백엔드 로드맵과 관련된 이미지인데 해당 링크를 통해 다운로드 받으실 수 있습니다. 일단 현재 대소고에서 1년간 보내며 몇 가지 시도를 해보면서 백엔드 개발을 해보기로 결정했습니다.. (물 workshop-6349.tistory.com 위 글 내용을 보안하고자 글을 하나 더 작성합니다. 위 로드맵이 있더라도 백엔드 취업과 관련하여 갈피를 못 잡고 있는 제 자신을 보며, 글도 보안할 겸 앞으로 다시 공부해야할 것들을 조금 탄탄하게 작성하기 위해 작성하였습니다. 저와 같이 갈피를 못 잡거나 정확히 분야를 정하지 못한 분들께 조금이나 도움이 되시길 바랍니다. (※필자는 자바와 스프링으로 주력으로 공부하고 있기때문에 그 위주로 작성하였습니다. 또, 신입을 기준으로 작성하였습니다. 참고해주세요...

공부/서버 2022.05.24

기존 칼럼에 특정 수만큼 더하기

수업 중에 우리 반 정보를 테이블에 추가하는 준노가다를 하는 중 다른 반 학번을 넣었다는 것을 다 적고 나서야 깨달았다. update를 사용하여 처리하면 됐지만, 19개나 되는 로우를 바꾸는 것은 너무 오래 걸릴 것을 우려해서 약간 고민을 해본 결과, 기존 칼럼에 특정 수(=100)만큼만 더하면 처리가 된다는 것을 알고 다음과 같은 쿼리를 사용해 문제를 해결하였다. 기존 값에 접근하기 위해서는 (테이블명).(칼럼명)을 하면 된다. 약간 this를 사용한 느낌이다. 동일한 칼럼명을 쿼리에 둘 다 넣어야하나, 하나는 기존값이고, 하나는 명시형이기 때문이다. update문의 set 다음에 들어오는 칼럼명은 명시형이고, 기존 student_number임을 알려주기 위해 class22.student_number로..

스트레스 관리

대소고 2년째 살면서 스트레스를 꽤 자주 받는다. 학교 일정 때문에 받는 스트레스 역시 적지 않으나 그 외 요소가 더 큰 것 같다. (물론 학교 일정이 살인적인 일정이라는 것은 새로 오신 선생님들이 아닌 이상 많은 선생님들께서도 어느 정도 인정하시긴 한다.) 동아리 프로젝트를 한다거나 협업 프로젝트를 진행하는 경우, 내 일을 언제 어디까지 해야 한다는 책임 때문에 그런 것 같다. 그 외에도 펑크가 나는 경우 이를 내가 메워야 한다는 생각 때문에 잠을 설칠 정도로 강박증이 생긴 게 아닌가 싶다. 남 일은 내 일이 아니라고 그냥 생각하고 넘기면 될 것 같지만, 나 역시 관련된 일이다 보니 그냥은 못 넘기는 것 같다. 어떻게든 해야 한다고 생각이 든다. 개인주의적인 성향이 강해 그런 생각이 드는 것 같기도 하..

일상 2022.05.22

[Spring/JPA] JPA의 등장배경

※ 본 글은 저자 김영한 개발자의 "자바 ORM 표준 JPA 프로그래밍"의 내용을 요약하였습니다. ※ JPA 이전에는 JDBC와 mybatis를 사용하여 데이터베이스를 사용하여 개발하는 데 다음과 같은 문제점들이 존재했었다. 패러다임 불일치: 객체와 관계형 데이터베이스는 서로 지향하는 목적이 다르다. 단순 반복 작업: 단순한 작업인 CRUD를 진행할 때마다 쿼리를 반복적으로 작성해주어야 한다. 유지보수의 어려움: 요구사항의 변동으로 인해 칼럼이 추가 혹은 삭제, 변경 등이 되었을 때, 유연하지 못하다. Query 의존도가 높음: 3번과 마찬가지로 요구사항의 변동이 있어 복잡한 쿼리를 수정해야 하는 경우, 전체를 수정하거나 등의 문제로 객체 매핑하는 데 어려움이 있었다. 이 외에도 문제는 여러 존재한다. ..

Spring/JPA 2022.05.18

[공부/서버] 앞으로 공부해야할 것들

앞으로 공부해야할 것들, 5번째 글입니다. 어떻게 되다보니, 시리즈처럼 계속 올리는 것 같습니다. 이제 무엇을 공부해야하는 지 어느 정도 감을 잡았습니다. 여러 구인구직 사이트들과 여러 블로그 글들을 참고해서 어느 정도 감을 잡았습니다. 하지만, 여전히 길을 잘못 들었을 수도 있기에 "앞으로 공부해야할 것들"은 계속해서 포스팅할 것 같습니다. 1. DataBase 데이터베이스 기초 및 튜닝 SQL 튜닝 Transaction CS Redis Kafka 2. Java Java 고급 직렬화 클린 아키텍처 Dynamic Proxy, CGLib Proxy Reflection API 비동기 알고리즘 3. Spring Framework 스프링 기초부터 스프링 기반 프레임워크 및 라이브러리 TDD AOP PSA Tra..

공부/서버 2022.05.13

[공부/서버] MSA (MicroService Architecture)

MSA란? 작고, 독립적으로 배포가 가능한 각각의 기능을 수행하는 서비스로 구성된 아키텍처라고 할 수 있다. 마이크로 서비스는 온전히 독립적으로 배포가 가능하며, 다른 기술 스택(개발 언어, 데이터베이스 등)이 사용 가능한 단일 비즈니스 영역에 초점이 있다. MSA의 등장 배경 Monolithic Architecture는 소프트웨어의 모든 구성 요소가 한 프로젝트에 통합되어 있는 형태이다. 아키텍처가 단순하며, 유지보수가 용이하다. 하지만 일정 규모 이상의 서비스, 혹은 수백명의 개발자가 투입되는 프로젝트에서는 한계가 보인다. Monolithic Architecture의 한계는 다음과 같습니다. 서비스/프로젝트가 커질 수록 영향도 파악 및 전체 시스템 구조의 파악을 하는 데 어려움이 생긴다. 빌드 시간 ..

공부/서버 2022.05.09

super(CS.교착상태);

교착 상태란? 상호 배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상이다. 위 예시보다 더 알기 쉬운 예시로는 다음과 같은 예시가 있다. (A)는 지붕에, (B)는 1층에 있다고 가정을 하자. 1층에서 지붕으로 가는 유일한 방법은 하나의 사다리 뿐이다. 이때, (A)가 지붕에서 1층으로 내려가려고 하고, (B) 역시 1층에서 지붕으로 올라가려고 한다면 서로 통과하지 못하고 상대방이 비켜주길 무한정 기다리게 될 것이다. 교착 상태를 발생하기 위해서는 다음 4가지가 모두 충족되어야 교착상태가 발생할 가능성이 생긴다. 어느 한 가지라도 충족하지 않는 다면 교착상태는 반드시 발생하지 않는다. 상호배제 한 번에..

공부/CS 2022.05.03