allegro続き

結構整理されてきた

allegro
allegro.acl
    AccessControl
    AclRole
    AclResource
    AclRule
allegro.auth
    AuthProviderFactory
    AuthProvider
    AuthStorage
    Identity
allegro.cache
    Cache
allegro.config
    Configuration
    ConfigManager
allegro.data
    Entity
    Tuple
    Cell
    
    
allegro.datastore
    <abstract>
    DataStoreContext
    DataStoreContextManager
    Collection
    Transaction
    RowSet

    Criteria
    Command
    Parameter
allegro.db
    <implements>
    DbDataStoreContext
    DbCollection
    DbTransaction
    DbRowSet
    DbExpressionComposer
    <special>
    DbTable
    DbQuery
allegro.db.mysql
    <implements>
    MysqlDataStoreContext
    MysqlCollection
    MysqlTransaction
    MysqlRowSet
    MysqlExpressionComposer

allegro.db.sqlserver
    <implements>
    SqlServerDataStoreContext
    SqlServerCollection
    SqlServerTransaction
    SqlServerRowSet

    SqlServerExpressionComposer

allegro.expressions
    Expression
    ExpressionFactory
    Filter
    ComplexFilter
    CompareFilter
    RangeFilter
    MatchFilter
    ExpressionComposer
allegro.metadata
        EntityMetadata
        FieldMetadata
        MetadataFactory
allegro.models
    Repository
    Validator
allegro.validators
    FieldValidator
    
allegro.util
        Converter
        Parser
        Formatter
        Filter
        ObjectLoader

public class Sample{
    public int saveProduct(product){
        DataStoreContext context = DataStoreContext.get("default");
        DataStoreTransaction transaction = context.getTransaction();
        transaction.begin();

        DataCollection products = context.getCollection<Product>();
        products.save(product);

        transaction.commit();
    }
    public Product getProduct(productId){
        DataStoreContext context = DataStoreContext.get("default");

        DataCollection products = context.getCollection<Product>();
        Product product = products.get(
            new DataKey().assign("product_id",productId)
        );
        return product;
    }
}


[Entity]
[Table(name="orders")]
class Order{
    [Column(name="id")]
    [Identity]
    int id;
    
    [Column(name="order_date",required=true)]
    dateTime orderDate;

    [ManyToOne(foreignKey="customer_id")]
    Customer customer;
    
    [Column(name="created_at")]
    dateTime createdAt;
    [Column(name="modified_at")]
    dateTime modifiedAt;

    [Column(name="remarks")]
    string remarks;
    
    [OneToMany((foreignKey="order_id"))]
    List<OrderItem> items;
    
    public void addItem()
}
[Entity]
[Table(name="order_items")]
class OrderItem{
    [ManyToOne(foreignKey="order_id")]
    Order order;
    
    [ManyToOne(foreignKey="product_id")]
    Product product;

    [Column(name="unit_price")]
    decimal unitPrice;
    
    [Column(name="units")]
    decimal units;
    
    [Column(name="remarks")]
    string remarks;
}