일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- fractional seconds
- Protecle
- NamedEntityGraph
- @EntityListeners
- @CreateDate
- 1*1000
- yml
- RootGraph
- https
- mysql =
- spring boot
- pooled-lo
- deserializer
- getDateCellValue
- +9:00
- 버전 문자열 비교
- mysql equal null
- MYSQL
- load order
- EmbeddedId
- 티스토리챌린지
- createEntityGraph
- 오블완
- getEntityGraph
- 운동해서 광명찾자
- MSSQL
- apatch poi
- mysql not equal null
- sendFractionalSeconds
- AuditingEntityListener
- Today
- Total
목록spring (17)
Hello
비즈니스 코드를 작성하다 보면 다른 트랜잭션의 메소드를 호출해야 할 때가 있습니다. 이 글에서는 Spring에서 트랜잭션을 관리하는 세 가지 방법을 비교하고, 각 방법의 장단점을 설명합니다. 상황에 맞는 최적의 트랜잭션 관리 방법을 선택할 수 있습니다. 1. Self-InjectionSpring Bean이 자신을 의존성으로 주입받아 사용하는 방식입니다. 사용 방법이 간단하며, 메소드 간의 트랜잭션 경계를 명확하게 나눌 수 있습니다.장점단순성: 코드가 비교적 단순하고 이해하기 쉽습니다.명확한 트랜잭션 경계: 메소드 간의 트랜잭션 경계를 명확하게 정의할 수 있습니다.간단한 설정: 설정이 비교적 간단하여 빠르게 적용할 수 있습니다.유연성: 특정 메소드에만 트랜잭션을 적용할 수 있어 유연하게 트랜잭션을 관리할 ..
문제 상황프로젝트에 Spring HATEOAS를 도입 후 리얼에 반영해 에러가 발생했습니다.Mixed Content: The page at 'https://aaa.com/view/1' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://aaa.com/api/1'. This request has been blocked; the content must be served over HTTPS.-> HTTPS에서 HTTP 요청시 블럭 발생 해당 프로젝트는 로드 밸런서 뒤에 어플리케이션이 있는 구성입니다.Spring HATEOAS https 관련해서 검색을 해보니, 기본적으로 Spring Framework 인프라를 사용하여..
Spring HATEOAS(Hypermedia As The Engine Of Application State)는 RESTful 서비스에서 하이퍼미디어를 쉽게 구현할 수 있도록 도와주는 라이브러리입니다. 하이퍼미디어는 클라이언트가 서버의 리소스와 상호작용할 수 있는 링크를 포함하여, API의 탐색성을 높여줍니다. Spring HATEOAS를 사용한 이유는 유저 정보가 많고, 대부분의 정보가 변경이 필요 했기 때문입니다. 화면에서는 각 기능에 대한 URL을 받아 쉽게 처리할 수 있어 클라이언트가 링크를 통해 API를 탐색하고, 작업을 수행할 수 있습니다.유저 정보 관리가 더 효율적이고 직관적으로 관리할 수 있을 것 같아 Spring HATEOAS적용을 고려하고, 적용하게 되었습니다. spring v 2...
웹 요청을 할 때 요청 매개변수를 enum으로 받아야할 경우 기존에 String을 넘기면 enum을 매핑하는 코드를 작성하게 되어있었는데 매개변수에서 enum을 받을 수 있도록 수정한 내용 정리 <h4 style="background-color: #ffffff; color: #000000; text-align: start;" da..
master, slave 환경의 DB를 사용하고 있어 RoutingDataSource를 구현해 readOnly일 때 slave를 바라볼 수 있도록 사용하고 있습니다. 아래처럼 otherService가 호출 되었을 때, 각각의 트랜잭션으로 동작할 것을 기대했으나 SQL Error: "1290," SQLState: HY000 에러를 만나게 되었습니다. getOne에서 열린 트랜잭션에 포함되어 save메소드가 동작해 에러가 발생한 것입니다. @Transactional은 AOP 프록시를 생성합니다. 같은 빈에서 @Transactional이 붙은 메소드를 여러개 호출 시 최초 호출 되는 메소드의 옵션으로 프록시가 생성됩니다. 아래를 코드는 readOnly 옵션으로 트랜잭션이 활성 된 후 해당 트랜잭션에 save ..
Spring Data JPA @Query를 사용해 write 쿼리 작성하는 방법을 정리합니다. 짧게 이야기하면 @Query 사용해 write 쿼리를 작성 할 때 @Modifing 어노테이션이 필요합니다. @Modifying docs를 보면 @Query 어노테이션을 사용해 정의된 메서드 쿼리에서 INSERT, UPDATE, DELETE, DDL 작성 시 필요하다고 설명되어 있습니다. 아래처럼 delete 쿼리 작성 후 호출 하게 되면 '해당 쿼리는 DML 작업을 지원되지 않는 에러가 발생합니다. @Query("delete from Test1 t where t.test3 is not null") void deleteByTest3IsNotNull(); ERROR JAVA 8 org.hibernate.hql.i..
모던 자바 인 액션 10장 람다를 이용한 도메인 전용 언어(DSL)에서 Jooq를 알게되어 공부한 내용을 정리해보려고 합니다. DSL(Domain Specific Language) 이란 특정 영역에 특화된 언어를 말합니다. 내부 DSL : DSL 코드와 범용 코드를 동일한 프로그램 파일에 혼합하는 것으로, 예를 들어 자바로 구현한 DSL을 내부 DSL 이라고 할 수 있습니다. ex) QueryDSL, Jooq (자바 SQL DSL) 외부 DSL : 프로젝트에 DSL 추가. DSL 코드와 일반 코드를 별도의 파일에 보관하는 것으로, DSL 코드는 자동 코드 생성기를 통해 프로그래밍 언어 코드로 변환되거나 해당 생성기에 도메인별 코드로 로드되어 실행됩니다. ex) SQL Jooq(Java Object Ori..
예전에 redis pub기능을 사용했는데 오늘 pub / sub 사용하는 방법을 간단히 정리하려고 한다. Redis Publish/Subscribe - 특정 subscribe에게 메시지를 보내는 개념이 아니며 구독자 있는지, 없는지, 누구인지 알지 못한 채 채널로 메시지를 publish 합니다. - 푸시된 메시지를 따로 보관하지 않는다. - 구독자가 메세지를 받는 것을 보장하지 않아, subscribe 대상이 없는 상황에서 메시지를 publish하면 메시지는 publish 되고 보낼 곳이 없어 버려진다. 전송 보장을 하지 않는다. spring-boot-starter-data-redis dependency를 사용해 redis pub/sub 하는 방법 RedisAutoConfigration 에서 자동으로 R..
이전글에 properties 와 yaml을 비교하는 글을 작성했는데 그중 yaml 파일에 여러개 profile 을 하나의 파일에 작성가능한 기능이 있어 이를 테스트 해보고 적용하려고 합니다. .yml spring: datasource: driver-class-name: com.mysql.jdbc.Driver username: 4ones url: jdbc:mysql://127.0.0.1:3306/test_db password: qwerasdfzxcv server: name: a_server port: '9090' --- spring: config: activate: on-profile: test logging: level: org: hibernate: debug name: test-YAML abc: cli..
Spring Boot는 설정을 application.properties 또는 application.yml 파일을 통해 작성합니다. Intellij에서 Spring Initializr project를 만들면 application.properties가 기본 생성됩니다. 설정 관련 검색을 하면서 yml을 사용한 내용이 많이 보였습니다. 최근에 많은 사람이 yml을 사용하며 편리하다는 의견이 많아 인기있는 이유와 이 둘의 차이를 정리 해보려고 합니다. .yml 예제 spring: datasource: driver-class-name: com.mysql.jdbc.Driver username: test url: jdbc:mysql://127.0.0.1:3306/test_db password: test1234 log..