现在的位置: 首页 > 综合 > 正文

JPA客户端程序

2014年01月06日 ⁄ 综合 ⁄ 共 5593字 ⁄ 字号 评论关闭

写了一个JPA的客户端程序,摘录一些内容,为以后写程序参考

=========

persistence.xml

=========

Oracle:

<?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="JPA_Samples">
		<class>com.jpa.samples.Customer</class>
		<properties>  
            <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>       
            <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@//yourip:1521/orcl"/>     
            <property name="javax.persistence.jdbc.user" value="scott"/>        
            <property name="javax.persistence.jdbc.password" value="tiger"/>  
            <property name="eclipselink.logging.level" value="FINE" />  
           <property name="eclipselink.logging.level.sql" value="FINE" />  
       </properties>  
	</persistence-unit>
</persistence>

SQLServer:

    <persistence-unit name="CT_JPA_PessimisticLock"  transaction-type="RESOURCE_LOCAL">

        <class>jpa.rowlock.entity.RowLockPesEntity</class>
        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>     
            <property name="javax.persistence.jdbc.url" value="jdbc:sqlserver://127.0.0.1:1433;databasename=db"/>   
            <property name="javax.persistence.jdbc.user" value="root"/>      
            <property name="javax.persistence.jdbc.password" value="root"/>
            <property name="eclipselink.logging.level" value="FINE" />
            <property name="eclipselink.logging.level.sql" value="FINE" />
        </properties>
    </persistence-unit>

Postgres:

<?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="JPATest">
        <class>com.jpa.test.Customer</class>
         <properties>    
               <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>         
                <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/postgres"/>       
                <property name="javax.persistence.jdbc.user" value="postgres"/>          
                <property name="javax.persistence.jdbc.password" value="tiger"/>    
                <property name="eclipselink.logging.level" value="FINE" />    
               <property name="eclipselink.logging.level.sql" value="FINE" />   
           </properties>    
    </persistence-unit>
</persistence>

SQLite:

    <persistence-unit name="JPATest">
        <class>com.jpa.test.Customer</class>
         <properties>    
               <property name="javax.persistence.jdbc.driver" value="org.sqlite.JDBC"/>         
                <property name="javax.persistence.jdbc.url" value="jdbc:sqlite:C:\sqlitedb\test.db"/>       
                <property name="eclipselink.logging.level" value="FINE" />    
               <property name="eclipselink.logging.level.sql" value="FINE" />   
           </properties>    
    </persistence-unit>

另外添加服务器端的:

    <persistence-unit name="CT_JPA_PessimisticLock" >

        <jta-data-source>jdbc/__default</jta-data-source>   <!-- data resource -->     
        <class>jpa.rowlock.entity.RowLockPesEntity</class>
        <properties>
            <property name="toplink.ddl-generation" value="drop-and-create-tables" />
            <property name="toplink.logging.level" value="FINE" />
            <property name="toplink.logging.level.sql" value="FINE" />
        </properties>
    </persistence-unit>

=========

Client

=========

    public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("CT_JPA_PessimisticLock");
        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();
//        Query query = em.createQuery("select r from RowLockPesEntity r where r.name=:name").setParameter("name", "");
//        Query query = em.createQuery("select r from RowLockPesEntity r where r.id=:id").setParameter("id", 1);
//        query.setHint(
//                org.eclipse.persistence.config.QueryHints.PESSIMISTIC_LOCK,
//                org.eclipse.persistence.config.PessimisticLock.Lock);
//        RowLockPesEntity r = (RowLockPesEntity)query.getSingleResult();
//        RowLockPesEntity entity = em.getReference(RowLockPesEntity.class, 1);
        RowLockPesEntity entity = new RowLockPesEntity();
        entity.setId(1);
        entity = em.merge(entity);
        em.remove(entity);
        em.getTransaction().commit();
//        System.out.println("id : " + r.getId() + ", name : " + r.getName());

    }

 

=========

Entity

=========

路径: jpa.rowlock.entity.RowLockPesEntity

代码片段:

@Entity
@NamedQueries(value = {
    @NamedQuery(name = "findRlpeById", query = "select r from RowLockPesEntity r where r.id = :id"),
    @NamedQuery(name = "findRlpeByName", query = "select r from RowLockPesEntity r where r.name = :name")
})
public class RowLockPesEntity implements java.io.Serializable{
    private static final long serialVersionUID = 1L;
    @Id
    private int id;
   
    String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

===============================

toplink 中相关属性的说明

===============================

1    <property name="toplink.ddl-generation" value="none"/>                    do not create DDL; no schema is generated   
2   <property name="toplink.ddl-generation" value="create-tables"/>      create tables at startup time   
3   <property name="toplink.ddl-generation" value="drop-and-create-tables "/>   drop, then create tables   
4    <property name="toplink.ddl-generation.output-mode" value="sql-script "/>   create DDL and write it to a file   
5     <property name="toplink.ddl-generation.output-mode" value="both"/>            create DDL to file AND drop/create tables  
6    <property name="toplink.ddl-generation.output-mode" value="database"/>    do not create DDL to file and drop/create tables   
7    <property name="toplink.drop-ddl-jdbc-file-name" value="fileName"/>             specify destination filename for DDL   
8     <property name="toplink.application-location" value="filePath"/>                       specify destination filepath for DDL  

【上篇】
【下篇】

抱歉!评论已关闭.