[Spring] ๐Ÿคผโ€โ™‚๏ธ enum ํด๋ž˜์Šค

์ „์ฃผ์€ยท2022๋…„ 12์›” 9์ผ
0
post-thumbnail

๐Ÿคผโ€โ™‚๏ธ enum ํด๋ž˜์Šค ์ •์˜

์—ด๊ฑฐ์ฒด๋ฅผ ๋น„๊ตํ•  ๋•Œ ์‹ค์ œ ๊ฐ’๊ณผ ํƒ€์ž…๊นŒ์ง€ ์ฒดํฌํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ž˜์Šค

๐ŸŽŽ enum ํด๋ž˜์Šค ํŠน์ง•

  1. ์—ด๊ฑฐํ˜•์œผ๋กœ ์„ ์–ธ๋œ ์ˆœ์„œ์— ๋”ฐ๋ผ 0๋ถ€ํ„ฐ index ๊ฐ’์„ ๊ฐ€์ง„๋‹ค.(์ˆœ์ฐจ์ ์œผ๋กœ ์ฆ๊ฐ€)
  2. enum ์—ด๊ฑฐํ˜•์œผ๋กœ ์ง€์ •๋œ ์ƒ์ˆ˜๋“ค์€ ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ ์„ ์–ธํ•œ๋‹ค.
  3. ์—ด๊ฑฐํ˜• ๋ณ€์ˆ˜๋“ค์„ ์„ ์–ธํ•œ ํ›„ ๋งˆ์ง€๋ง‰์— ์„ธ๋ฏธ์ฝœ๋ก (;)์„ ์ฐ์ง€ ์•Š๋Š”๋‹ค.
  4. ์ƒ์ˆ˜์™€ ํŠน์ • ๊ฐ’์„ ์—ฐ๊ฒฐ์‹œํ‚ฌ๊ฒฝ์šฐ ๋งˆ์ง€๋ง‰์— ์„ธ๋ฏธ์ฝœ๋ก (;)์„ ๋ถ™์—ฌ์ค˜์•ผํ•œ๋‹ค.

๐Ÿ‘€ ๋ฌธ๋ฒ•

	enum ์—ด๊ฑฐ์ฒด์ด๋ฆ„ {๊ฐ’1, ๊ฐ’2, ๊ฐ’3 ... }
	์—ด๊ฑฐ์ฒด์ด๋ฆ„ ๋ณ€์ˆ˜๋ช…;

๐Ÿ’ป ์ฝ”๋“œ

    package com.koreait.day4.model.enumclass;

    import lombok.AllArgsConstructor;
    import lombok.Getter;

    @AllArgsConstructor
    @Getter
    public enum UserStatus {
        REGISTERED(0,"๊ฐ€์ž…","์‚ฌ์šฉ์ž ๊ฐ€์ž…์ƒํƒœ"),
        UNREGISTERED(1,"ํƒˆํ‡ด","์‚ฌ์šฉ์ž ํƒˆํ‡ด์ƒํƒœ");

        private Integer id;
        private String title;
        private String description;
    }

EnumType.ORDINAL : enum ์ˆœ์„œ ๊ฐ’์„ DB์— ์ €์žฅ
EnumType.STRING : enum ์ด๋ฆ„์„ DB์— ์ €์žฅ

โœ” JPA์‚ฌ์šฉ์‹œ @Enumerated(EnumType.STRING)

    package com.koreait.day4.model.entity;

    import com.koreait.day4.model.enumclass.UserStatus;
    import lombok.AllArgsConstructor;
    import lombok.Builder;
    import lombok.Data;
    import lombok.NoArgsConstructor;

    import javax.persistence.*;
    import java.time.LocalDateTime;
    @Entity
    @NoArgsConstructor
    @AllArgsConstructor
    @Data
    @Builder
    public class Users {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
        private String userid;
        private String userpw;
        private String name;
        private String hp;
        private String email;
        @Enumerated(EnumType.STRING)
        private UserStatus status;
        private LocalDateTime regDate;
        private LocalDateTime updateDate;
    }

โœ ์‚ฌ์šฉ๋ฒ•

    @Test
    public void create() {
        AdminUser adminUser1 = AdminUser.builder().userid("watermelon")
                .userpw("7777").name("์ˆ˜๋ฐ•").status(UserStatus.UNREGISTERED).build();
        AdminUser adminUser2 = AdminUser.builder().userid("orange")
                .userpw("8888").name("์˜ค๋ Œ์ง€").status(UserStatus.REGISTERED).build();
        adminUserRepository.saveAll(Lists.newArrayList(adminUser1,adminUser2));
        List<AdminUser> adminusers = adminUserRepository.findAll();
        adminusers.forEach(System.out::println);
    }

โ— ์ฃผ์˜์‚ฌํ•ญ

  1. enum ๊ฐ’(name)์œผ๋กœ DB์— ์ €์žฅํ•˜๋ฉด ๋” ์•Œ์•„๋ณด๊ธฐ ์‰ฝ๋‹ค. ํ•˜์ง€๋งŒ enum ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ณผ์ •์—์„œ int๊ฐ€ string์„ DB์— ์ €์žฅํ•˜๊ฒŒ ๋˜๊ณ  ์ด๋Š” ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์„ ์ข€ ๋” ์ฆ๊ฐ€ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
  2. ๋งŒ์•ฝ enum์—์„œ๋Š” REGISTERD์˜ ๋ช…์นญ์„ ENROLLMENT๋กœ ๋ณ€๊ฒฝํ–ˆ์„ ๊ฒฝ์šฐ์— ๋งž๋Š” name ๊ฐ’์ด ์—†์–ด์„œ DB์—์„œ ํ•ด๋‹น ๋ถ€๋ถ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๋Š”๋ฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
  3. ๊ธฐ๋ณธ ๊ฐ’์ธ EnumType.ORDINAL๋กœ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ๋Š” enum์˜ ๊ฐ’๋“ค ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€” ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ž˜๋ชป ์ฝ์–ด์˜ค๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค.
    ์ƒˆ๋กœ์šด ๊ฐ’์ด ์ถ”๊ฐ€๋˜๋Š” ๊ฒฝ์šฐ๋Š” ์ƒ๊ด€ ์—†๋‹ค.
  4. ๋ณ„๋„ Converter๋ฅผ ์ƒ์„ฑํ•ด enum์˜ ๊ฐ’์„ DB์— ๋„ฃ์„ ๋•Œ์™€ enum์˜ ๊ฐ’์„ DB์—์„œ ์ฝ์–ด์˜ฌ ๋•Œ์— ์ž‘๋™ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•ด์„œ ๋ฐ”๋€ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์žฌ์ฒ˜๋ฆฌ ํ•˜๋Š” ๋กœ์ง์„ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.

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