2016-07-01 11 views
2

Wie Einfügen von Objekt in einer einzigen Transaktion mit Spring-Boot-Anwendung. Wenn jemand unter dem Objekt diese Transaktion nicht einfügt, wird er zurückgesetzt.Wie JPA-Transaktion mit Spring Boot-Anwendung zu implementieren?

clientInBoundFilesService.saveClientInBoundFiles(clientInBoundFiles); 
icdCodeService.saveICDCode(icdCode); 
cptCodeService.saveCPTCode(cptCode); 
insuranceService.saveInsurance(insurance); 
referingProviderService.saveReferingProvider(referingProvider); 

Hier ist meine pom.xml

<parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.3.5.RELEASE</version> 
    </parent> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <start-class>org.sam.application.Application</start-class> 
     <java.version>1.6</java.version> 
    </properties> 
    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-jdbc</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.10</version> 
     </dependency> 

Hier mein JpaRepositoryFactory.java ist.

@Component 
public class JpaRepositoryFactory { 

    @PersistenceContext 
    private EntityManager entityManager; 

    public <T> T getRepository(Class clazz) { 
     notNull(clazz); 
     notNull(entityManager); 
     T crudRepository = (T) new SimpleJpaRepository(clazz, entityManager); 
     return crudRepository; 
    } 
} 

Hier ist meine Service-Klasse

@Service 
public class ClaimDetailService { 

    private JpaRepositoryFactory jpaRepositoryFactory; 
    private NamedParameterJdbcTemplate namedParameterJdbcTemplate; 

    @Autowired 
    public ClaimDetailService(JpaRepositoryFactory jpaRepositoryFactory) { 
     this.jpaRepositoryFactory = jpaRepositoryFactory; 
    } 

    @Autowired 
    public void setDataSource(DataSource dataSource) { 
     this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource); 
    } 

    @Transactional 
    public void saveClaimDetail(ClaimDetail claimDetail) { 
     JpaRepository<ClaimDetail, Long> mailAuditLogLongJpaRepository = jpaRepositoryFactory.getRepository(ClaimDetail.class); 
     mailAuditLogLongJpaRepository.save(claimDetail); 
    } 

} 

Antwort

4
clientInBoundFilesService.saveClientInBoundFiles(clientInBoundFiles); 
icdCodeService.saveICDCode(icdCode); 
cptCodeService.saveCPTCode(cptCode); 
insuranceService.saveInsurance(insurance); 
referingProviderService.saveReferingProvider(referingProvider); 

Code mit irgendeiner Methode eq Wickeln. (Sie können einen neuen Dienst erstellen und benötigten Dienste injizieren)

@Transactional 
void allInOneTransaction(){ 
    clientInBoundFilesService.saveClientInBoundFiles(clientInBoundFiles); 
    icdCodeService.saveICDCode(icdCode); 
    cptCodeService.saveCPTCode(cptCode); 
    insuranceService.saveInsurance(insurance); 
    referingProviderService.saveReferingProvider(referingProvider); 
} 

Standard @Transactional Ausbreitung Propagation.REQUIRED ist -> Unterstützung einer aktuellen Transaktion, erstellen Sie eine neue, wenn keiner vorhanden ist.

Verwandte Themen