일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- WebLogic
- Spring Open Feign
- Selenium
- MySQL
- JPA
- Docker Compose
- Redis Sentinel
- argo cd
- jmeter
- docker
- weblogic 10
- mybatis
- netflix oss
- spring boot redis
- grafana
- vue.js
- coalesce
- docker compose mysql
- redis
- QueryDSL
- Airflow
- docker-compose
- Netty
- cassandra
- spring boot
- RabbitMQ
- spring cloud
- Hibernate
- ChannelPipeline
- KAFKA
- Today
- Total
목록Spring (98)
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;
Sring boot jpa log 설정 Spring boot 에서 jpa, hibernate log를 보기위한 설정. application.profile 의 jpa 설정을 다음과 같이 변경한다. spring.jpa.show-sql=false spring.jpa.properties.hibernate.format_sql=true 위와 같이 설정하였다고 해서 로그가 나오진 않는다. logging level도 조정하여 로그를 볼수있다. # 질의문 보기 logging.level.org.hibernate.SQL=debug # 질의에 대한 파라미터 보기 logging.level.org.hibernate.type.descriptor.sql=trace # 히카리 로그보기 logging.level.com.zaxxer.hi..
OpenFeign을 사용중에 다음과 같은 오류가 발생했다. Feign Client with Spring Boot: RequestParam.value() was empty on parameter 0 신기하게도 인텔리제이에서 구동할때는 오류가 없다가, VS Code tool 에서 구동하니 오류가 발생했다. @RequestParam을 사용할때 name="" 매개변수이름을 명확히 정의해 주어야 한다고한다. 이유는 Spring MVC 와 Spring cloud feign은 모두 동일한 ParameterNameDiscoverer 를 사용하여 DefaultParameterNameDiscoverer 매개변수 이름을 찾는다고 한다. 첫째 StadardReflectionParameterNameDiscoverer. 리플렉션..
Spring AOP 에서 Proxy 모드를 사용하는데는 두가지 방법이 있다. JDK Dynamix proxy 인터페에스가 존재해야 한다. 인터페이스를 기준으로 proxy 를 생성한다 리플리케이션을 통해 동적으로 프록시 객체를 생성한다. CGLib Proxy : 구현체만 있어도 된다. 설정을 해주어야 한다. 어노테이션으로는 다음과 같다. @EnableAspectJAutoProxy(proxyTargetClass = true) Springboot 에서는 CGLib 라이브러리가 안정화 되었다고 보고 라이브러리가 포함되어 있다. class 상속을 통해 proxy 객체를 생성한다. inferface, class 기준으로 proxy 를 생성한다. 타겟 클레스의 바이트코드를 조적하여 재정의 함으로 final 사용은 불..
AOP의 의미 (Aspect Oriented Programming) 한글로번역하면 관점지향 프로그래밍이라고 한다. 그렇담 도대체 관점지향이란 무엇인가 ? 흩어진 Aspect 를 모아서 모듈화 할 수 있는 프로그래밍 기법이다. 이것도 당췌 어떤 의미인지 알기 어렵다. 좀더 쉽게 다가가 보자 관점지향이란 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어 본다는 말이고, 이에 따라서 각관점을 기준으로 각각 모듈화 하는 프로그래밍 기법인것이다. 여기서 모됼화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶어주는 것을 말한다. 즉 관점에따라서 각각 모듈화하는 프로그래밍 기법이다. 핵심목표와 부가적인목표 우리가 프로그램작성시 핵심적인 목표로 하는것은 비지니스로직을 실행시키는 것이다. 하지만 부가적인 목..
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 - 메서드..