본문 바로가기
728x90

java21

영속성 컨텍스트 엔티티 매니저는 엔티티를 저장하고, 삭제하는 등 엔티티와 관련된 모 든 일을 처리한다. 개발자 입장에서 엔티티 매니저는 엔티티를 저장하는 가상의 DB이다. 엔티티 매니저 팩토리와 엔티티 매니저 DB를 하나만 사용하는 애플리케이션은 통상적으로 EntityManagerFactory를 하나만 생성한다. 엔티티 매니저 팩토리를 생성하는 비용은 상당히 크다. 그때문에 한 개만 만들어 애플리케이션 전체가 공유하게 설계되 있다. 반면, 엔티티 매니저를 생성하는 비용은 크지 않다. 엔티티 매니저 팩토리는 thread-safe 하므로 스레드 간에 공유가 가능하다. 엔티티 매니저는 멀티 스레드 환경에서 동시성 문제가 존재하므로 스레드 간의 공유가 안된다. 엔티티 매니저는 DB 연결이 꼭 필요한 시점까지 커넥션을 얻지 않는.. 2022. 7. 4.
Item 12. toString을 항상 재정의하라 Object의 기본 toString() 메서드는 다음과 같다. 1 2 3 public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } Colored by Color Scripter cs 따라서 기본 toString() 메서드를 그냥 사용한다면 유의미한 정보를 얻기 어렵다. 따라서 모든 하위 클래스에서 toString을 재정의 해야 한다. toString() 메서드를 직접 호출할 일은 드물다. 하지만, 객체를 println, printf, 문자열 연결 연산자(+), assert 구문에 넘길 때, 디버거가 객체를 출력할 때 자동으로 불린다. 또 한, 에러 로깅에도 사용할 수 있다. 따라서 toS.. 2022. 5. 8.
Chapter 6. 빈 라이프사이클 범위 컨테이너 초기화와 종료 스프링 컨테이너는 초기화, 종료 라는 라이프 사이클을 갖는다. 1 2 3 4 5 6 7 8 // 스프링 컨테이너 초기화 // 스프링 컨테이너는 설정 클래스에서 정보를 읽어와 알맞은 빈 객체를 생성하고 // 의존 주입 하는 작업을 수행한다. AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppCtx.class); // 초기화된 컨테이너를 사용한다 - 메서드를 이용해 컨터이너에 보관된 빈 객체를 구한다. Greeting greeting = context.getBean("greeting", Greeting.class); // 컨테이너를 종료한다. context.close(); Colo.. 2022. 5. 5.
Chapter 5. 컴포넌트 스캔 컴포넌트 스캔은 스프링이 직접 클래스를 검색해서 빈으로 등록하는 기능이다. 이 기능을 사용하면 설정 클래스를 사용하지 않아도 되므로 설정 코드가 줄어든다. @Componenet 어노테이션을 클래스에 사용해 해당 클래스를 스캔 대상으로 설정할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 // @Component 어노테이션만 사용하면 // 클래스 이름에서 첫 글자를 소문자로 바꾼 이름이 // 빈 이름으로 사용된다. @Component public class Bean { public void printHello() { System.out.println("hello"); } } // 속성 값을 주면 해당 속성 값이 빈 이름으로 사용된다. @Component("bean1".. 2022. 5. 2.
728x90