๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŒท Spring/๊ฐœ๋…

[Spring][JPA] @Entity๋ž€ ๋ฌด์—‡์ผ๊นŒ?

by ._.sori 2025. 9. 9.

 

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ €์žฅ/์กฐํšŒํ•˜๋Š” ํด๋ž˜์Šค์—
@Entity๋ผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜์„ ๋ถ™์—ฌ์คฌ๋‹ค.
์™œ @Entity๋ฅผ ๋ถ™์—ฌ์•ผํ• ๊นŒ?

 

 

 

 

 

@Entity

  • @Entity๊ฐ€ ๋ถ™์€ ํด๋ž˜์Šค๋Š” JPA๊ฐ€ ๊ด€๋ฆฌํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”๊ณผ 1:1๋กœ ๋งคํ•‘๋˜๋Š” ์˜์† ํด๋ž˜์Šค์ž„์„ ์„ ์–ธํ•˜๋Š” ์• ๋…ธํ…Œ์ด์…˜์ด๋‹ค.
  • ์ด ํด๋ž˜์Šค๋กœ ๋งŒ๋“  ๊ฐ์ฒด๋Š” ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜๋ฉฐ, Spring Data JPA๊ฐ€ ์กฐํšŒ/์ €์žฅ/์ˆ˜์ •/์‚ญ์ œ๋ฅผ ๋‹ด๋‹นํ•œ๋‹ค.
  • ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋Š” ํ•„์ˆ˜์ด๋‹ค.  (JPA๊ฐ€ ์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด ์ƒ์„ฑ ์‹œ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉ)
  •  final ํด๋ž˜์Šค, enum, interface, inner class ์—๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
  • ์ €์žฅํ•  ํ•„๋“œ์— final ์‚ฌ์šฉ ๋ถˆ๊ฐ€ํ•˜๋‹ค.

 

 

 


 

 

 

 

 

@Entity ์˜ˆ์‹œ ์ฝ”๋“œ

@Entity
@Getter
@Setter
public class Member {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String userId;
    private String pw;
    private String tel;
    private String birth;
    private String email;
}
Member ํด๋ž˜์Šค์— @Entity๋ฅผ ๋ถ™์—ฌ์„œ JPA๊ฐ€ ๊ด€๋ฆฌํ•˜๋„๋ก ์ง€์ •ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด JPA๊ฐ€ ์กฐํšŒ/์ €์žฅ/์ˆ˜์ •/์‚ญ์ œ๋ฅผ ๋‹ด๋‹นํ•ด์ค€๋‹ค. JPA๊ฐ€ ์กฐํšŒ/์ €์žฅ/์ˆ˜์ •/์‚ญ์ œ๋ฅผ ๋‹ด๋‹นํ•œ๋‹ค๋Š”๊ฒŒ ๋ฌด์Šจ ๋ง์ผ๊นŒ? ๋งŒ์•ฝ @Entity๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ง์ ‘ SQL์„ ์ ์–ด์•ผํ•œ๋‹ค. ์‚ฌ์šฉ์ž์˜ ์ „ํ™”๋ฒˆํ˜ธ์„ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ ์–ด์•ผํ•  ๊ฒƒ์ด๋‹ค.
   public void deleteById(Long id) {
        jdbc.update("DELETE FROM member WHERE id=?", id);
    }


@Entity๊ฐ€ ์žˆ์œผ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

   public void remove(Long id) {
        repo.deleteById(id);
    }


๋ฌผ๋ก  ์œ„์˜ ์ฝ”๋“œ๋Š” @Entity๋งŒ ์„ค์ •ํ•œ๋‹ค๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— extends JpaRepository<Member, Long>์„ ์„ค์ •ํ•ด์•ผ CRUD(deleteById์™€ ๊ฐ™์€)๊ฐ€ ๋™์ž‘ํ•œ๋‹ค.

JpaRepository๋ฅผ ์“ฐ๋ ค๋ฉด ๋„๋ฉ”์ธ ํด๋ž˜์Šค๊ฐ€ ๋ฐ˜๋“œ์‹œ JPA ์—”ํ‹ฐํ‹ฐ์—ฌ์•ผ ํ•œ๋‹ค. @Entity(๊ทธ๋ฆฌ๊ณ  @Id)๊ฐ€ ์—†์œผ๋ฉด JPA๊ฐ€ ๊ทธ ํด๋ž˜์Šค๋ฅผ ๊ด€๋ฆฌ ๋Œ€์ƒ์œผ๋กœ ์ธ์‹ํ•˜์ง€ ๋ชปํ•ด ๋ถ€ํŒ… ์˜ค๋ฅ˜๋‚˜ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. JpaRepository๋Š” ์—”ํ‹ฐํ‹ฐ๋กœ ๋“ฑ๋ก(@Entity)๋˜๊ณ , ์‹๋ณ„์ž(@Id)๊ฐ€ ์žˆ์–ด์•ผ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๊ฐ€ ๊ฐ์ฒด๋ฅผ ์ถ”์ ํ•˜๊ณ  INSERT/SELECT/UPDATE/DELETE SQL์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์‚ฌ์‹ค @Entity ์˜ˆ์‹œ ์ฝ”๋“œ๋Š” ์ตœ์†Œ ์†์„ฑ๋งŒ ์ ์€ ๊ฒƒ์ด๋‹ค. ๊ทธ ์•ˆ์— @Table, @Column, @Enumerated ๋“ฑ ์„ธ๋ถ€์ ์œผ๋กœ ์†์„ฑ์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

- ๋” ๋‹ค์–‘ํ•œ ์†์„ฑ

 

[JPA] ์—”ํ‹ฐํ‹ฐ์™€ ๋งคํ•‘. @Entity, @Table, @Id, @Column..

| ์—”ํ‹ฐํ‹ฐ์™€ ๋งคํ•‘ ๊ฐ์ฒด์™€ ํ…Œ์ด๋ธ” ๋งคํ•‘ : @Entity, @Table๊ธฐ๋ณธ ํ‚ค ๋งคํ•‘ : @Idํ•„๋“œ์™€ ์ปฌ๋Ÿผ ๋งคํ•‘ : @Column์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘ : @ManyToOne, @JoinColumn 12345678910111213141516171819202122232425262728293031323334353637383940414243@Entity// n

data-make.tistory.com

 

 

 

 


 

 

 

์•„๋ž˜์— ์ถœ์ฒ˜๋ฅผ ๋‚จ๊ฒจ๋‘๊ฒ ์Šต๋‹ˆ๋‹ค.
๋ธ”๋กœ๊ทธ์—” ์ œ๊ฐ€ ์ตœ๋Œ€ํ•œ ์ดํ•ดํ•œ ๋‚ด์šฉ๊นŒ์ง€๋งŒ ์ ๋Š”๊ฑฐ๋ผ
์ถœ์ฒ˜์— ๋“ค์–ด๊ฐ€์‹œ๋ฉด ๋” ๋งŽ์€ ๋‚ด์šฉ์ด ์žˆ์–ด ๊ณต๋ถ€ํ•˜์‹œ๋Š”๋ฐ ๋„์›€๋˜์‹ค๊ฒ๋‹ˆ๋‹ค.

 

๐Ÿชฝ

ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์„ธ์š”

 

 


 

- ์—”ํ‹ฐํ‹ฐ

 

[DB] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—”ํ„ฐํ‹ฐ(Entity)๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

์—”ํ„ฐํ‹ฐ(Entity)๋ž€? ์—”ํ„ฐํ‹ฐ(Entity)๋ฅผ ๊ทธ๋Œ€๋กœ ๋ฒˆ์—ญํ•˜๋ฉด ์‹ค์ œ, ๋…๋ฆฝ์ฒด๋ผ๋Š” ๋œป์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฆ‰ ์—”ํ„ฐํ‹ฐ(Entity)๋Š” ์—…๋ฌด์— ํ•„์š”ํ•˜๊ณ  ์œ ์šฉํ•œ ์ •๋ณด๋ฅผ ์ €

coding-factory.tistory.com

 

 

 

- @Entity

 

[JPA] ์—”ํ‹ฐํ‹ฐ์™€ ๋งคํ•‘. @Entity, @Table, @Id, @Column..

| ์—”ํ‹ฐํ‹ฐ์™€ ๋งคํ•‘ ๊ฐ์ฒด์™€ ํ…Œ์ด๋ธ” ๋งคํ•‘ : @Entity, @Table๊ธฐ๋ณธ ํ‚ค ๋งคํ•‘ : @Idํ•„๋“œ์™€ ์ปฌ๋Ÿผ ๋งคํ•‘ : @Column์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘ : @ManyToOne, @JoinColumn 12345678910111213141516171819202122232425262728293031323334353637383940414243@Entity// n

data-make.tistory.com