[Java] modelMapper 사용하기
2023. 1. 2. 20:03
프로그래밍/JAVA
modelMapper 서로 다른 클래스의 값을 한 번에 복사하게 도와주는 라이브러리로 어떤 Object (Source Object) 에 있는 필드 값들을 자동으로 원하는 Object (Destination Object) 에 매핑 시켜주는 라이브러리 사용을 위해서는 의존성 추가 필요 implementation 'org.modelmapper:modelmapper:2.4.2' 주로 DTO와 같은 클래스로 데이터를 받은 후 원하는 클래스(Entity)에 넣어줄 때, Getter/Setter를 이용해 필드를 복사/붙여넣기하는 작업을 거침 이 때, 매핑해야할 필드가 다른 경우도 빈번함 즉, 다른 모델의 Object를 매핑해줘야하는 작업이 발생할 수 있는데 이런 단점들을 해결하기 위한 라이브러리임 modelMappe..
[SQL] 트랜잭션 격리 수준(isolation level)
2022. 12. 30. 20:42
프로그래밍/SQL
트랜잭션 격리 수준 트랜잭션 격리 수준(Transaction Isolation Levels)은 고립도와 성능의 Trade-off 를 조절 트랜잭션 격리 수준이란 트랜잭션들끼리 얼마나 고립되어있는지 (잠금수준)를 나타내는 것으로 특정 트랜잭션이 다른 트랜잭션에 의해 변경된 데이터를 볼 수 있도록 허용할지 말지를 결정하는 것 임 READ UNCOMMITTED(트렌젝션 레벨 0) : 다른 트랜잭션에서 커밋되지 않은 내용도 참조할 수 있음 READ COMMITTED(트렌젝션 레벨 1) : 다른 트랜잭션에서 커밋되 내용만 참조할 수 있음 (ORACLE) REPETABLE READ(트렌젝션 레벨 2) : 트랜잭션에 진입하기 이전에 커밋된 내용만 참조할 수 있음 (MySQL) SERIALIZABLE(트렌젝션 레벨 3..
[JPA] JPA 날쿼리 사용하기(nativeQuery = true)
2022. 12. 29. 21:29
프로그래밍/JPA
jpa 날쿼리 사용하기 위한 방법 nativeQuery 속성 true로 변경 sql의 함수를 사용하고 싶은데 jpql로 어떻게 바꿀까하다가 날쿼리를 사용해보기로 함 아래와 같이 사용 가능 @query(value = "...", nativeQuery = true) @query(value = "select group_concat(sc.이메일) " + "from student st inner join school sc on st.학교번호 = sc.학교번호 " + "where st.학생이름 = :학생이름", nativeQuery = true)
[SQL] 조회된 ROW가 없을 때, RETURN 하는 방법
2022. 12. 28. 20:44
프로그래밍/SQL
조회된 ROW가 없을 때, RETURN 하는 방법 일반적으로 조회 시 조건절에 부합하는 데이터 ROW가 없을 경우 조회되지 않음 그러나 JOIN 등 특수한 경우 조회되는 ROW가 없더라도 반환시켜야 하는 일이 생김 이러한 경우 간단하게 GROUP BY를 통하여 RETURN이 가능함 select u.user_id, o.order_number, uc.coupon_code from order o inner join user u on (o.user_id = u.user_id) inner join user_coupon uc on (u.user_id = uc.user_id) group by u.user_id;
[MySQL] 컬럼명 변경, 컬럼 순서 변경, 컬럼 타입 변경, 컬럼 추가, 컬럼 삭제
2022. 12. 26. 20:48
프로그래밍/SQL
컬럼명 변경 ALTER TABLE 테이블명 CHANGE 기존컬럼명 변경할컬럼명 컬럼타입; ALTER TABLE user CHANGE user_email email varcher(256); 컬럼 순서변경 ALTER TABLE 테이블명 MODIFY 순서변경할컬럼명 컬럼타입 AFTER 앞에오는컬럼명; ALTER TABLE user MODIFY nickname varchar(64) AFTER user_id; 컬럼 디폴트값 변경 ALTER TABLE 테이블명 ALTER COLUMN 변경할컬럼명 SET DEFAULT 디폴트값; ALTER TABLE product ALTER COLUMN is_usable SET DEFAULT 1; 컬럼 타입변경 ALTER TABLE 테이블명 MODIFY 컬럼명 병경할컬럼타입; ALT..
[Java] List를 콤마(,)로 연결하여 하나의 문자열 만들기
2022. 12. 23. 20:58
프로그래밍/JAVA
List를 콤마(,)로 연결하여 하나의 문자열 만들기 String.join()으로 콤마로 연결된 문자열 변환 Java8에서 제공하는 String.join(delimiter, list)는 인자로 전달된 delimiter로 리스트의 요소를 연결하여 하나의 문자열을 생성함 예시👇 import java.util.Arrays; import java.util.List; public class Example1 { public static void main(String[] args) { List myList = Arrays.asList("Hello", "World", "Java"); String str = String.join(",", myList); System.out.println(str); } } Output: ..
[Java Error] expecting EOF, found ')'
2022. 12. 22. 20:32
프로그래밍/JAVA
expecting EOF, found ')' 해결 방법 위의 에러가 뜬다면 끝에 ')'을 지워주면 됨 ')' 가 아니라 '}'일 수도 있고 그 외의 것일 수도 있지만 괄호 개수가 일치하는지, 구문이 잘 작성되었는지 확인하면 해결할 수 있음
[Java Error] java.time.format.DateTimeParseException: Text '5:00' could not be parsed at index 0
2022. 12. 21. 20:19
프로그래밍/JAVA
Java DateTime 에서 발생할 수 있는 에러 - java.time.format.DateTimeParseException: Text '5:00' could not be parsed at index 0 - java.time.format.DateTimeParseException: Text '24:00' could not be parsed: Invalid value for HourOfDay (valid values 0 - 23): 24 원인 java dateTime은 00:00 ~23:59로 이루어져 있어야 하는데 1️⃣ 01:00이 아닌 1:00 인 경우 (1:00~9:00 모두 마찬가지) 2️⃣ 00:00 이 아닌 24:00인 경우 exception을 발생시킴 해결 방법 00:00 ~ 23:59 사이..