天天看點

OjtDB for opm

一、

1、資料庫的建立

createDB.java

import java.util.*;
import javax.persistence.*;

public class createDB {
    public static void main(String[] args) {
 
        // 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();
 
        // Close the database connection:
        em.close();
        emf.close();
    }
}
           

Point.java

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Point implements Serializable {
	private static final long serialVersionUID = 1L;

	// Persistent Fields:
	@Id
	@GeneratedValue
	Long id;
//	private Boolean capital;
//	private Long population;
//	private String name;

	private int x;
	private int y;
	// Constructors:
	public Point(int x,int y) {
		this.x = x;
		this.y = y;
	}
}
           

如果資料庫應用在web應用中,$objectdb指objectdb.jar所在目錄的上層檔案夾,即WEB-INF

二、for tomcat &opm

1、

PointListener.java

package test;

import javax.persistence.*;
import javax.servlet.*;

public class PointListener implements ServletContextListener{
	 // Prepare the EntityManagerFactory & Enhance:
    public void contextInitialized(ServletContextEvent e) {
         //entityClass package name
        com.objectdb.Enhancer.enhance("test.*");//com.objectdb.o.UserException:Package test1 is not found by the enhancer
        EntityManagerFactory emf =
            Persistence.createEntityManagerFactory("$objectdb/db/points.odb");
        e.getServletContext().setAttribute("emf", emf);
    }
 
    // Release the EntityManagerFactory:
    public void contextDestroyed(ServletContextEvent e) {
        EntityManagerFactory emf =
            (EntityManagerFactory)e.getServletContext().getAttribute("emf");
        emf.close();
    }
}
           

2、web.xml

<listener>
    <listener-class>test.PointListener</listener-class>
  </listener>

           

四、錯誤

1、Persistence unit '$objectdb/lib/sqljdbc4.jar' is not found (by sun.misc.Launcher$AppClassLoader)

資料庫名如果非*.odb,則應加上objectdb:$objectdb