Jpa 本地方式實現數據的持久化

Jpa本身支持多種方式的對象持久化,比如數據庫方式,還有一種方式就是本地文件的方式,本文來講解以本地方式實現的數據持久化,具體的資源大家可以參閱一下網站:(以下簡稱odb官網)

在odb官網中,可以自行下載objectdb的jar包和其餘資源,如果文檔和源碼。裡面有關於jpa的具體實現方式,使用的工具為eclipse:

1. 新增java項目,將剛剛下載好的objectdb.jar包放在classpath中

2. 創建實體類,需要實現Serializable接口,其中分別給類添加Entity註解,給主鍵屬性添加Id和GeneratedValue註解

@Entity
public class Point implements Serializable {
 private static final long serialVersionUID = 1L;
 
 @Id @GeneratedValue
 private long id;
 
 private int x;
 private int y;
 
 public Point() {
 }
 
 Point(int x, int y) {
 this.x = x;
 this.y = y; 
 }
 
 public Long getId() {
 return id;
 }
 
 public int getX() {
 return x;
 }
 
 public int getY() {
 return y;
 }
 
 @Override
 public String toString() {
 return String.format("(%d, %d)", this.x, this.y);
 }
}

3. 新增java的測試類,並添加main方法,進行對象的crud操作

// Open a database connection
 // (create a new database if it doesn't exist yet):
 EntityManagerFactory emf = 
 Persistence.createEntityManagerFactory("$objectdb/db/points.odb");
 EntityManager em = emf.createEntityManager();
 
 // Store 1000 Point objects in the database:
 em.getTransaction().begin();
 for (int i = 0; i < 1000; i++) {
 Point p = new Point(i, i);
 em.persist(p);
 }
 em.getTransaction().commit();
 
 // Find the number of Point objects in the database:
 Query q1 = em.createQuery("SELECT COUNT(p) FROM Point p");
 System.out.println("Total Points: " + q1.getSingleResult());
 
 // Find the average X value:
 Query q2 = em.createQuery("SELECT AVG(p.x) FROM Point p");
 System.out.println("Average X: " + q2.getSingleResult());
 
 // Retrieve all the Point objects from the database:
 TypedQuery query =
 em.createQuery("SELECT p FROM Point p", Point.class);
 List results = query.getResultList(); 
 for (Point p : results) {
 System.out.println(p);
 }
 
 // Close the database connection:
 em.close();
 emf.close();

4. 運行主方法完成測試

Total Points: 1000
Average X: 499.5
(0,0)
(1,1)
(2,2)
(3,3)
:
:
(998,998)

(999,999)

5. objectdb解壓後還有一個非常好用的可視化客戶端工具,完成jpql的簡單校驗。

Jpa 本地方式實現數據的持久化

相對於數據庫方式實現對象持久化而言,本地odb文件方式存儲對象會顯得非常的輕量級,簡單易用。


分享到:


相關文章: