RelationalEvent 발행중단
sjh836 opened this issue · 3 comments
안녕하세요? 정말 잘 사용하고 있습니다.
spring-data-jdbc 는 기본적으로 RelationalEvent 를 모든 life cycle 에서 발행합니다.
https://docs.spring.io/spring-data/relational/reference/jdbc/events.html
이것을 비활성화하기 위해서는 JdbcAggregateTemplate.setEntityLifecycleEventsEnabled(false)
를 해야하는데요,
https://docs.spring.io/spring-data/jdbc/docs/3.2.2/api/org/springframework/data/jdbc/core/JdbcAggregateTemplate.html#setEntityLifecycleEventsEnabled(boolean)
bean 을 재정의하더라도, 본 프로젝트에서는 아래와 같이 사용?하고있어서 먹지를 않는 것 같습니다.
https://github.com/naver/spring-jdbc-plus/blob/main/spring-data-jdbc-plus-repository/src/main/java/com/navercorp/spring/data/jdbc/plus/repository/support/JdbcPlusRepositoryFactory.java#L76
@sjh836 안녕하세요 해당 코드는 현재는 원본 코드인 JdbcRepositoryFactory
와 다르지 않습니다.
현재 해당 옵션은 코드 상으로는 spring-data-mongodb
, spring-data-cassandra
에서만 유효한 것으로 보입니다.
저희도 @Override
를 삭제하여 혼동을 줄이도록 하거나, 옵션 추가를 고려해보도록 하겠습니다.
혹시 어떤 사용을 위해 이벤트 발행을 중단하려 하는지 알 수 있을까요?
@sjh836 안녕하세요
해당 옵션은 AbstractJdbcConfiguration#jdbcAggregateTemplate
을 재정의하여 설정해줄 수 있는 것으로 보이고, 주석에서
a bean for easy use in applications that need a lower level of abstraction than the normal repository abstraction.
내용을 보아 JdbcAggregateTemplate
을 애플리케이션 코드에서 직접 사용할 때만 유의미한 것으로 보입니다.
언급해주신 Factory 는 위에서 @IAM20 님께서 남겨주신 것처럼 차이가 없고
spring-data-jdbc 단 Factory 에서도 AbstractJdbcConfiguration
에서 등록한 bean 은 사용하지 않고
(Factory 는 애플리케이션에서 인터페이스로 정의한 CrudRepository 들을 bean 으로 만들어서 넣어주는 코드로 확인했습니다)
따로 옵션도 제공하지 않는 것으로 보입니다.
말씀드린 사용성 외에 혹시 필요한 부분이 있을까요?
아 그렇군요.. 꼼꼼히 확인해주셔서 감사합니다 (__)
공식문서 중 Entity lifecycle events can be costly, and you may notice a change in the performance profile when loading large result sets
라는 문구때문에, RelationalEvent 를 사용할 일이 없어서, 비활성화하려고 했습니다.
내부적으로 custom 하게 재정의해서 eventsEnabled 를 false 로 바꿨습니다.
감사합니다.