Загрузка данных


@Entity
@Table(name = "my_entity")
@Getter
@Setter
@NoArgsConstructor
public class MyEntity {
    @Id
    @GeneratedValue
    private Long id;

    private String name;
    private String status;

    public MyEntity(String name, String status) {
        this.name = name;
        this.status = status;
    }
}

public interface MyEntityRepository extends JpaRepository<MyEntity, Long> {
}

@Service
@RequiredArgsConstructor
public class NestedPersister {
    private final MyEntityRepository repository;

    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public void persist(String name) throws IOException {
        repository.save(new MyEntity(name, "PENDING"));
        Files.write(Path.of("C:", "test", "missing-file.txt"), "data".getBytes());
    }
}

@Service
@RequiredArgsConstructor
public class BasePersister {
    private final MyEntityRepository repository;
    private final NestedPersister nestedPersister;

    @Transactional
    public void persist(String name) throws IOException {
        repository.save(new MyEntity(name, "ACTIVE"));
        nestedPersister.persist("nested-" + name);
    }
}