분류 전체보기
-
RESTful APISpring 2021. 12. 19. 15:41
API는 Application Programming INterface로 컴퓨터 프로그램간 서로 정보 교환이 가능하도록 하는 것으로 REST API는 REST기반으로 서비스 API를 구현한 것이다. RESTful API RESTful API란 REpresentational State Transfer로 자원에 대한 행위 를 HTTP Method(GET, POST, PUT, DELETE)로 표현하고 자원을 URI로 표현하는 REST아키텍쳐를 스타일 을 따르면서 구현된 시스템을 말한다. 이해하기 쉽고 사용하기 쉬운 API를 만드는 것이 목적이다. REST의 속성 REST는 자원 기반 구조(Resource Oriented Architecture)의 4가지 속성을 따른다. Addressability : 제공하는 모..
-
Method Reference (Java 8)JAVA/Java 2021. 12. 19. 13:01
Method Reference 는 람다식을 더 간결하게 표현하기 위한 방법이다. Method Reference 메소드 레퍼런스에는 3가지 방법이 존재한다. 정적 메소드 참조 (Static Method Reference) 인스턴스 메서드 참조 (Instance Method Reference) 생성자 참조 (Contructor Reference) 정적 메소드 참조 List fruits = Arrays.asList("apple", "banana", "kiwi"); //람다식 표현 fruits.forEach(fruit -> StringUtils.capitalize(fruit)); //메소드 레퍼런스 표현 fruits.forEach(StringUtils::capitalize); //출력 결과 Apple Banan..
-
트랜잭션 (feat. @Transactional)Spring 2021. 12. 18. 18:18
트랜잭션이란 비지니스 로직에서 쪼개질 수 없는 하나 단위의 작업을 말한다. (DB상태 변화를 위해 행하는 작업의 작은 단위) ACID원칙 트랜잭션에는 네가지 원칙이 있다. 원자성 (Atomicity) : 트랜잭션은 하나의 단위로 이루어져야 한다. (모두 성공시 실행, 하나라도 실패시 rollback처리) 일관성 (Consistency) : 트랜잭션 성공시 DB의 데이터는 일관성(같은 결과)을 지녀야 한다. 격리성 (Isolation) : 트랜잭션 처리 과정 중 외부의 간섭은 없어야 한다. (독립적 실행) 영속성 (Durability) : 트랜잭션이 성공하면 그 결과는 영속적으로 보관 되어야 한다. (영구 반영) 트랜잭션 관리 (범위) 트랜잭션의 경계는 프레젠테이션층과 비지니스 로직 층 사이에 존재하는 것..
-
Refactoring ① : 첫번째 예제JAVA/Java 2021. 12. 17. 11:20
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=339765 Refactoring 리팩토링은 소프트웨어의 외부 기능을 변경하지 않으면서 내부 구조를 바꾸는 기술이다. 리팩토링을 사용하면 나쁜 디자인의 코드를 취해서, 외부 기능을 변경하지 않고, 좋은 디자인의 코드로 www.aladin.co.kr 기존의 코드 public class Movie { public static final int CHILDRENS = 2; public static final int REGULAR = 0; public static final int NEW_RELEASE = 1; private String _title; private int _priceCode; public Movie(Str..
-
Git Commit ConventionGIT 2021. 12. 14. 10:40
git 커밋을 작성할 때는 원칙에 맞춰 일관성있게 작성해야만 다른 개발자가 봤을 때에도 커밋이 어떤 메세지를 담고 있는지 명확하게 알 수 있다. Commit Message 구조 type: Subject//제목 body//본문(내용) footer//꼬리말 type : 커밋의 의도 Subject : 최대 50글자, 마침표는 포함하지 않음, 영문으로 작성시 맨 앞은 동사원형 + 맨 첫글자는 대문자 body : 최대 72글자, 무엇을 왜 했는지 작성, 긴 설명이 필요할 때에만 작성, 제목과 구분하기 위해서 한 칸 띄고 작성 footer : Issue Tracker ID를 나타내고 싶을 때 작성 ("유형: #이슈 번호"의 형식으로 작성) Fixes: 아직 해결되지 않은 이슈 수정 중 Resolves: 이슈 해결 ..
-
Git Branch StrategyGIT 2021. 12. 13. 17:53
git을 활용하다 보면 필요에 따라 새로운 브랜치를 생성하고 이용해야 하는 상황이 발생한다. 어떤 필요에 따라 각각의 브랜치를 이름지어야 하는 지 알아보자. Master / Hotfix or Issue / Develop / Feature / Release Master Branch Main Branch로 Release(배포) 할 수 있는 브랜치이다. 최종 배포 이력을 관리하기 위한 브랜치로 배포가능 상태만 관리한다. Hotfix Branch 이미 출시된 버전에서 버그가 발생되는 경우 master 브랜치에서 바로 수정하지 않고 hotfix 브랜치를 분기하고 수정 후 병합한다. 문제가 발생한 부분만 빠르게 처리하며 수정이 완료된 후에는 develop에도 병합해준다. Develop Branch 다음 출시 버전을..
-
DTO와 VO 그리고 EntityJAVA/Java 2021. 12. 13. 17:31
계층간 데이터를 주고 받을 때, 소통하는 계층에 따라서 값을 전달하는 객체의 형태는 달라진다. DTO Data Transfer Object로서 계층간 데이터 교환을 위하여 사용하는 객체 이다. DB의 데이터를 Service나 Controller (즉, Presentation Layer)와 주고 받을 때 사용된다. Client와 바로 접해있는 View 계층에서는 정보가 자주 변경되기 때문에 변경이 이루어 질때마다 바로 DB와 연결된 Entity를 변경하고자 한다면 이와 의존관계에 놓인 많은 다른 클래스에도 영향을 미치기 때문에 영향받지 않고 자유롭게 변경 가능한 DTO를 사용하게 된다. 이는 로직을 가지고 있지 않은 순수한 데이터 객체 이며 getter / setter 메서드 만 을 가진다. Control..
-
Setter의 사용 금지JAVA/Java 2021. 12. 13. 16:57
프로젝트 진행중 엔티티나 DTO에 setter를 사용하게 되는 일이 종종 발생하게 되는데, 이는 일관성 유지에 어려움 등의 여러가지 문제점으로 인해 사용이 금지된다. ① Setter 사용의 의도를 알기 어려움 public ActivityCreateDTO saveActivity(ActivityCreateDTO activityCreateDTO) { Activity activity = new Activity(); activity.setName(activityCreateDTO.getName()); activity.setDescription(activityCreateDTO.getDescription()); activity.setScore(activityCreateDTO.getScore()); activityRep..