[TIL] 230817 ๊ฒฐ๊ตญ.. Image Entity ๋ถ„๋ฆฌ..

CountryGirlยท2023๋…„ 8์›” 17์ผ

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
41/80

๐Ÿ“Œ ๋ฌธ์ œ์  & ์‹œ๋„ & ํ•ด๊ฒฐ

๐Ÿ‘ฟ ๋ฌธ์ œ์ 

 @Column(nullable = false)
 @ElementCollection
 private List<String> imageNames;

ํด๋”๋ช…์ด postId์—์„œ postId + UUID.randomUUID().substring(19) ์œผ๋กœ ๋ฐ”๊พธ๋ฉด์„œ ํด๋”๋ช…์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์ข‹๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

ํด๋”๋ช…์„ ์ €์žฅํ•˜๋ฉด ๊ฒŒ์‹œ๊ธ€์„ ์‚ญ์ œํ•  ๋•Œ ํด๋”๋ฅผ ํ†ต์ฑ„๋กœ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๐Ÿค” ์‹œ๋„

@Entity
@Getter
@NoArgsConstructor
public class Image extends Timestamped {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column
    private Long id;

    @Column(nullable = false)
    private String imageName;

    @Column(nullable = false)
    private String folderName;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "post_id")
    private Post post;

    public Image(String imageName, String folderName, Post post) {
        this.imageName = imageName;
        this.folderName = folderName;
        this.post = post;
    }
}

๐Ÿ˜Ž ํ•ด๊ฒฐ

public void deleteFolder(String requestFolderName) {
        ObjectListing objectListing = amazonS3Client.listObjects(s3Bucket, "images/" + requestFolderName);
        List<DeleteObjectsRequest.KeyVersion> keyVersions = new ArrayList<>();
        for (S3ObjectSummary objectSummary : objectListing.getObjectSummaries()) {
            keyVersions.add(new DeleteObjectsRequest.KeyVersion(objectSummary.getKey()));
        }
        if (!keyVersions.isEmpty()) {
            DeleteObjectsRequest deleteObjectsRequest = new DeleteObjectsRequest(s3Bucket).withKeys(keyVersions);
            amazonS3Client.deleteObjects(deleteObjectsRequest);
        }
    }

์ด๋ ‡๊ฒŒ ํด๋”๋ฅผ ํ†ต์ฑ„๋กœ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค. ํด๋”๋ช…์„ ์ €์žฅํ•˜๋‹ˆ๊นŒ ๋„ˆ๋ฌด ํŽธํ•˜๋‹ค.. ์ง„์ž‘์— ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค๊ป„..

profile
๐Ÿ’ป๐ŸŒพ์‹œ๊ณจ์†Œ๋…€์˜ ์—‰๋ง์ง•์ฐฝ ๊ฐœ๋ฐœ ์„ฑ์žฅ์ผ์ง€๐ŸŒพ๐Ÿ’ป (2023.05.23 ~)

0๊ฐœ์˜ ๋Œ“๊ธ€