๐Ÿ’ป Knowledge/ํ…Œ์ŠคํŠธ์ฝ”๋“œ

deleteAllInBatch() vs deleteAll() ๋ฉ”์„œ๋“œ์˜ ์ฐจ์ด

ming412 2024. 12. 31. 17:31

์ƒํ’ˆ(product)๊ณผ ์ฃผ๋ฌธ(order), ๊ทธ๋ฆฌ๊ณ  ์ด ๋‘ ํ…Œ์ด๋ธ” ๊ฐ„ ์—ฐ๊ฒฐ ํ…Œ์ด๋ธ”์ธ orderProduct๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž. 

`deleteAllInBatch()` ๋ฉ”์„œ๋“œ๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ๊ณผ `deleteAll()` ๋ฉ”์„œ๋“œ๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ์˜ ์ฐจ์ด๋ฅผ ์•Œ์•„๋ณด์ž.

 

deleteAllInBatch()

๋จผ์ € `deleteAllInBatch()` ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์ •๋ฆฌํ•ด๋ณผ ๊ฒƒ์ด๋‹ค.

@AfterEach
void tearDown() {
    orderProductRepository.deleteAllInBatch();
    productRepository.deleteAllInBatch();
    orderRepository.deleteAllInBatch();
}

 

์œ„ ํ…Œ์ŠคํŠธ์ฝ”๋“œ ์‹คํ–‰ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ์ฟผ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Hibernate:
	delete
    from
    	order_product
Hibernate:
	delete
    from
    	product
Hibernate:
	delete
    from
    	orders

 

๊น”๋”ํ•˜๊ฒŒ delete ์ฟผ๋ฆฌ ์„ธ ๋ฒˆ๋งŒ ๋ฐœ์ƒํ•œ ๋ชจ์Šต์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์‹คํ–‰ ์ˆœ์„œ์— ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋ฐ, ๋งŒ์•ฝ `orderProductRepository.deleteAllInBatch();`๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ์‹คํ–‰ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด Product๋ฅผ ์ง€์šฐ๋Š” ๊ณผ์ •์—์„œ ํ…Œ์ŠคํŠธ์— ์‹คํŒจํ–ˆ์„ ๊ฒƒ์ด๋‹ค.

 

deleteAll()

์ด๋ฒˆ์—๋Š” deleteAll() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ž.

@AfterEach
void tearDown() {
    orderProductRepository.deleteAll();
    productRepository.deleteAll();
    orderRepository.deleteAll();
}

 

ํ…Œ์ŠคํŠธ์ฝ”๋“œ ์‹คํ–‰ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ์ฟผ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์•ž์„  deleteAllInBatch()๋Š” ๊น”๋”ํ•˜๊ฒŒ delete ์ฟผ๋ฆฌ ์„ธ ๋ฒˆ๋งŒ ๋ฐœ์ƒํ•œ ๋ฐ˜๋ฉด, deleteAll()์€ ๊ต‰์žฅํžˆ ๋งŽ์€ ์ฟผ๋ฆฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

Hibernate:
	select
    	orderprodu0_.id as id1_1_,
        orderprodu0_.created_date_time as created_2_1_,
        orderprodu0_.modified_date_time as modified3_1_,
        orderprodu0_.order_id as order_id4_1_,
        orderprodu0_.product_id as product_5_1_
    from
    	order_product orderprodu0_
Hibernate:
	delete
    from
    	order_product
    where
    	id=?
Hibernate:
	delete
    from
    	order_product
    where
    	id=?
Hibernate:
	select
    	product0.id as id1_3_,
        product0.created_date_time as created_2_3_,
        product0.modified_date_time as modified3_3_,
        product0.name as order_id4_3_,
        product0.price as product_5_3_,
        product0.product_number as product_6_3_,
        product0.selling_status as product_7_3_,
        product0.type as product_8_3_
    from
    	product product0_
Hibernate:
	delete
    from
    	product
    where
    	id=?
Hibernate:
	delete
    from
    	product
    where
    	id=?
Hibernate:
	delete
    from
    	product
    where
    	id=?
Hibernate:
	select
    	order0.id as id1_2_,
        order0.created_date_time as created_2_2_,
        order0.modified_date_time as modified3_2_,
        order0.order_status as order_id4_2_,
        order0.registered_date_time as product_5_2_,
        order0.total_price as product_6_2_
    from
    	orders order0_
Hibernate:
	select
    	orderprodu0_.order_id ad order_id4_1_0,
    	orderprodu0_.id as id1_1_0_,
        orderprodu0_.id as id1_1_1_,
        orderprodu0_.created_date_time as created_2_1_1_,
        orderprodu0_.modified_date_time as modified3_1_1_,
        orderprodu0_.order_id as order_id4_1_1_,
        orderprodu0_.product_id as product_5_1_1_
    from
    	order_product orderprodu0_
    where
    	orderprodu0_.order_id=?
Hibernate:
	delete
    from
    	orders

 

๋ชป๋ณด๋˜ select ๋ฌธ์ด ์ƒ๊ฒผ๋‹ค..!

 

where ์ ˆ์ด ์—†๋Š”๊ฑธ๋กœ ๋ณด์•„, Order ํ…Œ์ด๋ธ” ์ „์ฒด๋ฅผ ์กฐํšŒํ•œ 

 

์ดํ›„ OrderProduct๋ฅผ ์ง€์› ๋Š”๋ฐ, delete๋ฌธ์ด ๋‘ ๋ฒˆ ๋ฐœ์ƒํ•œ ๊ฒƒ์„ ๋ณด๋ฉด ๊ฑด๊ฑด์ด ์ง€์šด ๊ฒƒ์ด๋‹ค.

(ํ˜„์žฌ OrderProduct ํ…Œ์ด๋ธ”์—๋Š” 1๋ฒˆ๊ณผ 2๋ฒˆ ์ƒํ’ˆ์— ๋Œ€ํ•œ ๋‘ ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค.)

 

๊ทธ๋ฆฌ๊ณ  Product๋ฅผ ์ง€์šฐ๊ธฐ ์ „์—, ๋˜ Product ํ…Œ์ด๋ธ” ์ „์ฒด๋ฅผ ์กฐํšŒํ•œ๋‹ค.

์ดํ›„ Product๋ฅผ ๊ฑด๊ฑด์ด 3๊ฐœ ์ง€์šด๋‹ค. (ํ˜„์žฌ Product ํ…Œ์ด๋ธ”์—๋Š” 3๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค.)

 

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Order๋ฅผ ์ง€์šฐ๊ธฐ ์ „์—, Order ํ…Œ์ด๋ธ” ์ „์ฒด๋ฅผ ์กฐํšŒํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  Order ํ…Œ์ด๋ธ”๊ณผ ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ์žˆ๋Š” OrderProduct๋ฅผ order_id๋ฅผ ์ด์šฉํ•ด ํ•œ ๋ฒˆ ๋” ์กฐํšŒํ•œ๋‹ค.

(์ด์ „์— OrderProduct๋ฅผ ์ด๋ฏธ ์ง€์› ๊ธฐ ๋•Œ๋ฌธ์—) Order๋งŒ ๊ฑด๊ฑด์ด ์ง€์šด๋‹ค.

 

deleteAll()์€ ๋‚ด๋ถ€์ ์œผ๋กœ for๋ฌธ์„ ํ†ตํ•ด ๊ฐ ๊ฐ์ฒด์— ๋Œ€ํ•œ ๋ชจ๋“  ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ํ•˜๋‚˜์”ฉ ์ง€์šฐ๊ธฐ ๋•Œ๋ฌธ์— `orderProductRepository.deleteAll();`์„ ์ฃผ์„์ฒ˜๋ฆฌ ํ•˜๋”๋ผ๋„ ํ…Œ์ŠคํŠธ์— ์‹คํŒจํ•˜์ง€ ์•Š๋Š”๋‹ค. (order๋ฅผ ์ง€์šฐ๋ฉด์„œ orderProduct๊นŒ์ง€ ๊ฐ™์ด ์ง€์›Œ์ง)

 

์ •๋ฆฌ

deleteAll()์€ ๋‹ค์ˆ˜์˜ ์ฟผ๋ฆฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ ์ €ํ•˜๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์–ด, ๋ณดํ†ต deleteAllInBatch()๋ฅผ ๋” ์„ ํ˜ธํ•˜๋Š” ํŽธ์ด๋‹ค. 

deleteAllInBatch()๋Š” ํ•œ ๋ฒˆ์— ๋ฒŒํฌ ์ฟผ๋ฆฌ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด ์„ฑ๋Šฅ ๋ฉด์—์„œ ๋” ํšจ์œจ์ ์ด๊ณ  ๊น”๋”ํ•˜๊ฒŒ ๋™์ž‘ํ•œ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๊ณ  deleteAllInBatch()๊ฐ€ ๋‚˜์˜๋‹ค๋Š”๊ฑด ์•„๋‹ˆ๋‹ค.

 

deleteAll()์€ ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ์ง์ ‘ ์ •๋ฆฌํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ํŽธ๋ฆฌํ•จ์ด ์žˆ์œผ๋‹ˆ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ ์ ˆํžˆ ์„ ํƒํ•˜๋ฉด ๋  ๋“ฏํ•˜๋‹ค!