Cập nhật: Mùa xuân 3.1 sẽ hỗ trợ persistence.xml
-cấu hình JPA miễn phí, xem Spring 3.1 M2: Configuration Enhancements.
Câu trả lời của darioo là tốt để sử dụng thực tế, nhưng không chính xác về mặt kỹ thuật.
PersistenceProvider
có hai phương pháp nhà máy:
EntityManagerFactory createEntityManagerFactory(String emName, Map map)
- cho các môi trường độc lập, persistence.xml
là để được phân tích bởi nhà cung cấp bền bỉ.
EntityManagerFactory createContainerEntityManagerFactory(PersistenceUnitInfo info, Map map)
- cho môi trường máy chủ ứng dụng, persistence.xml
được phân tích cú pháp bởi máy chủ ứng dụng và nội dung của nó được chuyển thành PersistenceUnitInfo
.
Spring's LocalContainerEntityManagerFactoryBean
mô phỏng môi trường máy chủ ứng dụng. Do đó, nó tự phân tách cú pháp persistence.xml
, kết hợp nội dung của nó với các giá trị từ ngữ cảnh ứng dụng và chuyển nó tới nhà cung cấp kiên trì sử dụng phương thức factory thứ hai.
Tuy nhiên, quá trình lấy persistence.xml
dữ liệu là cấu hình:
Bạn có thể cấu hình tên của tập tin persistence.xml
sử dụng persistenceXmlLocation
sở hữu - đó là hữu ích để tránh xung đột với các chiến lược JPA khởi tạo mặc định của máy chủ ứng dụng.
Bạn hoàn toàn có thể ghi đè nguồn của PersistenceUnitInfo
bằng cách đặt chiến lược tùy chỉnh PersistenceUnitManager
.
Vì vậy, trên thực tế bạn có thể cấu hình JPA trong mùa xuân mà không persistence.xml
bằng cách viết một tùy chỉnh PersistenceUnitManager
, mặc dù một người quản lý như vậy là không có sẵn ra khỏi hộp.
Một câu trả lời rất hay, tôi sẽ bầu bạn nếu tôi không sử dụng hết số phiếu cho ngày này. Tôi cho rằng OP sẽ không bận tâm đào sâu vào bên trong Spring, vì nó có vẻ không cần thiết và hơi phức tạp. – darioo
Cảm ơn câu trả lời +1 cho tất cả các giải thích – user373201