트랜잭션 에러
- 작성자 :
- 길**쉬
- 작성일 :
- 2023-11-08 08:40:53
- 조회수 :
- 2,933
- 구분 :
- 실행환경 / 3.9
- 진행상태 :
- 완료
Q
롤백을 기대했으나 롤백이 되지 않고 커밋되고 있습니다.
[org.mybatis.spring.SqlSessionUtils] SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1b6706ab] was not registered for synchronization because synchronization is not active
[org.mybatis.spring.transaction.SpringManagedTransaction] JDBC Connection [org.postgresql.jdbc.PgConnection@150f60a1] will not be managed by Spring
@Service 어노테이션을 등록한 퍼블릭 클래스 퍼블릭 메소드에 @Transactional(rollbackFor = Exception.class) 를 작성했습니다.
명시적으로 게시글 작성 후 throw new Exception을 해주었습니다. AOP는 현재 사용 하고 있지 않습니다.
어떠한 이유 때문에 트랜잭션이 안 먹는 건가요?
현재 서비스 어노테이션이 달린 클래스들은 잘 찾고 있습니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="gmx.fwd.mapper.post.PostMapper">
<insert id="writePost" parameterType="gmx.fwd.vo.postvo.PostVO">
INSERT INTO
exam.posts (email, title, content)
VALUES
(#{email}, #{title},#{content})
</insert>
</mapper>
[org.mybatis.spring.SqlSessionUtils] SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1b6706ab] was not registered for synchronization because synchronization is not active
[org.mybatis.spring.transaction.SpringManagedTransaction] JDBC Connection [org.postgresql.jdbc.PgConnection@150f60a1] will not be managed by Spring
@Service 어노테이션을 등록한 퍼블릭 클래스 퍼블릭 메소드에 @Transactional(rollbackFor = Exception.class) 를 작성했습니다.
명시적으로 게시글 작성 후 throw new Exception을 해주었습니다. AOP는 현재 사용 하고 있지 않습니다.
어떠한 이유 때문에 트랜잭션이 안 먹는 건가요?
현재 서비스 어노테이션이 달린 클래스들은 잘 찾고 있습니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="gmx.fwd.mapper.post.PostMapper">
<insert id="writePost" parameterType="gmx.fwd.vo.postvo.PostVO">
INSERT INTO
exam.posts (email, title, content)
VALUES
(#{email}, #{title},#{content})
</insert>
</mapper>
환경정보
-
- OS 정보 : window
- 표준프레임워크 버전 : 3.9
- JDK(JRE) 정보 : openjdk 1.8
- WAS 정보 : tomcat 9.0
- DB 정보 : pgsql
- 기타 환경 정보 :
A
안녕하세요.
표준프레임워크 센터입니다.
트랜잭션 세부 설정이 누락되었을수 있으니
다음 공개된 코드를 참고하여 비교하여 보시기 바랍니다.
https://github.com/eGovFramework/egovframe-common-components/blob/contribution/src/main/resources/egovframework/spring/com/context-transaction.xml
https://github.com/eGovFramework/egovframe-template-simple-backend/blob/contribution/src/main/java/egovframework/com/config/EgovConfigAppTransaction.java
dispatcher-servlet.xml 파일의 component-scan 설정의 경우
일반적으로 Controller에만 사용되고
Service와 Repository는 context-transaction.xml 파일 또는
다른 root context 설정 파일에서 스캔되므로
중복 스캔으로 인한 문제일 가능성이 있으니
이 부분을 검토해 보시기 바랍니다.
감사합니다.
표준프레임워크 센터입니다.
트랜잭션 세부 설정이 누락되었을수 있으니
다음 공개된 코드를 참고하여 비교하여 보시기 바랍니다.
https://github.com/eGovFramework/egovframe-common-components/blob/contribution/src/main/resources/egovframework/spring/com/context-transaction.xml
https://github.com/eGovFramework/egovframe-template-simple-backend/blob/contribution/src/main/java/egovframework/com/config/EgovConfigAppTransaction.java
dispatcher-servlet.xml 파일의 component-scan 설정의 경우
일반적으로 Controller에만 사용되고
Service와 Repository는 context-transaction.xml 파일 또는
다른 root context 설정 파일에서 스캔되므로
중복 스캔으로 인한 문제일 가능성이 있으니
이 부분을 검토해 보시기 바랍니다.
감사합니다.