Eva
Java粉絲募集中
  • 簡介
  • 我們的優勢
  • 最新消息
  • 下載與使用
  • 範例與說明
    • Eva Objects >
      • Bean類別定義
      • Entity型別定義
      • Struct型別定義
      • 建立Entity空白物件
      • 建立Entity修改物件
      • 建立Entity條件物件
      • 建立Struct值物件
    • Eva_ORM >
      • ORM程式主體
      • 使用條件物件執行操作
      • 執行更複雜條件的操作.
      • 分頁取回資料
      • 操作JDBC的參數
      • Array Property的操作
      • Collection Property的操作
      • 更複雜的Collection Property
      • 指定表格名稱
      • 新增資料庫Dialect
    • Eva_IOC >
      • IOC程式主體
      • AOP應用
    • Eva_Struct >
      • Struct範例
      • Bit Strcut範例
      • 指標範例
      • 於Eva_ORM中使用
    • Eva_Sort >
      • 依指定Properties排序
      • 部份排序
      • 優先排序部份
    • Eva_Cache >
      • hashing-based cache
      • 非hashing-based cache
  • API列表
  • 技術支援
    • 協助開發
  • 相關書籍

指定表格名稱.

在下面的程式中, 分別定義了Entity X與Y. 對於每個Entity與其中的每個Property, 都會有一個預設的資料庫端命名, 而且Eva_ORM會根據這些預設的命名去將資料庫中的資料對映成物件. 當使用者想改變相關的資料表名稱與欄位名稱時, 就需要額外透過@TableNameings等相關的Annotation去重新命名. 

除了重新命名的Annotations之外, 程式中的其它部份會與原本的Eva_ORM程式完全相同, 因為受相關的命名更改影響的只有資料庫端.
package com.logntw.eva.orm.defo;

import java.util.List;

import junit.framework.Assert;

import org.junit.Test;

import com.logntw.eva.anno.orm.ColumnNaming;
import com.logntw.eva.anno.orm.Entity;
import com.logntw.eva.anno.orm.Id;
import com.logntw.eva.anno.orm.TableNaming;
import com.logntw.eva.anno.orm.TableNamings;
import com.logntw.eva.orm.DBConnectionProvider;
import com.logntw.eva.orm.EagerToGet;
import com.logntw.eva.orm.ORMappers;
import com.logntw.eva.orm.defo.conn.HSQLDB_1_8ConnectionProvider;

public class DefoORMappersTestc
{
  
  @TableNaming(table = "X1", columns ={"X2", "X3", "X4", "X5", "X6", "X7"}, namings = 
  {
    @ColumnNaming(column="id1", name="NewX1"),
    @ColumnNaming(column="data1", name="NewX2"),
    @ColumnNaming(column="id2.id3", name="NewX3"),
    @ColumnNaming(column="data2.id4", name="NewX4"),
  })  
  @Entity
  public interface X
  {
    @Id
    int getId1();
    void setId1(int id1);
        
    int getData1();
    void setData1(int data1);  
    
    @Id
    Y getId2();
    void setId2(Y id2);
        
    Y getData2();
    void setData2(Y data2);
  }
  
  @TableNamings
  ({
    @TableNaming(namings = 
    {
      @ColumnNaming(column="id3", name="NewY5"),
      @ColumnNaming(column="data3", name="NewY6")
    })
  })
  @Entity
  public interface Y
  {
    @Id
    double getId3();
    void setId3(double id3);

    @Id
    double getId4();
    void setId4(double id4);
              
    String getData3();
    void setData3(String data3);
  }

  @Test
  public void testDefoORMappersTestc() throws Exception
  {              
    DBConnectionProvider provider = new HSQLDB_1_8ConnectionProvider("DefoORMappersTestc");    
    ORMappers mappers = DefoORMappers.getInstance(provider);
    
    DefaultTableCreator.create(mappers, Y.class);
    DefaultTableCreator.create(mappers, X.class);
    
    mappers.open();
    
    try
    {            
      Y y1 = mappers.newObject(Y.class);
      
      y1.setId3(10);
      y1.setId4(22.2f);
      y1.setData3("abc");
      
      Y y2 = mappers.newObject(Y.class);
      
      y2.setId3(30);
      y2.setId4(33.3f);
      y2.setData3("def");

      X x1 = mappers.newObject(X.class);
      x1.setId1(99);
      x1.setId2(y1);
      x1.setData1(77);
      x1.setData2(y2);
      
      
      mappers.insert(y1, y2);
      mappers.insert(x1);
      
      List<X> list = mappers.select(EagerToGet.NONE, X.class);
      Assert.assertEquals(list.size(), 1);
      List<X> list2 = mappers.select(EagerToGet.ENTITY, X.class);
      Assert.assertEquals(list2.size(), 1);
                
      X x2 = list.get(0);
      X x3 = list2.get(0);
                
      Assert.assertEquals(x1, x2);    
      Assert.assertEquals(x1, x3);
      Assert.assertEquals(x2, x3);    
      
      Assert.assertEquals(x3.getData1(), 77);
      Assert.assertEquals(x3.getId2().getData3(), "abc");
      Assert.assertEquals(x3.getData2().getData3(), "def");
      
      Assert.assertEquals(x2.getData1(), 77);
      Assert.assertEquals(x2.getId2().getData3(), "abc");
      Assert.assertEquals(x2.getData2().getData3(), "def");
      
      mappers.delete(true, x1);
      mappers.delete(true, y1, y2);
      
      list = mappers.select(EagerToGet.ENTITY, X.class);
      Assert.assertEquals(list.size(),0);
      List<Y> list3 = mappers.select(EagerToGet.ENTITY, Y.class);
      Assert.assertEquals(list3.size(),0);
      
    }
    finally
    {    
      mappers.close();
      DefaultTableCreator.drop(mappers, X.class);
      DefaultTableCreator.drop(mappers, Y.class);    
    }    
  }
}
Powered by Create your own unique website with customizable templates.