일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- QueryDSL
- netflix oss
- mybatis
- coalesce
- cassandra
- spring boot
- docker compose mysql
- MySQL
- Airflow
- Redis Sentinel
- jmeter
- Spring Open Feign
- redis
- docker
- vue.js
- weblogic 10
- WebLogic
- JPA
- argo cd
- KAFKA
- Netty
- docker-compose
- spring boot redis
- spring cloud
- RabbitMQ
- grafana
- Selenium
- Hibernate
- Docker Compose
- ChannelPipeline
- Today
- Total
목록Spring/Spring Data JPA (26)
IT.FARMER
오류- Lock wait timeout exceeded; try restarting transaction db에서 갑자기 락이발생했다고 하며 업데이트하는 쿼리가 타임아웃이발생하며 다음과 같은 오류가 발생했다. Lock wait timeout exceeded; try restarting transaction 검색을 해보니 정말 다양한 이유에 의해 락이 발생하는 것을 확인했고, 상황에 따라 다르게 해결해야 했다. 우리가 겪은 부분은 delete 와 insert,update 에대한 트렌젝션 처리기 한곳에 묶여있기 때문이었다. 삭제를 하고나서 트렉젝션으로 묶었으니 락이걸렸고 , 새로운 트렉젝션으로 업데으트를 하려니 업데이트나, 인설트를 하지 못해서 해당 오류가 나고있었다. 코드는 다음과 같다. AClass { ..
found [text (Types#LONGVARCHAR)], but expecting [varchar(255) (Types#VARCHAR)] 실제 컬럼은 TEXT로 해두었는데 jpa 서는 Object에 String 으로만 선언되어 있으니 validation 이다르다고 한다. 두가지 방법이 있다고 해서 해보면 하나만 된다. @lob 사용은 안된다. @Lob private String requestDetail; @Column(columnDefinition = "text") -> 깔끔하게 선언해주고 사용하면 잘된다. @Column(columnDefinition = "text") private String requestDetail;
EntityManager 를 이용하여 mearge 문을 사용하거나 insert를 사용할때... 다음과 같은 오류가 났다. No EntityManager with actual transaction available for current thread - cannot reliably process 'merge' call transaction 관련된 설정이 없다고해서 확인해보니 역시나... @Transactional 을 설정하지 않았다. @Transactional public void update(T abstractAdEntity) { try { entityManager.merge(abstractAdEntity); entityManager.flush(); } catch (Exception e) { e.print..
Hibernate(JPA) 영속성 (persistence) JPA/ Hibernate 를 사용할때 대부분 생명주기를 모른상태에서 개발을 하다보면 실수? 혹은 왜 이렇게 되지 하는 경우를 겪게 된다. 알고 있더라도 왜이러지 이럴때가 있다! 어? 왜이렇게 동작하지 하고 말이다. 1. Entity life sycle (엔티티생명주기) 비영속(new/transient) 영속성 컨텍스트와 전혀 관련이 없는 상태 영속 (managed) 영속성 컨덱스트에 저장된 상태 준영속 (detached) 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제(removed) 삭제된상태 1.1 비영속성(new) 앞서 이야기 했듯이 영속성 컨텍스트와 전혀 관련이 없는 상태로 엔티티를 새로 생성한 단계이다. MemberEntity memb..
Spring Transactional 옵션 Tranction 의 성질에 대해 생각해보자 원자성→ 한트렌젝션내에서 실행한 작업들은 하나로 간주하고 작업한다. 즉 모두성공, 혹은 모두 실패이다. 일관성→트렌젝션은 일관성있는 데이터베이스 상태를 유지한다. 격리성→동시에 실행되는 트렌젝션들이 서로에게 영향을 미치지 않도록 한다. 지속성→ 트렌젝션을 마치면 결과가 항상 저장되어야 한다. Spring Transaction 속성 name - 메서드명 isolation (격리수준) propagation(전파) readOnly 트렌젝션롤백 예외 (rollback-for, rollbackfor, rollbackForClassName) 논트렌젝션 롤백 예외 (no-rollback-for ) timeout name - 메서드..
jpa class 생성할때 @Id 가 선언된 class 에 implement Serializable 을 해주어야한다. reson 두개의 복합키를 만드는경우엔 직열화( serializable)를 하라고 하는데 자바에서의 직열화란 자바시스템 내부에서 사용되는 객체를 외부의 자바 시스템에서도 사용할수 있도록 바이트형태로 데이터를 변환하는 기술이다. 즉 자바시스템간의 데이터 교환을 위해존재한다. 근데 JPA 여기선 왜? 만들라고 하는거지 ? https://bravenamme.github.io/2020/02/05/java-serializable/ 여기에 나와 있긴 한데. 시스템이 종료되더라도 없어지지 않고 영속화되어 네트워크 전송이 가능하다라고 한다. JSR220 에따르면 이객체를 어딘가로 전송하거나. 기록하는 ..
@MappedSuperclass 이용한 상속 JPA Entity 에서 상속관계를 만들기 위해서는 @MappedSuperclass 를 사용하여 상속 관계를 정의 할 수 있다. 최상위 Class로 Employee 를 생성하고, 해당 Class를 상속 받아 관계를 정의할 수 있다. 예제 ) @MappedSuperclass public class Employee { @Id protected Integer empId; @Version protected Integer version; @ManyToOne @JoinColumn(name="ADDR") protected Address address; public Integer getEmpId() { ... } public void setEmpId(Integer id) {..
롬복을(lombok) 사용하면 참 편하다. 하지만 주의해야할 사항도 있다. @ToString 이용시 Object안에 순환참조가 걸릴경우 정상적으로 이용하지 못하는 경우가 생긴다. 이를 해결하기 위해서는 @ToString 이용시 연관관계에 있는 객체들의 순환참조를 끊어 주어야 한다. 특히나 Entity 를 RestAPI 에서 응답 모델로 사용할 경우에는 해당 문제가 더욱 두드러 진다. this is example @ToString(exclude = {"campaignEntity", "adsEntities"}, callSuper = true) exclude 속성을 이용하여, 순환참조가 걸리는 Object를 등록하여 사용한다.
mybatis Cause: java.lang.IllegalArgumentException: argument type mismatch” Mybatis 에서 데이터 조회시 다음과 같은 오류가 날때는 Mybatis 특성에 대해 알고 있어야 대응이 가능 하다. Caused by: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.cjenm.report.library.domain.entity.JobEntity with invalid types (Job) or values (16). Cause: java.lang..