2015-03-04 17 views
5

Chúng tôi có một ứng dụng mùa xuân 3 mà vẫn sử dụng không được chấp nhận HibernateTemplate cho sự kiên trì và muốn di chuyển sang JPA EntityManager hiện đại hơn.HibernateTemplate có thể cùng tồn tại với EntityManager không?

Có thể sử dụng cả hai API song song trong quá trình di chuyển (thậm chí có thể cả trong một giao dịch), để chúng tôi có thể thực hiện di chuyển theo các bước nhỏ?

Hoặc chúng ta sẽ phải thực hiện điều đó?

Trả lời

10

Chắc chắn, tại sao không.

Cách dễ nhất là thả cấu hình LocalSessionFactoryBeanHibernateTransactionManager của bạn và thay thế cấu hình đó lần lượt là LocalContainerEntityManagerFactoryBeanJpaTransactionManager.

Sau đó, để có được một SessionFactory, hãy thêm HibernateJpaSessionFactoryBean, hiển thị số SessionFactory cơ bản cho số EntityManagerFactory.

Bằng cách này, cả hai công nghệ nên cùng tồn tại một cách hòa bình.

Có một số báo cáo thực hiện việc này dẫn đến một ngoại lệ cho biết No CurrentSessionContext configured!. Nếu bạn nhận được nó thêm dòng sau vào một trong hai bạn persistence.xml

<property name="hibernate.current_session_context_class" value="org.springframework.orm.hibernate4.SpringSessionContext"/> 

hoặc jpaProperties của LocalContainerEntityManagerFactoryBean.

<property name="jpaProperties"> 
    <props> 
     <prop name="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop> 
    <props> 
<property> 
+0

Cảm ơn bạn đã trả lời, hãy thử ... –

+0

Bây giờ tôi nhận được lỗi "No CurrentSessionContext configure!" –

+0

Giải quyết, bây giờ tôi nhận được lỗi tiếp theo: "createCriteria không hợp lệ mà không có giao dịch hoạt động". Có vẻ như chú thích @Transactional của tôi không được xử lý nữa –

Các vấn đề liên quan