Java
-
final Class는 왜 JPA Entity가 될 수 없을까?Java/Spring-JPA 2021. 1. 31. 20:19
final class는 JPA Entity Class가 될 수 없다. 왜 그럴까? JPA는 DB에서 데이터를 조회한 후 엔티티를 생성할 때 지연 로딩이라는 방식을 사용한다. 지연 로딩이란? 해당 엔티티(테이블)와 관계(join)를 맺고 있는 엔티티(테이블)들에 대한 정보는 그 즉시 로딩되지 않고 getter 메소드가 호출되는 등 실제 사용될 때 로딩된다. 이러한 방식을 지연 로딩이라 한다. 지연 로딩 방식을 이용해 데이터를 조회하기 위해서, JPA는 프록시 객체라는 것을 생성한다. 프록시 객체는 간단히 말해서 엔티티를 상속해서 확장한 클래스이다. 하지만 final class는 상속될 수 없기 때문에 JPA는 그 final class를 확장해서 프록시 객체로 사용할 수가 없다. 따라서 JPA Entity로..
-
[자바 디자인 패턴] Flyweight 패턴Java/Design Pattern 2020. 5. 12. 00:55
■Flyweight 패턴이란? 영문 그대로 데이터를 표현하는 클래스를 좀 더 가볍게 사용하는 것이 목적인 패턴. 한번 생성된 클래스를 버리지 않고 모아뒀다가 필요할 때 계속 재사용. 정적 팩터리 메서드와 비슷한 기법이라고 할 수 있음. ■패턴 구현 간단 설명 데이터 클래스를 관리하는 팩토리 클래스를 준비한다. 데이터 클래스를 사용하고 싶은 사용자 클래스는 오직 팩토리 클래스를 이용해서 원하는 데이터 클래스를 얻어온다. 롤을 가끔 하는데, 롤 캐릭터와 무기를 이용해서 이 패턴을 설명해보겠다. 사용자 클래스 Talon.java Yasou.java Irelia.java 팩토리 클래스 WeaponFactory.java 데이터 클래스 InfinityEdge.java BlackCleaver.java 맨 위의 사용자..