Backend/JPA

[JPA] JPA ๊ฐ€์žฅ ์ค‘์š”ํ•œ 2๊ฐ€์ง€ - ์—”ํ‹ฐํ‹ฐ ๋งคํ•‘

2024. 2. 10. 23:08
๋ชฉ์ฐจ
  1. ๐Ÿค” ์—”ํ‹ฐํ‹ฐ ๋งคํ•‘?
  2. ๐Ÿ”Ž Entity
  3. ๐Ÿ”Ž Mapping
  4. โœ” Mapping
  5. โœ” ๊ธฐ๋ณธํ‚ค ๋งคํ•‘
  6. โœ” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ ์ž๋™ ์ƒ์„ฑ

 

๐Ÿค” ์—”ํ‹ฐํ‹ฐ ๋งคํ•‘?

๐Ÿ”Ž Entity

์ง์—ญํ•˜๋ฉด '์‹ค์ฒด', '๋…๋ฆฝ์ฒด' ๋ผ๋Š” ๋œป์œผ๋กœ ์—…๋ฌด์— ํ•„์š”ํ•˜๊ณ  ์œ ์šฉํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ '์–ด๋–ค ๊ฒƒ(Thing)'์ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค. (DB์— ์ €์žฅ๋˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์™€์ง€๋Š” ๊ฐ์ฒด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ํŽธํ• ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. )

๐Ÿ”Ž Mapping

์ผ๋ฐ˜์ ์ธ ์˜๋ฏธ๋กœ๋Š” ํ•˜๋‚˜์˜ ์š”์†Œ๋ฅผ ๋‹ค๋ฅธ ์š”์†Œ์™€ ๋Œ€์‘์‹œํ‚ค๊ฑฐ๋‚˜ ์—ฐ๊ฒฐํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

 

๐Ÿ“Œ
Entity(๊ฐ์ฒด)์™€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(ํ…Œ์ด๋ธ”, ์ปฌ๋Ÿผ, ๊ด€๊ณ„ ๋“ฑ)๋ฅผ Mapping ์ฆ‰ ์„œ๋กœ ๋Œ€์‘์‹œ์ผœ ์—ฐ๊ฒฐํ•˜๋Š” ๊ณผ์ •์œผ๋กœ ๋ณดํ†ต ์–ด๋…ธํ…Œ์ด์…˜(Annotation)์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฃจ์–ด์ง€๋ฉฐ Mapping์„ ํ†ตํ•ด JPA๋Š” ๊ฐ์ฒด์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ„์˜ ๋ณ€ํ™˜์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 


โœ” Mapping

๊ตฌ๋ถ„ Annotation
๊ฐ์ฒด์™€ ํ…Œ์ด๋ธ” ๋งคํ•‘ @Entity, @Table
ํ•„๋“œ์™€ ์ปฌ๋Ÿผ ๋งคํ•‘ @Column
๊ธฐ๋ณธ ํ‚ค ๋งคํ•‘ @Id
๋‚ ์งœ ํƒ€์ž… ๋งคํ•‘ @Temporal
enum ํƒ€์ž… ๋งคํ•‘ @Enumerated
BLOB, CLOB ๋งคํ•‘ @Lob
ํŠน์ • ํ•„๋“œ๋ฅผ ์ปฌ๋Ÿผ์— ๋งคํ•‘ํ•˜์ง€ ์•Š์Œ @Transient
@Entity
public class Member {
    @Id
    private Long id;

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

    private Integer age;

    @Enumerated(EnumType.STRING)
    private RoleType roleType;

    private LocalDate test1
    private LocalDateTime test2

    @Lob
    private String description;
    
    @Transient
    private int temp;

}โ€‹

 

@Entity : JPA๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ์—”ํ‹ฐํ‹ฐ ํ‘œ์‹œ ( ๊ธฐ๋ณธ ์ƒ์„ฑ์ž ํ•„์ˆ˜ )
@Table : ์—”ํ‹ฐํ‹ฐ์™€ ๋งคํ•‘ํ•  ํ…Œ์ด๋ธ” ์ง€์ • name ์†์„ฑ์„ ํ†ตํ•ด ๋งคํ•‘ํ•  ํ…Œ์ด๋ธ” ์ด๋ฆ„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
@Column

์˜ต์…˜ ์„ค๋ช…
name ํ•„๋“œ์™€ ๋งคํ•‘ํ•  ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ ์ด๋ฆ„
insertable, updateable ๋“ฑ๋ก, ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ ์—ฌ๋ถ€
nullable(DDL) null๊ฐ’์˜ ํ—ˆ์šฉ ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•œ๋‹ค. false๋กœ ์„ค์ •ํ•˜๋ฉด DDL ์ƒ์„ฑ ์‹œ์— not null ์ œ์•ฝ์กฐ๊ฑด์ด ๋ถ™๋Š”๋‹ค.
nuique(DDL) @Table์˜ uniqueConstraints์™€ ๊ฐ™์ง€๋งŒ ํ•œ ์ปฌ๋Ÿผ์— ๊ฐ„๋‹จํžˆ ์œ ๋‹ˆํฌ ์ œ์•ฝ์กฐ๊ฑด์„ ๊ฑธ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
columnDefinition(DDL) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปฌ๋Ÿผ ์ •๋ณด๋ฅผ ์ง์ ‘ ์ค„ ์ˆ˜ ์žˆ๋‹ค
length(DDL) ๋ฌธ์ž ๊ธธ์ด ์ œ์•ฝ์กฐ๊ฑด, String ํƒ€์ž…์—๋งŒ ์‚ฌ์šฉํ•œ๋‹ค.
precision, scale(DDL) BigDecimal ํƒ€์ž…์—์„œ ์‚ฌ์šฉํ•œ๋‹ค(BigInteger๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค) precision์€ ์†Œ์ˆ˜์ ์„ ํฌํ•จํ•œ ์ „์ฒด ์ž๋ฆฌ์ˆ˜๋ฅผ, scale์€ ์†Œ์ˆ˜์˜ ์ž๋ฆฟ์ˆ˜ (double, floatํƒ€์ž…์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค. ์•„์ฃผ ํฐ ์ˆซ์ž๋‚˜ ์ •๋ฐ€ํ•œ ์†Œ์ˆ˜๋ฅผ ๋‹ค๋ฃจ์–ด์•ผ ํ•  ๋•Œ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค.

 

@Enumerated : ์ž๋ฐ” enumํƒ€์ž…์„ ๋งคํ•‘ํ•  ๋•Œ ์‚ฌ์šฉ ( EnumType.STRING ์‚ฌ์šฉ! )

EnumType.ORDINAL - enum ์ˆœ์„œ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ

EnumType.STRING - enum ์ด๋ฆ„์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ

 

@Temporal : LocalDate, LocalDateTime์œผ๋กœ ๋Œ€์‹  ์‚ฌ์šฉ (์ตœ์‹  ํ•˜์ด๋ฒ„๋„ค์ดํŠธ ์ง€์›)

@Lob : ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ์ด ์—†๊ณ , ๋ฌธ์ž๋ฉด CLOB ๋‚˜๋จธ์ง€๋Š” BLOB ๋งคํ•‘

@Transient : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅx, ์กฐํšŒx ์ฃผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์ƒ์—์„œ๋งŒ ์ž„์‹œ๋กœ ์–ด๋–ค ๊ฐ’์„ ๋ณด๊ด€ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ

โœ” ๊ธฐ๋ณธํ‚ค ๋งคํ•‘

@Entity
@SequenceGenerator(
        name = "MBR_SEQ_GENERATOR",
        sequenceName = "MBR_SEQ", //๋งคํ•‘ํ•  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œํ€€์Šค ์ด๋ฆ„
        initialValue = 1, allocationSize = 1 )
public class Member {
    @Id
    //@GeneratedValue(strategy = GenerationType.IDENTITY)
    @GeneratedValue(strategy = GenerationType.SEQUENCE,
            generator = "MBR_SEQ_GENERATOR")
    private Long id;

    @Column(name = "name", nullable = false)
    private String username;

    public Member() {

    }
}

์ง์ ‘ ํ• ๋‹น : @Id
์ž๋™ ์ƒ์„ฑ : @GeneratedValue

strategy ์„ค๋ช…
IDENTITY ํ…Œ์ดํ„ฐ๋ฒ ์ด์Šค์— ์œ„์ž„, MYSQL
SEQUENCE ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œํ€€์Šค ์˜ค๋ธŒ์ ํŠธ ์‚ฌ์šฉ, ORACLE ( @SequenceGeneratorํ•„์š” )
TABLE ํ‚ค ์ƒ์„ฑ์šฉ ํ…Œ์ด๋ธ” ์‚ฌ์šฉ, ๋ชจ๋“  DB์—์„œ ์‚ฌ์šฉ ( @TableGeneratorํ•„์š” )
AUTO ๋ฐฉ์–ธ์— ๋”ฐ๋ผ ์ž๋™ ์ง€์ •, ๊ธฐ๋ณธ๊ฐ’

 

๐Ÿ“Œ

IDENTITY์ „๋žต์€ id๊ฐ’(PK)์„ ์„ธํŒ…ํ•˜์ง€ ์•Š๊ณ  DB์— ๋„ฃ์–ด์•ผํ•œ๋‹ค ์ฆ‰ null๋กœ SQL์š”์ฒญ์„ ํ•˜๋ฉด DB์—์„œ ๊ทธ๋•Œ id๊ฐ’์„ ์„ธํŒ…ํ•œ๋‹ค
id๊ฐ’์„ ์•Œ๋ ค๋ฉด DB์— insert๋˜์–ด์ง„ ํ›„์— ์•Œ ์ˆ˜ ์žˆ๋‹ค.
ํ•˜์ง€๋งŒ JPA์˜ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์—์„œ ๊ด€๋ฆฌ๋˜๋ ค๋ฉด PK๊ฐ’์„ ์•Œ์•„์•ผํ•œ๋‹ค ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์˜ˆ์™ธ์ ์œผ๋กœ EntityManager.persist ํ•˜๋Š” ์‹œ์ ์— ๋ฐ”๋กœ SQL๋ฌธ์ด ์š”์ฒญ๋˜์–ด์ง€๊ณ  insert๋œ id๊ฐ’์„ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ๋ฐ”๋กœ ์ €์žฅํ•˜๊ฒŒ๋œ๋‹ค.

 

SEQUENCE์ „๋žต ํŠน์ง•
sequence๋„ IDENTITY์ „๋žต๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์—์„œ ๊ด€๋ฆฌํ•  id๊ฐ’์„ ์•Œ์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— persistํ•˜๋Š” ์‹œ์ ์— ์‹œํ€€์Šค์˜ ๊ฐ’์„ ๋ถˆ๋Ÿฌ์™€(call) ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค.

 

๐Ÿ’ก ๊ทธ๋ ‡๋‹ค๋ฉด insert์ฟผ๋ฆฌ๋ฅผ ํ•œ๋ฒˆ ๋ณด๋‚ผ์ผ์„ id๊ฐ’์„ ๋ฐ›์•„์˜ค๋Š” ์š”์ฒญ, insertํ•˜๋Š” ์š”์ฒญ ์ด๋ ‡๊ฒŒ 2๋ฒˆ์˜ ์š”์ฒญ์„ ํ•˜๊ฒŒ๋˜๋Š”๋ฐ ๋„คํŠธ์›Œํฌ๋ฅผ ์™”๋‹ค ๊ฐ”๋‹ค ํ•˜๋Š” ๋น„์šฉ์ด ์„ฑ๋Šฅ์ƒ ์ข‹์ง€ ์•Š๋‹ค ๋ผ๋Š” ์ƒ๊ฐ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

@Entity
@SequenceGenerator(
        name = "MBR_SEQ_GENERATOR",
        sequenceName = "MBR_SEQ",
        initialValue = 1, allocationSize = 50 ) //allocationSize default = 50
public class Member {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE,
            generator = "MBR_SEQ_GENERATOR")
    private Long id;
    }

์ด๋Ÿฐ ์„ฑ๋Šฅ์ƒ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด allocationSize์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
allocationSize๋Š” ํ•œ๋ฒˆ ํ˜ธ์ถœํ• ๋•Œ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฐ’์œผ๋กœ ( default 50 )
์ฒ˜์Œ ํ˜ธ์ถœํ• ๋•Œ 50๋งŒํผ DB๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ๋†“๊ณ  50์„ ๋ฐ›์•„์™€ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ๋Š” 1์”ฉ ์‚ฌ์šฉํ•˜๋Š” ์ „๋žต์ด๋‹ค.
์ด๋ ‡๊ฒŒ๋˜๋ฉด ์‹œํ€€์Šค๊ฐ€ 50์„ ์ดˆ๊ณผํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” DB์— next val ์š”์ฒญ์„ ๋ณด๋‚ด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋„คํŠธ์›Œํฌ ๋น„์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

 


โœ” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ ์ž๋™ ์ƒ์„ฑ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๋”ฉ์‹œ์ ์— DBํ…Œ์ด๋ธ”์„ ์ƒ์„ฑ(DDL)ํ•˜๋Š” ๊ธฐ๋Šฅ( ๋กœ์ปฌ์ด๋‚˜ ํ…Œ์ŠคํŠธ์—๋งŒ ์‚ฌ์šฉ๊ถŒ์žฅ )

 <property name="hibernate.hbm2ddl.auto" value="create" />

 

์˜ต์…˜ ์„ค๋ช…
create ๊ธฐ์กดํ…Œ์ด๋ธ” ์‚ญ์ œ ํ›„ ๋‹ค์‹œ ์ƒ์„ฑ (DROP+CREATE)
create-drop create์™€ ๊ฐ™์œผ๋‚˜ ์ข…๋ฃŒ์‹œ์ ์— ํ…Œ์ด๋ธ” DROP
update ๋ณ€๊ฒฝ๋ถ„๋งŒ ๋ฐ˜์˜ ALTER
validate ์—”ํ‹ฐํ‹ฐ์™€ ํ…Œ์ด๋ธ”์ด ์ •์ƒ ๋งคํ•‘๋˜์—ˆ๋Š”์ง€๋งŒ ํ™•์ธ
none ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ

 


 

๐Ÿ“š ์ฐธ๊ณ  ๋ฐ ์ž๋ฃŒ ์ถœ์ฒ˜ : ์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ (๊น€์˜ํ•œ)

 

'Backend > JPA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[JPA] ์ƒ์†๊ด€๊ณ„ ๋งคํ•‘, @MappedSuperclass  (0) 2024.03.07
[JPA] ๋‹ค์–‘ํ•œ ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘ ( ManyToOne, OneToMany, OneToOne, ManyToMany )  (0) 2024.03.04
[JPA] ๊ฐ์ฒด ์ง€ํ–ฅ ๋ชจ๋ธ๋ง๊ณผ ์–‘๋ฐฉํ–ฅ,๋‹จ๋ฐฉํ–ฅ ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘  (0) 2024.02.17
[JPA] JPA ๊ฐ€์žฅ ์ค‘์š”ํ•œ 2๊ฐ€์ง€ - ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ  (0) 2024.02.09
[JPA] SQL ์ค‘์‹ฌ์  ๊ฐœ๋ฐœ์˜ ๋ฌธ์ œ์ ๊ณผ JPA๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ   (0) 2024.02.08
  1. ๐Ÿค” ์—”ํ‹ฐํ‹ฐ ๋งคํ•‘?
  2. ๐Ÿ”Ž Entity
  3. ๐Ÿ”Ž Mapping
  4. โœ” Mapping
  5. โœ” ๊ธฐ๋ณธํ‚ค ๋งคํ•‘
  6. โœ” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ ์ž๋™ ์ƒ์„ฑ
'Backend/JPA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [JPA] ๋‹ค์–‘ํ•œ ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘ ( ManyToOne, OneToMany, OneToOne, ManyToMany )
  • [JPA] ๊ฐ์ฒด ์ง€ํ–ฅ ๋ชจ๋ธ๋ง๊ณผ ์–‘๋ฐฉํ–ฅ,๋‹จ๋ฐฉํ–ฅ ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘
  • [JPA] JPA ๊ฐ€์žฅ ์ค‘์š”ํ•œ 2๊ฐ€์ง€ - ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ
  • [JPA] SQL ์ค‘์‹ฌ์  ๊ฐœ๋ฐœ์˜ ๋ฌธ์ œ์ ๊ณผ JPA๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ 
์žฅ์šฉ์„
์žฅ์šฉ์„
๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ๊ธฐ๋กํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์žฅ์šฉ์„
dot
์žฅ์šฉ์„
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (38)
    • Backend (12)
      • JPA (7)
      • Spring (3)
    • CS (2)
    • Algorithm (18)
      • ์ž๋ฃŒ๊ตฌ์กฐ (3)
      • ๋ฌธ์ œ (10)
    • Project (6)
      • SpringBoot+JPA ๊ฒŒ์‹œํŒ (6)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ๋ฐฑ์ค€
  • Builder
  • Java
  • 1890๋ฒˆ
  • ๊ณจ๋“œ
  • ORM
  • ์ž๋ฃŒ๊ตฌ์กฐ
  • JPA
  • ํ…Œ์ŠคํŠธ์ฝ”๋“œ
  • ๋ฐฑํŠธ๋ž˜ํ‚น
  • ๊ฒŒ์‹œํŒ
  • ์‹ค๋ฒ„
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • CRUD
  • ์ž๋ฐ”
  • spring
  • DP
  • spring data JPA
  • 12865๋ฒˆ
  • dfs

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.
์žฅ์šฉ์„
[JPA] JPA ๊ฐ€์žฅ ์ค‘์š”ํ•œ 2๊ฐ€์ง€ - ์—”ํ‹ฐํ‹ฐ ๋งคํ•‘
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.