Backend Language/JPA(Spring boot)

[JPA Spring boot] 'findBy' ์›ํ•˜๋Š” ๊ฐ’๋งŒ json์œผ๋กœ ๋ฐ›์•„์˜ค๊ณ  ์‹ถ์„ ๋•Œ

chaerlo127 2022. 2. 6. 19:19
728x90

Repository์—์„œ findBy ์ž‘์„ฑํ•˜๊ณ ,

์ดํ›„์— List๋ฅผ ํ†ตํ•ด ๊ฐ’์„ ๋ชจ๋‘ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ ๋ชจ๋“  ๊ฐ’์ด ๋ถˆ๋Ÿฌ์ ธ์˜ค๊ฒŒ ๋œ๋‹ค.

 

ํ•˜์ง€๋งŒ, User์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ๊ฐœ์ธ ์ •๋ณด๊ฐ€ ๊ฐ™์ด ๋ถˆ๋Ÿฌ์ ธ์˜ค๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์–ด์„œ

์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ ์žํ•œ๋‹ค.

 

๋ชจ๋“  ๊ฐ’์ด ๋ถˆ๋Ÿฌ์ ธ์˜ค๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

@Getter
@Entity
@NoArgsConstructor
@Table(name="user")
public class UserEntity{
    @Id
    @GeneratedValue
    private Long userIdx;
    
    @Column(nullable = false, length = 100)
    private String nickName;

    @Column(nullable = false, length = 100)
    private String userId;

    @Column(nullable = false)
    private String password;
    
    @ManyToOne
    @JoinColumn(name = "employeeId")
    private EmployeeEntity employee;
    
    
    @Builder
    public UserEntity(String nickName, String userId, String password) {
    	this.nickName = nickName;
        this.userId = userId;
        this.password = password;
    }
}

 

๋‹ค์Œ๊ณผ ๊ฐ™์ด List๋ฅผ userEntity๋กœ ๋ถˆ๋Ÿฌ์˜ค๊ฒŒ ๋˜๋ฉด user์˜ ๋ชจ๋“  ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. 

 

List<UserEntity> findByUserId(String userId)

 

์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ƒˆ๋กœ์šด interface๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

public interface protectedUser{
        Long getUserIdx();
       	String getUserId();
        String getNickName();
    }

 

 

List<protectedUser> findByUserId(String userId)

์œ„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•จ์— ๋”ฐ๋ผ user์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๊ฐ™์€ ์ค‘์š” ์ •๋ณด๋ฅผ json์—์„œ ๋ถˆ๋Ÿฌ์˜ค์ง€ ์•Š์„ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.


- @ManyToOne Join

๊ทธ๋ ‡๋‹ค๋ฉด @ManyToOne join ์‹œ, ํ•„์š” ์ •๋ณด๋งŒ ๋ถˆ๋Ÿฌ์˜ค๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ผ๊นŒ? ( -> ์ด๊ฑฐ ์ฐพ๋Š๋ผ ์ฃฝ๋ˆˆ์ค„ ์•Œ์•˜๋Œœ,,)

 

User์™€ ManytoOne์œผ๋กœ ์—ฐ๊ฒฐ๋œ Employee Entity๋ฅผ ์ƒ์„ฑํ•ด๋ณด์ž.

 

@Getter
@Entity
@NoArgsConstructor
@Table(name="employee")
public class EmployeeEntity{
    @Id
    @GeneratedValue
    private Long employeeIdx;
    
    @Column(nullable = false, length = 100)
    private String name;

    @Column(nullable = false, length = 100)
    private String employeeId;

    @Column(nullable = false)
    private String password;
    
    @Column(columnDefinition = "integer default 25")
    private Integer age;
    
    
    @Builder
    public EmployeeEntity(String name, String employeeId, String password, Integer age ) {
    	this.name = name;
        this.employeeId = employeeId;
        this.password = password;
        this.age = age;
    }
}

 

 

์ด ํ›„, User๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ employee์˜ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ๋‹ค๋ฉด

๋‹ค์Œ๊ณผ ๊ฐ™์ด interface ๋‚ด๋ถ€์— ๋˜๋‹ค๋ฅธ interface๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋œ๋‹ค.

 

public interface protectedUser{
        Long getUserIdx();
       	String getUserId();
        String getNickName();
        EmployeeEntity getEmployee();
        
        interface EmployeeEntity{
        Long getEmployeeIdx();
        String getEmployeeId();
        String getName();
    }
//------------------------------------------------------------------------------------------

{
    "userIdx":1
    "userId":"123"
    "nickName":"์•„์•„"
    "employee"{
                "employeeIdx":1
                "employeeId":"122"
                "name":"์•ˆ์•ˆ"
                }
}

 

์œ„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด, User์˜ password์™€ employee์˜ age, password๋ฅผ ์ œ์™ธํ•œ

๋ชจ๋“  ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

์†์„ฑ ์ž‘์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

get[entity Column]

get[entity column] ์ฒซ ๊ธ€์ž๋Š” ๋Œ€๋ฌธ์ž,

๊ทธ ๋‹ค์Œ์˜ ๋Œ€๋ฌธ์ž๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ๊ฒฝ์šฐ๋Š” column์˜ ์•ŒํŒŒ๋ฒณ์ด ๋Œ€๋ฌธ์ž์ธ ๊ฒฝ์šฐ์ด๋‹ค.,.,.,

(ex> employeeIdx ๋ฉด getEmployeeIdx(); ๋กœ ์ž‘์„ฑํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.)

 


- @ManyToOne Join ์‹œ ํ•„์š” ์ •๋ณด๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ

public interface protectedUser{
        Long getUserIdx();
       	String getUserId();
        String getNickName();
        String getEmployeeName(); // getEmployee์˜ Name์„ ๊ฐ€์ ธ์˜ด
    }
    
 /////////////////////////////////////
 
 {
    "userId":"123"
    "nickName":"๋‹‰๋„ค์ž„"
    "name":"์•„์•„์•„"
 }

 

 

์ฒ˜์Œ์—๋Š” jpa ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๋ง‰๋ง‰ํ–ˆ์ง€๋งŒ,,, 

์‚ฌ์‹ค ์ง€๊ธˆ๋„ ๋ง‰๋ง‰ํ•˜์ง€๋งŒ ์—ด์‹ฌํžˆ ์ฐธ์—ฌํ•ด์„œ ์กฐ๊ธˆ์”ฉ ์‹ค๋ ฅ ๋Š˜๋ ค์•ผ๊ฒ ๋‹ค,, ๋„ˆ๋ญ‰ ์–ด๋ ต๋‹ค,,

 

์ถœ์ฒ˜] https://gorokke.tistory.com/202

 

728x90