๐ ์์ธ ํ์
์ฝ๋๋ฅผ ์ด์ฌํ ์์ฑํด์ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ๊ณ , ์ฆ๊ฑฐ์ด ๋ง์์ผ๋ก ๋ผ์ด๋ธ ๋ฐฐํฌ๋ฅผ ํ๋ค..
๊ทธ๋ฌ๋ ๋ช ๋ถ์ด ์ง๋์ง ์๊ณ error alert์ด ๋์ค๊ธฐ ์์ํ๊ณ ,,, ์ ๋ง ์ด์ฒ๊ตฌ๋ ์๋ ์ค์๋ฅผ ํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์๋ค.
์๋ฌ ๋ด์ฉ์ JPA์์ ๋์จ ์ค๋ฅ์๋ค..
org.hibernate.LazyInitializationException: could not initialize proxy
์์ ๊ฐ์ ์ค๋ฅ๊ฐ ์๊ธด ์์ธ์ ํ์ ํ๊ธฐ ์ํด์ ๊ตฌํํ ๋ถ๋ถ์ ๋ค์ ๋ณด์๊ณ ,
Entity ๊ฐ์ฒด๋ฅผ DTO ๊ฐ์ฒด๋ก ๋ณ๊ฒฝํ๊ธฐ ์ํด BeanUtils copyProperties๋ก ๊ฐํธํ๊ฒ ํ๋ ค๊ณ ํ๋ ๋ถ๋ถํด์ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ ์ ์์๋ค.. (๊ดํ ๋น ๋ฅด๊ฒ ํ๋ ค๋ค๊ฐ..)
BeanUtils copyProperties๋?
์คํ๋ง์์ ์ ๊ณตํด์ฃผ๋ BeaUtils ํด๋์ค์ ๋ฉ์๋์ธ๋ฐ, ๊ฐ์ ์ด๋ฆ์ getter์ setter๋ง ์ ๊ตฌํ๋์ด ์๋ค๋ฉด ์์ฝ๊ฒ ๊ฐ์ฒด๋ฅผ ๋ณต์ฌ์ํฌ ์ ์๋ค.
( ์ฐธ๊ณ : https://zzang9ha.tistory.com/304 )
์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉฐ ๊ฐ๊ณผํ ๋ถ๋ถ์ด ํ ๊ฐ์ฒด๋ฅผ ๋ค๋์ผ ๊ด๊ณ๋ก ๊ตฌ์ฑํ๊ณ ์ด๋ฅผ LAZY ํ์น๋ฅผ ํ๋๋ก ์ค์ ํด๋์์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํด๋น ๊ฐ์ฒด๋ ํ๋ก์ ๊ฐ์ฒด๋ก ์ ์ฅ์ด ๋์ด ์๋ ์ํ์๊ณ , ๊ทธ๋์ ์ ๋ฉ์๋๋ฅผ ์คํ์ ์๋ณธ ๊ฐ์ฒด๊ฐ ์๋ ํ๋ก์ ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํ๋ ค๊ณ ์๋ํ๊ธฐ ๋๋ฌธ์ ์์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒ์ด ์๋ค......!
๐ ํด๊ฒฐ ๋ฐฉ๋ฒ
๋ญ... Lazy ๋ฅผ Eager๋ก ๋ณ๊ฒฝํ๋ฉด ์ข๊ฒ ์ง๋ง.. ๊ทธ๋ ๊ฒ ์ข์ ํด๊ฒฐ์ฑ ์ ์๋ ๊ฒ ๊ฐ๋ค..
๊ทธ๋์ set ํจ์๋ก ํ๋ ํ๋ ์๋์ ๊ฐ์ด ๋ฃ์ด์ฃผ๋ ๋ฐฉ๋ฒ์ด ์์ ์ ์๋ค. ( ๊ฐ์ฅ ์์ด์ ์ธ ํด๊ฒฐ์ฑ )
๋ํ copyProperties ์ค ํ๋์ overloadingํ ๋ฉ์๋๋ก ํ๋ก์ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง ๋ณ์๋ฅผ ๊ฐ์ฒด ๋ณต์ฌ์์ ์ ์ธ์์ผ์ค ์ ์๋๋ฐ,
์์ ๋์จ ๊ฒ๊ณผ ๊ฐ์ด 3๋ฒ์งธ ์ธ์๋ก ์ ์ธํ๊ณ ์ถ์ ๋ณ์์ ์ด๋ฆ์ ๋ฃ์ด์ฃผ๋ฉด ์ ์ธ์์ผ์ค ์ ์๋ค.
๊ทธ๋์ ์๋์ ๊ฐ์ด ํด๊ฒฐํด๋ณด์๋ค.
@Entity
public class Team {
@Id
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
private Member member;
}
public class Member {
@Id
private Long id;
}
//As-is
public TeamDto toDto(Team team) {
TeamDto teamDto = new TeamDto();
BeanUtil.copyProperties(team, teamDto);
return teamDto;
}
//to-be
public TeamDto toDto(Team team) {
TeamDto teamDto = new TeamDto();
BeanUtil.copyProperties(team, teamDto, "member");
// MemberDto ๋ง๋ค๊ธฐ
MemberDto memberDto = new MemberDto();
memberDto.setId(team.getMember().getid());
teamDto.setMemberDto(memberDto)
}
์ด๋ ๊ฒ ํ๋ฉด Lazy๋ก ๊ฐ์ ธ์จ ํ๋ก์ ๊ฐ์ฒด ๋ฌธ์ ๋ ํด๊ฒฐํ ์ ์์ด ๊ฐ์ ์ค๋ฅ๋ฅผ ๋ง๋์ง ์์ ์ ์์ ๊ฒ์ด๋ค
( ํน์ ๋ ์ข์ ํด๊ฒฐ์ฑ ์ด ์๋ค๋ฉด,,, ๋ฐ๋ก ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค )
'F.Y.R' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[F.Y.R] Jitter? ( Retry์ ์ ๋ต ) (0) | 2022.01.16 |
---|---|
[Error] Cause: java.lang.ExceptionInInitializerError (0) | 2021.10.30 |