Java

[Effective Java] ์•„์ดํ…œ 35. ordinal ๋ฉ”์„œ๋“œ ๋Œ€์‹  ์ธ์Šคํ„ด์Šค ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ.

quedevel 2023. 3. 21. 10:32
728x90
๋ฐ˜์‘ํ˜•

๐ŸŽฏ ์•„์ดํ…œ 35. ordinal ๋ฉ”์„œ๋“œ ๋Œ€์‹  ์ธ์Šคํ„ด์Šค ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ.

์—ด๊ฑฐ ํƒ€์ž…์€ ํ•ด๋‹น ์ƒ์ˆ˜๊ฐ€ ๊ทธ ์—ด๊ฑฐ ํƒ€์ž…์—์„œ ๋ช‡ ๋ฒˆ์งธ ์œ„์น˜์ธ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ordinal์ด๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

public enum RoleType {
    USER, ADMIN;
}
@Entity
public class Member {
    @Id
    private Long id;

    @Column(name = "name")
    private String username;

    private Integer age;

    @Enumerated(EnumType.ORDINAL)
    private RoleType roleType;
}    

์œ„ ์ฒ˜๋Ÿผ javax.persistence์—์„œ ์ œ๊ณตํ•˜๋Š” ํƒ€์ž…์„ enum์œผ๋กœ ์ง€์ •ํ•˜๋Š” @Enumerated์„ ์ œ๊ณตํ•ด์ค€๋‹ค.

@Enumerated ์• ๋„ˆํ…Œ์ด์…˜์—๋Š” ๋‘ ๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ๋Š”๋ฐ EnumType.ORDINAL๊ณผ EnumType.STRING์ด ์žˆ๋Š”๋ฐ

EnumType.ORDINAL์„ ์˜ต์…˜์œผ๋กœ ๋„ฃ์œผ๋ฉด ๋‚ด๋ถ€์ ์œผ๋กœ ordinalํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— enum๊ฐ’์„ ์ˆœ์„œ๋กœ ์ €์žฅํ•˜๊ฒŒ ๋˜๋Š”๋ฐ

์—ฌ๊ธฐ์„œ ๋งŒ์•ฝ RoleType์— ์ถ”๊ฐ€๊ฐ€ ๋œ๋‹ค๋ฉด GUEST๋ผ๋Š” ๊ฐ’์ด ์•ž์—์„œ ์ถ”๊ฐ€๊ฐ€ ๋œ๋‹ค๋ฉด USER๋กœ ์ €์žฅ๋œ ๊ฐ’์€ GUEST๋กœ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์œ„ํ—˜ํ•˜๋‹ค.

public enum RoleType {
    GUEST, USER, ADMIN;
}

๋”ฐ๋ผ์„œ, ํŠน๋ณ„ํ•œ ์šฉ๋„๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ordinal ๋ฉ”์„œ๋“œ๋Š” ์ ˆ๋Œ€ ์‚ฌ์šฉํ•˜์ง€ ๋ง์ž


์ฐธ๊ณ  ์ž๋ฃŒ

Joshua Bloch, ใ€ŽEffective Java 3/Eใ€, ๊ฐœ์•ž๋งต์‹œ ์˜ฎ๊น€, ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ธ์‚ฌ์ดํŠธ(2018)
http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788966262281&orderClick=LEa&Kc=

728x90
๋ฐ˜์‘ํ˜•