JDBC를 사용하여 DB에 일부 데이터를 저장하기 위해 일반 Java 클래스를 호출하는 Grails 서비스 메서드가 있습니다. 다음으로, grails 서비스 메소드는 또한 같은 DB에 기록한다. 이것은 모두 동일한 트랜잭션에서 발생해야합니다.선언 JDBC 트랜잭션 (Grails 서비스)을 순수 JDBC 코드로 전파
def dataSource
def myServiceMethod() {
MyJDBCClass jdbcClass = new MyJDBCClass(dataSource.getConnection())
jdbcClass.savePerson(new PersonDto("Bob"))
Person p = Person.findByFirstName("Bob")
p.firstName = "John"
if (p.firstName == "John") {
throw new RuntimeException("Test rollback of Bob")
}
p.save()
}
myServiceMethod 현재 기본 전파 형식을 사용하고 있습니다 : PROPAGATION_REQUIRED를 (이 서비스 방법이기 때문에).
MyJDBCClass는 순수한 Java/JDBC이며 Spring의 트랜잭션 관리에 대한 의존성을 원하지 않는 별도의 JAR 파일에 있습니다. 나는 어떻게 진행해야할지 모르겠습니다.
감사합니다.
MyJDBCClass에서 어떻게 연결을 사용합니까? –
귀하의 의견에 대한 답변으로 Q가 업데이트되었습니다. 나는 내 질문에 대답했을지 모른다. 내가 연결을 통과하고 jdbcClass.savePerson이 커밋, 롤백 또는 어떤 방식 으로든 연결을 변경하지 않는 한 정상적으로 작동한다고 생각합니다. 이 방법이 올바른지 확인하기 만하면됩니다. – nogridbag
예,'dataSource.getConnection()'은 GORM 메소드에서 사용하는 서비스 메소드와 동일한 연결입니다. –