본문 바로가기

Database&Jpa6

[DB] EntityManager Multirow Insert EntityManager를 통해서 Multirow Insert를 사용하는 두 가지 방법입니다.JPA에 다음과 같은 ID 전략을 사용할때 사용하기 좋습니다. @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; IDENTITY 전략을 사용하면, 배치인서트가 원하는대로 동작하지 않을 가능성이 큽니다.또한 Auditing이나 외래키 등 생각하지 못한 에러가 발생하는 경우도 많습니다.그래서 EntityManager를 통해 마이그레이션 한 경험을 정리합니다. 1. NativeQuery 사용하기쿼리로만 작성하게 되면, 빈값에 대한 NULL처리를 신경써줘야 합니다.또한 '이나 "같은 문자에 들어가는 특수문자도 신경써서 .. 2024. 7. 30.
[DB] WITH AS 구문 사용하기 WITH AS 구문WITH 구문은 공통 테이블 식(Common Table Expression, CTE) 을 정의하는 데 사용된다.이는 임시적인 결과 집합을 정의하고, 이를 쿼리의 다른 부분에서 참조할 수 있게 해준다.WITH는 뷰(View)와 유사하지만, CTE는 임시적이며 쿼리 내에서만 사용가능하다.뷰와 달리 생성해주고 삭제해주지 않아도 된다.  단일 사용하기예를 들어, 다음과 같이 서브쿼리 결과를 WHERE 안에 사용하고 싶을때 사용한다.SELECT * FROM ITEM WHERE ID IN (SELECT ITEM_ID FROM ORDER ORDER BY CREATED_AT DESC LIMIT 200); 해당 쿼리는 서브쿼리에 limit 200이 들어가기 때문에 실행되지 않는다.그렇다고 ITEM을 C.. 2024. 7. 25.
Mysql GenerationType.AUTO 에러 MySQL에 테이블을 만들고 auto increment를 설정하고 jpa를 연결하려고 했는데 다음과 같은 오류가 발생함. 나는 시퀀스를 쓴적도 없고 mysql은 시퀀스가 없다고 들었는데 대체 저 hibernate쿼리는 무엇일까 찾아봄. 2023-11-08T13:32:38.164+09:00 INFO 19496 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms Hibernate: select next_val as id_val from users_seq for update 2023-11-08T13:32:40.045+09:00 ERROR 19496 --- [nio-8080-exec-1] o.hiber.. 2023. 11. 9.
Mongodb 다운로드 Mongodb 다운로드하는 방법을 설명하고자 한다. 구글에 검색해서 해당 사이트에 들어간다. 기본적으론 아래에 순서에 맞게 선택해주고 내 Platform에 맞는버전을 다운로드한다. Enterprise는 좀 더 다양한 지원이 된다하지만 필요없는 사람들은 Community를 받으면 된다. 개인적으로 MongoDB Compass tool도 다운받는것을 추천한다. 그 외엔 jetbrains datagrip도 좋다. datagrip은 nosql에 sql쿼리를 날릴 수 있다. 다만 모든 기능이 동작하지는 않았던것으로 기억한다. 2022. 8. 2.
expected "identifier"; SQL statement: springboot에서 h2 in-memory를 이용하요 테스트를 하는 중 발생하였다. 각각 테스트를 위한 엔티티를 매번 만들고 있는데 원하는 테스트는 Instant를 이용한 조회였다. 날짜가 들어가니까 무지성 Order Entity를 만들었다. 그때 발생한 에러 Syntax error in SQL statement "INSERT INTO ORDER[*] (REQUEST_DATE, ID) VALUES (?, ?)"; expected "identifier"; SQL statement: Hello 엔티티와 다른부분이 Instant 필드가 하나 들어간 것 뿐인데 insert가 계속 에러가 발생하는것... 진짜 별짓을 다 해봤는데 같은 에러가 발생해서 찾은 글 https://www.fwantastic.com/2.. 2021. 12. 28.
[MariaDB] 한글 깨짐 create() Test를 실행하는데 SQL Error: 1366, SQLState: 22007가 발생한다. 검색해보니 Maria or Mysql에서 한글을 인식하지 못하는 문제 해결 방법은 좀 이상하다. 테이블을 생성할때 SQL 명령어를 보면 DEFAULT CHARSET=latin1이라고 나와있다. 이걸 utf8로 변경하란다. 위 방법으로 테이블 하나가 수정가능하고 밑 방법으로 데이터가 있을때 수정 가능하다. 리눅스 내부설정에서는 1) $ sudo vi /etc/my.cnf [mysqld] … default-character-set=utf8 default-collation=utf8_general_ci … 2) database, table character set 설정 mysql> ALTER TABLE .. 2020. 9. 11.