При использовании клиента облачного хранилища Google вы можете, например, создать и удалить изображение из хранилища Google.Два метода create и delete не генерируют исключения.Исключением являются, например, проблемы с подключением, которые обрабатываются облачным клиентом Google?
Кажется, что эти функции возвращают реальный объект или ноль / ложь в случае чего-то плохого.Правильно?
Это код, который я использую для создания и обновления URL-адреса изображения в базе данных:
Storage storage = StorageOptions.newBuilder().setCredentials(credentials).setProjectId("project-id").build().getService();
BlobInfo blobInfo = BlobInfo.newBuilder(blobId).setContentType(userImage.getContentType()).build();
UUID uuid = UUID.randomUUID();
String path = uuid.toString();
BlobId blobId = BlobId.of("bucket", path);
try {
Blob blob = storage.create(blobInfo, userImage.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
user.setImageUrl("https://storage.googleapis.com/bucket" + path);
this.userRepository.save(user);
Я хочу быть уверен, что создание произошло и что URL-адрес был зафиксированв базу данных при возврате из этой функции.
Я также хотел бы добавить следующее:
При добавлении я хотел бы удалить последнее изображение, используя URL-адрес в базе данных перед обновлением.
Но опять-таки, здесь я хотел бы, чтобы все это происходило или ничего.
И кажется, что я могу создать изображение и не могу сохранить URL-адрес и потерять изображение в Googleместо хранения.То же самое может случиться при удалении.Например, вы удаляете изображение, но затем не можете обновить URL-адрес изображения в базе данных, и у меня будет сломанное изображение, например, во внешнем интерфейсе.
Итак, как я могу реализовать своего рода транзакцию, включая добавление нового изображения и URL-адреса и удаление старого изображения и старого URL-адреса.
Или какой другой механизм, решение можетЯ расследую?Что дают мне это гарантии?
Можете ли вы помочь мне и указать мне правильное направление?