내가 가입 한 새 프로젝트에서 그들은 Hibernate와 JPA라는 용어를 혼용해서 계속 사용한다. 그래서, 코드로 들어가서이 모든 일이 어떻게 작동하는지 이해하려고 노력했습니다 (저는 Spring, JPA 및 Hibernate 세계에 익숙하지 않습니다). 더 나은 이해를 위해 여기에 코드를 삽입하려고합니다 : 그래서,이 구성 클래스에서, 우리는의 EntityManagerFactory를 반환하는봄 + 최대 절전 모드 + jpa 어떻게 작동합니까?
@Resource
private HibernateJpaVendorAdapter hibernateOracleJpaVendorAdapter;
LocalContainerEntityManagerFactoryBean entityManager =
new LocalContainerEntityManagerFactoryBean();
entityManager.setJpaVendorAdapter(hibernateOracleJpaVendorAdapter);
entityManager.setPersistenceUnitName("abc");
.
.
: 1)에서는 다음과 같은 가지고 @Configuration 클래스가있다.
2) 다음 저장소의 방법 (예를 들면 호출 @Persistor 표시된 persistor 클래스) 저장 작업 들어있다 :
blahblahRepository.save(blahblahEntity, abcdef);
3) 드디어 저장소 클래스가 @Repository 님이 주석 달기. 다음과 같이
getEntityManager().persist(entityObject);
내 질문
다음과 같습니다 :@PersistenceContext(unitName = "same as the name in persistence.xml")
protected EntityManager entityManager;
"저장"방법은 JPA의 유지 방법 감싸는 : 그럼 다시, 그들은이 코드 조각이 1) 어떤 단어도 없다 hibernateJpaVendorAdapter가 아닌 Hibernate에 관해서. 전체 작업 공간을 검색했는데 구성 파일에 최대 절전 모드 단어가 3 번 나타났습니다. 2) 가지고있는 지식에 관계없이 EntityManagerFactory 또는 EntityManager 중 하나를 사용해야하지만 둘 다 수행하고 있습니까?
당신은 그것을하지 않습니다. Spring은 그것을 당신을 위해 수행하고 그것을 Spring 빈에 주입한다. –
실례지만, EntityManagerFactory에서 엔티티 관리자를 만들지 않습니다. 지금까지 읽은 블로그/문서는 @PersistenceContext (unit = "abc") EntityManager em; 또는 @PersistenceUnit EntityManagerFactory emf; EntityManagerFactory.createEntityManager()는 EntityManager를 만듭니다. 내 이해가 잘못 되었나요? 그렇지 않다면 우리는 왜 이런 식으로하고 있습니까? – user123