2012-06-08 26 views
7

Tôi đã tìm câu trả lời cho điều này nhưng không thể tìm thấy bất kỳ câu hỏi nào cho cộng đồng rất thích hợp này!JPA nhiều đơn vị kiên trì cho dev/qa/giai đoạn/sản xuất

  1. Tôi có một ứng dụng java độc lập được triển khai trong nhiều môi trường: dev, qa, stage, production. Vì mỗi môi trường có nguồn dữ liệu/db riêng và có các tệp thuộc tính chi phối các thuộc tính khác nhau tùy thuộc vào môi trường mà ứng dụng đang chạy. Như vậy, trong persistence.xml của tôi, tôi đã định nghĩa một đơn vị persistence cho dev. Trong cùng một tệp, tôi cũng muốn xác định các đơn vị bền vững cho các môi trường khác. Khi làm như vậy, Eclipse (Indigo - mới nhất) than phiền như sau: "Nhiều đơn vị kiên trì được xác định - chỉ đơn vị lưu giữ đầu tiên sẽ được nhận diện". Tôi là giả định rằng những gì tôi đã làm là hợp pháp và đây là vấn đề của Eclipse .. bất kỳ ai cũng có thể xác nhận không? Ngoài ra, đây có phải là những gì thực hành tốt nhất sẽ ra lệnh cho thiết lập hiện tại của tôi?
  2. Tôi đã được giả định rằng bất kỳ bean thực thể nào được đánh dấu bằng chú thích @Entity sẽ tự động được chọn mà không phải xác định rõ ràng nó trong tệp persistence.xml như sau: <class>com.mycompany.model.MyEntityBean</class>. Nếu tôi bỏ qua sự bao gồm rõ ràng của lớp thực thể trong tệp, bean thực thể - mặc dù được chú thích - ném một lỗi: "Lớp" com.mycompany.model.MyEntityBean "được ánh xạ, nhưng không được bao gồm trong bất kỳ đơn vị nào tồn tại" Những gì tôi đã giả định sai?
  3. Câu hỏi cuối cùng của tôi liên quan đến thông tin đăng nhập db: cách tốt nhất là đặt thông tin đăng nhập db của tôi vào tệp persistence.xml trong văn bản thuần túy? Có bất kỳ lựa chọn thay thế an toàn hơn cho điều này?

Cảm ơn cộng đồng!

p.s - Tôi đang sử dụng EclipseLink làm nhà cung cấp JPA mà không phải là vấn đề?

Dưới đây là một ví dụ về persistence.xml tôi

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 
    <persistence-unit name="Development"> 
     <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
     <class>com.mycompany.model.MyEntityBean</class> 
     <properties> 
      <property name="javax.persistence.jdbc.driver" value="com.ibm.db2.jcc.DB2Driver" /> 
      <property name="javax.persistence.jdbc.url" value="jdbc:db2://xxxxxxx" /> 
      <property name="javax.persistence.jdbc.password" value="xxxxxx" /> 
      <property name="javax.persistence.jdbc.user" value="xxxxxxxx" /> 
     </properties> 
    </persistence-unit> 
    <persistence-unit name="QA"> 
     <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
     <class>com.mycompany.model.MyEntityBean</class> 
     <properties> 
      <property name="javax.persistence.jdbc.driver" value="com.ibm.db2.jcc.DB2Driver" /> 
      <property name="javax.persistence.jdbc.url" value="jdbc:db2://xxxxxxx" /> 
      <property name="javax.persistence.jdbc.password" value="xxxxxx" /> 
      <property name="javax.persistence.jdbc.user" value="xxxxxxxx" /> 
     </properties> 
    </persistence-unit> 
</persistence>  
+0

Bạn có thể thêm nội dung persistence.xml của mình không, nó sẽ giúp mọi người hiểu rõ hơn. –

+0

Xin chào Nayan, tôi đã thêm một chút về sự cám ơn persistence.xml của mình! – ustad

Trả lời

4
  1. "Nhiều đơn vị kiên trì định nghĩa - chỉ đơn vị kiên trì đầu tiên sẽ được công nhận" là Eclipse (Dali) vấn đề. Tìm hiểu thêm về chủ đề bạn có thể tìm thấy từ bug 231527.

  2. Vì bạn có ứng dụng Java SE độc lập, các thực thể phải được liệt kê trong persistence.xml. Trong đặc tả này được nêu ra như sau:

 To insure the portability of a Java SE application, it is necessary 
     to explicitly list the managed persistence classes that are included 
     in the persistence unit using the class element of the persistence.xml 
     file. 
  1. Nếu bạn không muốn có mật khẩu dưới dạng văn bản thuần tuý, một số thông tin về sự thay thế có thể được tìm thấy từ EclipseLink documentation.
+0

Cảm ơn thông tin Mikko! Tôi đã có thể bỏ phiếu nhưng tôi chưa đủ điều kiện :) – ustad

+0

Cảm ơn Mikko, tôi đã chấp nhận câu trả lời. Nó xuất hiện nhiều đơn vị kiên trì thực sự được vinh danh và nó là eclipse được xây dựng trong JPA plugin đó là phàn nàn – ustad

1

Bạn có thể tắt cảnh báo sai bằng cách thực hiện như sau. Các hướng dẫn này dành cho Eclipse Luna.

Project Properties => JPA => Errors/Warnings 

Kiểm tra Enable project specific settings

Mở rộng Project nhóm

Thay đổi Multiple persistence units defined: để Ignore.

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