분류 전체보기

회고

5월 1주차 회고

어느덧 5월이다! 5월까지 정말 열심히 달려왔다. 2주동안 또 많은 일들이 있었다. 먼저 저번 회고 때 네이버 코테를 보면서 나 자신이 PS 부분에서 어느정도 성장함을 느꼈다고 포스팅했었다. 이후로 4월 29일 프로그래머스 데브코스 코딩 테스트와 자바와 객체지향언어, 기타 웹 지식, SQL 코딩테스트 등을 봤는데 합격할 수 있었다. 5월 16일 면접을 앞두게 되었다. 주로 경험과 지원 동기 위주의 대화 형식이라고 하니, 열심히 준비해서 좋은 성과를 거두었으면 좋겠다. 웹 지식 관련해서 정말 헷갈렸던 부분이 있었다. 유일성은 만족하지만 최소성은 만족하지 않는 것... 이 문제를 보고 작년에 봤던 정보처리기사 시험이 떠올랐다. 분명히 똑같은 문제였다. 하지만 또 똑같은 이유로 헷갈려하는 나 자신을 볼 수 있..

Backend/Spring

Invalid character found in method name 에러

Postman을 사용하여 스프링의 @ResponseBody로 api 통신을 하고 있던 와중에 다음과 같은 오류를 겪게 되었다. Error parsing HTTP request header Invalid character found in method name HTTP method names must be tokens 대충 에러를 보면 HTTP 요청헤더에 뭔가 잘못되었다고 하고 HTTP 메서드 이름에서 유효하지 않은 문자가 발견됐다는 것이다. 그리고 토큰화 되어야 한다고 한다. 먼저 헤더부터 살펴봤다. Content-type도 application/json으로 일치하고, Accept는 따로 설정하지 않았으니까 별 문제가 없을 것이고 Connection 또한 tcp 연결을 time-out 만큼 유지하고, ma..

Backend/JPA

JPA 상속관계 매핑

오늘은 JPA의 상속관계 매핑에 대해서 포스팅해보고자 한다. 이전 프로젝트를 진행하면서 상속관계 매핑을 고려하지 않고 엔티티를 구성하여, 많은 부분에서 고생을 한 경험이 있었다ㅠㅠ... 하나 하나 알아가보자. 상속 관계에 대한 데이터베이스와 객체의 패러다임 불 일치 우선 상속이라는 것은 객체에는 존재하지만, 관계형 데이터베이스에는 존재하지 않는다. 이 존재하지 않는다는 것은 물리적으로 존재하지 않는다는 것이다. 하지만, 논리적인 데이터 모델링을 통해서 물리적으로 가능하게끔 만드는 방법은 존재한다. 그 방식이 슈퍼타입, 서브타입 방식이다. 이러한 논리 모델을 물리 모델로 변환하는 세 가지 기법이 있고, 해당 기법들을 JPA가 지원을 해준다. 조인 전략 : 부모 기본 키를 받아 테이블을 생성 (Inherit..

Computer Science/DataBase

3 계층 스키마 ( 3-Level Schema)

3 계층 스키마를 이해하기 전에 먼저 알아둬야 할 것이 있다. 릴레이션 테이블과 비슷하며 릴레이션 스키마와 릴레이션 인스턴스로 구성되어 있다. 릴레이션에서 연관 관계 및 제약 조건이 생긴다면 그 때 테이블이 된다. 스키마 관계형 데이터베이스에서 기본 구조를 정의하는 것이다. - 데이터 개체(Entity), 속성(Attribute), 관계(Relationship), 제약조건(Constraint) 등에 대해 정의하는 것. - 이는 관점에 따라서 외부 스키마, 개념 스키마, 내부 스키마로 나뉠 수 있다. 주의 릴레이션 스키마와 스키마는 엄연히 다르다는 것을 인지하여야 한다. 3-Level Schema 3-Level Schema 란 사용자, 설계자, 개발자가 데이터베이스를 보는 관점에 따라 데이터베이스를 기술하..

Backend/JPA

JPA 연관관계 매핑의 다중성

JPA에서 가장 중요한 것 두 가지를 꼽으라고 하면, 첫 번째는 영속성 컨텍스트 두 번째는 연관 관계 매핑이다. 어떤 비즈니스 로직이냐에 따라서 적절한 관계를 정해야 하기 때문에 굉장히 중요하다. 다중성을 알아보기 전에 알아봐야 할 용어가 몇 가지 있다. 다중성 : 다대일, 일대다, 일대일, 다대다 방향성 : 단방향, 양방향이 있다. 테이블에는 존재하지 않는다. 연관관계의 주인 : 양방향에서 연관 관계에 대해 관리하는 주체 즉, 읽기전용이 아닌 쪽을 말한다. 그 전에 짚고 넘어가야 할 부분이 있다. 이 부분은 자주 헷갈릴 수 있는 부분인데, 관계를 파악하기 위한 내 개인적인 방법이다. 연관관계 파악하기 때때로 지금 내가 파악하고자 하는 관계가 다대다 관계인지 다대일 관계인지 헷갈리는 경우가 종종 있다. ..

Backend/Spring

Spring AOP

Aspect의 등장 이유 스프링 AOP는 부가 기능 추가시 횡단 관심사로 인한 문제 때문에 등장하게 되었다. 만약 횡단 관심사를 객체 지향적으로 해결하기 위해서는 많은 문제들이 발생한다. 부가 기능을 적용할 때, 부가 기능을 적용하기 위한 코드를 작성해주어야 한다.(템플릿 적용 전) 부가 기능이 여러곳에 퍼져서 중복 코드를 만들어 낸다. (적용 이후에도 동일) 부가기능 변경 시 많은 부분을 수정해야 한다. (제대로 된 캡슐화가 되지 않음) 부가기능 적용대상 변경 시 많은 수정이 필요하다. (적용하지 않을 대상들을 직접 찾아야 함.) 이러한 문제점을 해결하기 위해 핵심 로직과 부가 기능 로직을 나누고, 부가 기능을 어디에 적용하고 어떤 부가 기능을 적용할 지 선택하는 기능을 합한 하나의 모듈로서 등장한 것..

Backend/JPA

영속성 컨텍스트

영속성 컨텍스트란? 영속성 컨텍스트란 엔티티를 영구 저장하는 환경을 의미하고, 애플리케이션과 DB 사이에서 캐시를 이용해 데이터를 보관하는 역할을 한다. 이때 영속성 컨텍스트는 엔티티 매니저를 통해서만 접근이 가능하다. 영속성 컨텍스트에 데이터를 저장하기 위해서는 다음과 같이 저장할 수 있다. EntityManager em = emf.createEntityManager(); em.persist(entity); 영속성 컨텍스트는 환경에 따라 달리 구성될 수 있다. 스프링 같은 멀티 쓰레드 환경에서는 EntityManager : PersistenceContext 관계는 N : 1 관계이고, 단일 쓰레드 환경에서는 1 : 1 관계이다. 이어서 영속성 컨텍스트 내부에서 엔티티의 생명주기에 대해서 살펴보자. 영속..

도서/객체 지향의 사실과 오해

[객체지향의 사실과 오해] 4. 역할, 책임, 협력

우리 모두를 합친 것보다 더 현명한 사람은 없다. - 켄 블랜치드(Ken Blanchard) - 제목부터 이전부터 저자가 강조한 역할, 책임, 협력에 관해서 나온다.  사람들도 어떠한 상황에 처해있느냐에 따라 다르게 행동할 수 있다는 부분에서 객체 또한 어떤 협력에 참여하는지에 따라 필요한 행동이 결정되고, 그 행동이 객체의 상태를 결정한다고 한다. 객체들 간의 협력에 집중하라. 이번 장의 주제이다. 협력은 한 사람이 다른 사람에게 도움을 요청할 때 시작한다. 이렇듯 객체간의 협력은 한 객체가 다른 객체에게 메시지를 통해 요청을 할 때 시작되는 것이다. 협력 안에서 각 객체들은 어떤 요청에 대해 응답하거나 적절한 행동을 한다. 이를 우리는 객체의 책임이라고 부르고, 객체지향 개발에서 중요한 것은 객체 ..

Bombo_
'분류 전체보기' 카테고리의 글 목록 (8 Page)