개발괘발
339
2019-10-04 15:42:01
5
438

자바 Exception 무시하고 sql 실행시키는 방법 없나요?


안녕하세요 선배님들!

if ( ) {

  a.insert(); // sql 삽입코드

  throw new Exception; // 강제 에러발생

}

위와같은 코드가 있을 때 a.insert()가 실행이된 후 아래 Exception때문인진 모르겠지만 자동으로 롤백이 되던데 그렇지 않게 할수 있는 방법이 있을까요?? Exception이 발생되더라도 그전에 실행됐던 쿼리는 그대로 커밋이 되는방법.. 구글링해도 안나와서 글올려봅니다.,.

0
  • 답변 5

  • minarai
    2k
    2019-10-04 15:48:42


    JDBC인지 mybatis인지는 모르겠지만
    트랜잭션 설정에 걸려있는 것 같은데
    그거 찾아서 설정 false로 바꾸셔야 할 것 같아요.


    위에 소스만 가지고는 답변이 힘들 것 같아요


  • 초코쪼꼬
    6k
    2019-10-04 15:54:23

    @Transactional 때문인거 같은데..


    그런데 exception이 발생했는데 기존 것을 롤백하는게 맞는거 아니에요?


    부분이라도 필요하시다면 저 어노테이션을 빼면 될겁니다.

  • 개발괘발
    339
    2019-10-04 15:54:33

    <t:advice id="txAdvice_exclude">

                <t:attributes>

                    <t:method name="**" propagation="NOT_SUPPORTED" rollback-for="DataAccessException"/>

                    <t:method name="select*" read-only="true"/>

                    <t:method name="find*" read-only="true"/>

                    <t:method name="get*" read-only="true"/>

                    <t:method name="query*" read-only="true"/>

                    <t:method name="paging" read-only="true"/>

                    <t:method name="search" read-only="true"/>

                </t:attributes>

            </t:advice>


            <a:config>

                <a:pointcut id="pc_exclude" expression="execution(public * a.insert*(..))

    or execution( public * b.insert*(..) )"/>

                <a:advisor advice-ref="txAdvice_exclude" pointcut-ref="pc_exclude"/>

            </a:config>


    이런식으로 되어있는데 저 pointcut 안에 클래스이름을 넣으면 제외가되는걸까요??

  • 퓨리오사
    3k
    2019-10-04 15:55:35

    어떤 환경인지 모르겠지만 아래 키워드로 구글 검색해보세요

    jdbc autocommit 

    jdbc commit, rollback 

  • 개발괘발
    339
    2019-10-04 15:56:23

    @초코쪼꼬

    원래라면 Exception이 발생했을 때 롤백을 하는것이 맞는데

    제가 지금하는부분이 Exception이 발생해도 DB에 이력을남기는거라서요..

  • 로그인을 하시면 답변을 등록할 수 있습니다.