분류 전체보기 (114) 썸네일형 리스트형 [Hexagonal] 레이어 분리 헥사고날 아키텍처 번역글 참고 : https://happycloud-lee.tistory.com/94 , Baeldung을 번역 하였습니다. DDD의 핵심 목표 Loosly coupling , High cohension 어플리케이션에서 모듈간의 의존성은 최소화하고, 응집성은 최대화한다. 이론에서도 결합도는 낮추고 응집도는 높이라는 말이 있듯이 이를 따라가기위한 아키텍쳐라고 생각한다. Application Layer : application층을 통해 유저는 애플리케이션과 통신할 수 있다. 이 레이어에서는 restful controller, user interfaces, json serializatio libraries가 포함된다. Domain Layer : 비즈니스로직 과련된 코드를 포함한다. 우리 애플리케이션의 핵심이여 이 층에.. [Effective Java] Item69-77 Exception 예외 비검사 예외 , 검사 예외란? 예외는 오직 예외 상황에서만 써야 한다. 절대로 일상적인 제어 흐름용으로 쓰여선 안된다. 잘 설계된 api라면 클라이언트가 정상적인 제어 흐름에서 예외를 사용할 일이 없게 해야 한다. -> 특정 상태에서만 호출할 수 있는 상테 의존적인 메서드를 제공하는 클래스는 상태검사 메서드도 함께 제공해야 한다. Iterator인터페이스의 netxt와 hasNext가 각각 상태 의존적 메서드와 상태 검사 메서드이다. for-each도 내부적으로 hasNext를 사용한다 복구 할 수 있는 상황에는 검사 예외를, 프로그래밍 오류에는 런타임 예외를 사용하라 자바에는 검사 예외, 런타임 예외, 에러, 이렇게 세가지를 제공한다. 호출하는 쪽에서 복구하는것은 검사 예외를 사용해라 검사 예외 .. [Effective Java] Item44 표준 함수형 인터페이스를 사용하라 람다식이란? 함수형 프로그램이 구현방식 클래스를 생성하지 않고 함수의 호출만으로 기능 수행 함수형 인터페이스를 선언함 함수형 프로그래밍이란? 순수 함수(pure function)를 구현하고 호출 매개변수만을 사용하도록 만든 함수로 외부 자료에 부수적인 영향을 발생하지 않도록함 입력 받은 자료를 기반으로 수행되고 외부에 영향을 미치지않아 병렬처리가 가능함 @FunctionalInterFace 를 사용하면 메서드 한개만 선언할 수 있다. java.util.function 에서 제공하는 함수적 인터페이스는 Consumer, Supplier, Function, Operator, Predicate로 구분된다. 참고 ConSumer 함수적 인터페이스 리턴값이 없는 accept()메서드를 가지고 잇다. import .. [Spring] Entity를 DTO로 감싸라 Entity를 Dto로 감싸라 body에 실려서 클라이언트와 통신하는 데이터들은 외부에 노출되면 안된다. 따라서 Db와 연결되는 Entity를 Dto감싸야된다. @Getter static class OrderDto{ private Long orderId; private String name; private LocalDateTime orderDate; private OrderStatus orderStatus; private Address address; private List orderItems; public OrderDto(Order o){ this.orderId = o.getId(); this.name = o.getMember().getName(); this.orderDate = o.getOrderDa.. [book-review]effective java item37 enum 정리하기전 궁금한 내용 정리된 링크 EnumMap vs HashMap : https://www.geeksforgeeks.org/difference-between-enummap-and-hashmap/ EnumMap, HashMap 차이 EnumMap : https://www.geeksforgeeks.org/enummap-class-java-example/ class Plant{ enum LifeCycle{ ANNUAL, PERENNIAL, BIENNIAL} final String name; final LifeCycle lifeCycle; Plant(String anme, LifeCycle lifeCycle){ this.name = name; this.lifeCycle = lifeCycle; } @Overi.. [JPA] 중급 JPQL 경로 표현식 : 점을 찍어 객체 그래프를 탐색 상태 필드(state field): 경로 탐색의 끝, 탐색X • 단일 값 연관 경로: 묵시적 내부 조인(inner join) 발생, 탐색O -> 굉장히 위험하며 리팩토링하기 어려움 컬렉션 값 연관 경로: 묵시적 내부 조인 발생, 탐색X FROM 절에서 명시적 조인을 통해 별칭을 얻으면 별칭을 통 해 탐색 가능 String jpql = "select t from Team t join fetch t.members where t.name = '팀A'"; List teams = em.createQuery(jpql, Team.class).getResultList(); for(Team team : teams) { System.out.println("teamname = .. [JPA]JPQL JPA는 다양한 쿼리 방법을 지원 JPQL JPA Criteria QueryDSL 네이티브 SQL • JDBC API 직접 사용, MyBatis, SpringJdbcTemplate 함께 사용 JPQL JPA를 사용하면 엔티티 객체를 중심으로 개발 • 문제는 검색 쿼리 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능 애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검 색 조건이 포함된 SQL이 필요 JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어 제공 • SQL과 문법 유사, SELECT, FROM, WHERE, GROUP BY,HAVING, JOIN 지원 JPQL은 엔티티 객체를 대상으로 쿼리 SQL은 데이터베이스 .. [What I Learn] Builder 패턴을 쓰는이유 Builer 패턴을 쓰는 이유 패스트캠퍼스 강의를 들으면서 "builder" 가 아니라 "builder pattern"이라고 설명하는 부분이 있어서 왜 패턴이지? 라는 생각을하며 구글링을 하게 되었습니다. 제가 써본건 MVC패턴뿐인데 어떤패턴이지? 라는 궁금증이 생겨 검색해보니 GoF(Gang of Four)디자인 패턴 부터 공부가 필요할것같아 신규 입사자분들에게 조금이나마 도움이되고자 정리하기로 했습니다:) 강의에서 필요한것은 builder pattern에 대한 이해이므로 GoF에 대해서는 간략하게만 정리하도록 하겠습니다. 본 문서는 https://ko.wikipedia.org/wiki/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%EB%94%94%EC%9E%90%.. 이전 1 2 3 4 ··· 15 다음