목록웹 개발/Java,Spring (10)
컬쥐네 다락방
AngularJS commit conventions 우테코 프리코스 1주차 과제가 공개되고 commit convention과 Java convention을 공부하고 있습니다. :) 항상 github Desktop만 사용했는데 이번 기회에 연습용 Repo를 하나 파서 터미널을 이용한 깃 공부도 병행할 생각이에요! 이 글은 The AngularJS commit conventions을 보고 공부하며 정리한 내용입니다. 영어로 된 글이라 정리해두면 편할 것 같아서 기록해요 :) The AngularJS commit conventions 목표 스크립트로 CHANGELOG.md를 작성하기. git bisect를 사용하여 중요하지 않은 커밋을 무시하게 하기 (formatting같이 중요하지 않은 커밋) git bis..
JPA를 사용할 때 ID값으로 엔티티를 가져오는 방법에는 두 가지가 있다. getById()와 findById(). 두 메소드는 비슷하지만 차이점이 존재한다. 1. getById() getById()는 원래 getOne()이었으나 해당 메소드는 더이상 사용되지않고 대체되었다. 내부적으로 EntityManager.getReference() 메소드를 호출하기 때문에 엔티티를 직접 반환하는 것이 아니라 프록시만 반환한다. 프록시만 반환하기 때문에 실제로 사용하기 전까지는 DB에 접근하지 않고, 접근을 시도할 때 데이터가 없으면 EntitiyNotFoundException이 발생한다. 2. findById() findById()는 실제 DB에 요청해서 엔티티를 가져오는 메소드이다. 영속성 컨텍스트의 1차 캐시를..
요즘 기업들을 과제를 하면서 하나 둘 배우는게 정말 많은데 바쁘다는 핑계로 정리해두는 일을 미루고있다 . 반성하며 간단히라도 적어놓고 나중에 다시 찾아보는 일이 없도록 해보자 ! Spring을 이용하면 Spring JPA의 spring.jpa.generate.ddl 이나 Hibernate의 hbm2ddl.auto 등의 기능을 사용할 때가 많다. 프로그램을 구동할 때 @Entity 라는 어노테이션을 찾아서 자동으로 테이블을 생성하고 맵핑을 해준다. 이런 기능을 사용하면 간단하게 DB 관리를 할 수 있어서 편한다는 장점이 있지만, 테이블 스키마가 변경되거나, 필수로 초기에 들어가야하는 데이터들이 수정되었을 때 히스토리 관리가 잘 되지 않는다는 단점이 있다. Flyway는 이런 히스토리 관리쪽에서 장점이 있다..
면접 대비를 위해 공부하던 중 JWT와 OAuth 를 비교하는 질문을 봤다. 찾아보니 이 둘을 비교하는 것은 흔한 질문이지만, 좋은 접근은 아니다. JWT가 과일이라면 OAuth는 과일을 담는 상자라고 볼 수 있다. JWT는 Token의 한 형식이고, OAuth는 하나의 Framework이다. 여기서 OAuth가 Framework인 이유는 1. 토큰을 요청할 때 사용할 수 있어야하는 요청 및 응답의 순서와 형식만 있다. 2. 각기 다른 시나리오에서 어떤 방식으로 권한 부여 유형을 사용할지 정한다. 그리고 JWT는 이러한 Framework에서 발생하는 산출물로 볼 수 있다. 물론 Auth Framework를 통해 나온 OAuth Bearer token과 단순한 JWT 토큰은 차이가 있다. OAuth Tok..
REST 하다 . 'REpresentational State Transfer' 의 줄임말로 대표적인 상태 전달을 뜻한다. 이는 웹에 존재하는 모든 자원(이미지, 동영상, DB 자원)에 고유한 URI를 부여해 활용하는 것으로, 자원을 정의하고 자원에 대한 주소를 지정하는 방법을 의미한다. 따라서 RESTful API는 REST 특징을 지키면서 API를 제공하는 것을 의미한다. REST 개념이 중요해진 이유? 애플리케이션 분리 및 통합과 다양한 클라이언트의 등장으로 REST 개념이 중요해졌다. 애플리케이션의 복잡도가 증가하면서 애플리케이션을 어떻게 분리하고 통합하느냐가 주요 이슈가 되었고, 자바에서 과거에는 EJB(Enterprise Java Beans), SOA(Service Oriented Archite..
Spring MVC Spring이 자체적으로 제공하는 MVC 프레임워크. Spring이 제공하는 AOP, 트랜잭션 처리, DI 등 기능을 그대로 사용하면서 MVC 패턴에 기반하여 어플리케이션을 개발할 수 있다. Spring MVC의 구성 및 실행 흐름 다른 MVC 기반의 프레임 워크와 마찬가지로 컨트롤러를 사용하여 클라이언트의 요청을 처리하게 된다. 이 컨트롤러의 역할을 하는 것이 DispatcherServlet. 구성 요소 설명 DispatcherServlet 클라이언트의 요청을 전달받는다. Controller에게 클라이언트의 요청을 전달하고, 리턴한 결과값을 View에 전달하여 알맞은 응답을 생성하도록 한다. HandlerMapping 클라이언트의 요청 URL을 어떤 Controller가 처리할지를 ..
컴파일 에러 컴파일 시 발생하는 에러. 구문 오류로 프로그램을 컴파일 할 수 없을때 발생하며 대체로 문법상의 에러. 에러가 발생한 부분을 알려준다. 컴파일 에러의 예 - ';'의 누락 - 괄호가 안맞는 등 구문 에러 - Classpath에 누락 된 클래스(컴파일시) 런타임 에러 실행 시 발생하는 에러. 프로그램이 컴파일 된 후 실행하면서 에러 발생 대체로 개발 시 설계 미숙으로 발생하는 에러. 에러 발생시 프로그래머가 역추적해서 원인을 확인해야 한다. 런타임 에러의 예 - NullPointerException - 무한 루프 - 0으로 나누는 경우
객체 지향 프로그래밍이란? 컴퓨터 프로그래밍 패러다임중 하나로, 프로그래밍에 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적힌 상호작용을 통해 로직을 구성하는 프로그래밍이다. 상태와 행위로 이루어진 객체로 레고처럼 조립해서 프로그램을 만드는 것. 간단한 OOP 정리 : 객체지향이란 실세계의 사물을 추상화하여 멤버 변수와 메소드를 정의하는데서 출발한다. 캡슐화를 통해 이와같은 멤버변수와 메소드의 이용가능 범위를 적정하게 제한 할 수 있고 상속을 이용하여 부모 클래스의 기능을 자식클래스에서 물려받거나 재정의를 통해 다른 기능을 구현하는 다형성까지 포함됩니다. 객체지향의 장점으로는 코드의 재사용성이 있습니다. 따라서 개발 및 유지보수에 효율적이고 캡슐화를 통한 데이터의 올바..