빌더를 사용하는 장점은 무엇인가? 1. setter 방식의 단점 기존의 자주 사용하던 자바빈즈 패턴(= setter) 의 경우, 객체 하나를 만드려면 여러개의 메서드를 호출해야 하고, 객체가 완전히 생성되기 전까지는 일관성이 무너진 상태에 놓이게 된다. (=객체의 불변성이 깨진 상태) 멀티 스레드 환경에서 안정성을 얻으려면 추가 작업을 해줘야 한다. 예) 여러개의 스레드가 Student라는 객체에 접근했을 때 1번 스레드는 Student에 아무 값이 없는 빈 객체일수도 있고 2번 객체는 이름과 나이가 setter로 설정된 객체일 수도 있다. 하지만 setter를 제거하고 애초에 처음 만들때 값을 가진 객체로 생성하고 그 값이 불변하다면 Thread-safe 하다고 말할 수 있다. 2. 불변 객체 (1) ..
예를들어 apple, banana, grape 가 있으면 보통 for문으로 돌려서.. 마지막 콤마는 빼는 로직을 사용했었다. 이거보다 더 좋은 방법이 있을 거 같았는데 도저히 생각이 안났는데 ㅎ.. 쉬운 방법을 놓고 돌아가고 있었네.. Java8에 추가된 String.join() 메서드 List, Array List fruits = Arrays.asList("apple","banana", "grape"); String result = String.join(",", fruits); EnumSet EnumSet.allOf(Topping.class).stream().map(Enum::toString).collect(Collectors.joining(", "));
int 와 Integer의 차이 int (Primitive 자료형) '자료형' 을 의미한다. (int, float, long, double 와 같은 하나의 primitive 자료형을 의미합니다.) '산술 연산'이 가능합니다. null 로 초기화 불가능합니다. (0으로 초기화 가능합니다.) Integer (Wrapper 클래스-객체) Wrapper 클래스입니다. Unboxing 을 하지 않으면 산술 연산이 불가능하지만, null값은 처리할 수 있습니다. null값 처리가 용이해서 SQL 과 연동할 경우 처리가 용이. 직접적인 산술연산은 불가능합니다. Wrapper 클래스란? Wrapper 클래스란 자바 기본형을 클래스화 시킨 것으로 기본 데이터형을 값이 아닌 객체로 사용할 수 있는 방법을 제공한다. Jav..
상황 pagination 구현해야함 entity가 아닌 DTO 로 받아야함 union all 사용 → @Query 사용해서 구현 페이지네이션 사용 @Query( value = "SELECT * FROM Users ORDER BY id", countQuery = "SELECT count(*) FROM Users", nativeQuery = true) Page findAllUsersWithPagination(Pageable pageable); parameter에 pageable을 넣으면 알아서 offset, limit 설정해줌 ※ 2.0.4 이전의 SpringData JPA 버전 → \n-- #pageable\n ← 이거 추가 단, 이후 버전인데 이걸 추가하면 실행이 안됨.. 주석이라 상관 없을 줄 알고 추..
enum으로 legacy code 와 신규 코드 매핑 📌갓블로그 참고 Legacy DB의 JPA Entity Mapping (Enum Converter 편) - 우아한형제들 기술 블로그 1. 기존 코드와 Scrapping 시 보내주는 코드 기존 코드 01, 02, 03... 같은 숫자 코드. 스크래핑시 보내주는 코드는 한글 이름으로 보내줌. ex) 계산서, 수정계산서 2. 신규 코드 enum으로 정의 public enum TaxBillType implements CommonType { @JsonProperty("세금계산서") TAX_A("세금계산서", "01"), @JsonProperty("수정세금계산서") TAX_B("수정세금계산서", "02"), @JsonProperty("계산서") TAX_C("계산..
String str = "홍길동--2001/03/14-서울시"; String split[] = str.split("-"); for (int i = 0; i >차이점 * split : null 문자를 같은 데이터 인정 * StringTokenizer : null문자를 같은 데이터 인정하지 않음 StringTokenizer st = new StringTokenizer(str, "-"); int len = st.countTokens(); System.out.println("len = " + len); System.out.println(st.nextToken()); Sy..