EntityManagerFactory
EntityManagerFactory는 이름 그대로 EntityManger를 생산하는 공장과 같은 역할을 한다. Thread-safety 하기 때문에 하나만 생성해서 애플리케이션 전체에서 공유하는 방식으로 사용한다.
EntityManager
EntityManager 또한 이름그대로 엔티티를 관리하는 객체이다. EntityManagerFactory와는 다르게 쓰레드 공유에 안전하지 않기 때문에 트랜잭션마다 새로운 EntityManger를 사용해 처리한다. 아래 코드를 보면 EntityManagerFactory를 통해 EntityManager를 생성하고 EntityManager를 통해 트랜잭션과 영속성 컨텍스트를 관리하는 역할을 하는 것을 볼 수 있다.
스프링에서는 EntityManger를 필드에서 정의하고 @persistencecontext를 통해 컨테이너에서 프록시를 통해 주입된다(DI). 프록시는 엔티티매니저가 호출될때마다 새로운 객체를 생성하므로 Thread-Safety를 보장한다.
재귀보다 훨씬 빠른 피보나치 수를 구하는 방법
재귀함수를 통해 피보나치수를 구하는 방식은 O(n^2)의 시간 복잡도를 갖기 때문에 수가 커질수록 속도가 기하급수적으로 늦어짐
- 동적 계획법을 통해 O(n) 으로 해결
private int fibonacci(int number){
int[] fibs = new int[number + 1];
fibs[1] = 1;
for(int i = 2;i <= number;i++){
fibs[i] = fibs[i - 1] + fibs[i - 2];
}
return fibs[number];
}
행렬, 일반항의 방법도 있고 이를 사용하면 logn 까지 줄일 수 있지만 일반적인 코테에서 생각해 낼 수있는 부분이 아니라서 생략
참고 :
https://www.inflearn.com/course/ORM-JPA-Basic/dashboard
'TIL' 카테고리의 다른 글
[TIL 2022-2-12] JPA 필드와 컬럼 매핑 (0) | 2022.02.13 |
---|---|
[TIL 2022-2-11] JPA 영속성 콘텍스트(Persistence Context) (0) | 2022.02.11 |
[TIL 2022-2-8] HTTP 헤더 공부 (0) | 2022.02.08 |
[TIL 2022-2-7]JPA 공부 실용편1 끝!! (0) | 2022.02.08 |
[TIL 2022-2-5] JPA 공부 (0) | 2022.02.05 |