[Go] gorm
gorm์ go์ ๋ํ์ ์ธ ORM ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋๋ค.
ํธ๋ถํธ๊ฐ ๋ง์ด ๊ฐ๋ฆฌ๊ธด ํ๋๋ฐ, ๊ทธ๋ผ์๋ ๋ํ์ ์ผ๋ก ๋ง์ด ์ฐ์ธ๋ค.
์ค์น
๊ธฐ๋ณธ ๋ชจ๋์ ์ค์นํ๊ณ
go get -u gorm.io/gorm

์ฌ๋ DB ๋ชจ๋๋ค์ด ๊ทธ๋ ๋ฏ, ์ฌ์ฉํ DB์ ๋๋ผ์ด๋ฒ๋ ๊น์์ผ ํ๋ค.
go get -u gorm.io/driver/postgres
๋ postgres๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ
db ์ฐ๊ฒฐ์ ๋ค์๊ณผ ๊ฐ์ ํํ๋ก ํ ์ ์๋ค.

databaseURL := "host=localhost user=postgres password=... dbname=postgres port=5432 sslmode=disable"
db, err := gorm.Open(postgres.Open(databaseURL), &gorm.Config{})
if err != nil {
panic(err)
}
์ db ๊ฐ์ฒด ๊ฐ์ ธ๋ค๊ฐ ์ด๊ฒ์ ๊ฒ ๋๋ ค์ฐ๋ฉด ๋๋ค.
๋ชจ๋ธ ์ ์
๋ชจ๋ธ์ gorm.Model๋ง ์๋ฒ ๋ฉํด์ ๊ตฌ์กฐ์ฒด๋ก ์ ์ํ๋ฉด ๋๋ค.

์ ์์ ๋ค์ด๊ฐ Model์
์ด๋ฐ ๊ธฐ๋ณธํ๋๋ค์ด ๋ค์ด์๋ค.
ํ ์ด๋ธ์์ฑ์ ์ด๋ ๊ฒ ๋๋ฆฌ๋ฉด ๋๊ณ

์ด๋ฐ์์ผ๋ก ํ ์ด๋ธ์ด ์๋ ์์ฑ๋ ๊ฒ์ด๋ค.

Insertํ๊ธฐ
Create ํจ์์ ๋ชจ๋ธ ๊ฐ์ ๋๊ธฐ๋ฉด ์์ฑ์ด ๋๋ค.

์ด๋ ๊ฒ

์กฐํํ๊ธฐ
์ด๋ ๊ฒ ๋ฐ์ดํฐ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๊ณ

id๊ฐ 4์ธ๊ฑธ ํ๋ ๊ฐ์ ธ์ค๋ ค๋ฉด, ์ด๋ฐ์์ผ๋ก ํ ์ ์๋ค.

๊ทธ๋ผ ๋ฑ ์ฐ์ด์ ๊ฐ์ ธ์ฌ ๊ฒ์ด๋ค.
์ ๋์ ์ธ ํํฐ๋ฅผ ์ฃผ๋ ค๋ฉด ์ด๋ ๊ฒ ๋ฌธ์์ด ๋ก์น ์ ์ค์ผ ํ๋ค.
?๊ฐ replacement๋ค.
๊ทธ๋ผ ์ ์ ํ ์ฐพ์์ ๊ฐ์ ธ์ฌ ๊ฒ์ด๋ค.

list๋ก ๊ฐ์ ธ์ค๋ ค๋ฉด First ๋์ Find๋ฅผ ์ฐ๋ฉด ๋๋ค.

ํํฐ ๋ฐฉ์์ ๊ฐ๋ค.
Updateํ๊ธฐ
์์ ํ๋ ค๋ฉด Model ํจ์๋ก ์กฐ๊ฑด์ ์ค ๋ค์์ Update๋ฅผ ํธ์ถํด์ ์์ ํ๋ ๋ฐฉ์์ ์ทจํ๋ค.

์ ๋ฌ๋ฉด money ํ๋ ํ๋๋ง ์์ ํ๋๋ฐ
๋์์ ๋ฉํฐํ๋๋ฅผ ์์ ํ๋ ค๋ฉด, ์ด๋ ๊ฒ ๊ตฌ์กฐ์ฒด๋ฅผ ๋ฐ๋ Uodates ํจ์๋ฅผ ์ธ ์ ์๋ค.

zero value๋ ๋ฌด์ํ๋ ๊ฒ ๊ฐ๋ค.
์ญ์ ํ๊ธฐ
gorm์์ ์ญ์ ์ ๊ธฐ๋ณธ๋์์ soft delete๋ค.

๊ทธ๋์ ์ง์ง ์ญ์ ๋ฅผ ํ์ง๋ ์๊ณ
ํ๋๋ง ์ญ์ ๋ ๊ฒ์ผ๋ก ํ์ํ๋ค.