diff Lib/IMPL/ORM.pm @ 79:2d1c3f713280

ORM concept in development
author wizard
date Mon, 05 Apr 2010 00:20:34 +0400
parents 16ada169ca75
children 4267a2ac3d46
line wrap: on
line diff
--- a/Lib/IMPL/ORM.pm	Fri Apr 02 20:19:17 2010 +0400
+++ b/Lib/IMPL/ORM.pm	Mon Apr 05 00:20:34 2010 +0400
@@ -35,89 +35,48 @@
 
 1;
 __END__
+
 =pod
+
+=head1 NAME
+
+C<IMPL::ORM> - Object Relational Mapping
+
 =head1 SYNOPSIS
 
-use IMPL::ORM::Sql;
+=begin code
 
-my $DB = new IMPL::ORM::Sql("connection string");
+my $ds = IMPL::ORM::Storage::DBIC->new('My::Data',$dsn,$user,$pass,{Autocommit => 1});
+
 
-local $IMPL::ORM::Depth = 1; # load childs only, no more
-
-my $artist = $DB->Lookup( Artist => { name => 'Beatles' } );
+my $foo = $ds->Insert(
+	My::Data::Foo->new(
+		'foo class'
+	)
+);
 
-my $order = new Order();
-$order->AddItem($_) foreach $artist->Albums->List;
+my $bar = $ds->Insert(
+	My::Data::Bar->new(
+		'bar class'
+	)
+)
+
+$bar->fooObject($foo);
+
+$ds->Save($bar);
 
-$DB->Save($order);
+my $fooOther = $ds->Retrieve(
+	'My::Data::Bar',
+	{
+		name =>  'bar class',
+		fooObject => {
+			name => 'some foo'
+		}
+	}
+)
 
-my $label = $artist->Albums->Index(0)->Label;
-
-$DB->Populate($label); #load $label
+=end code
 
 =head1 DESCRIPTION
-=head2 MEMBERS
-=level 4
-=back
-=head2 Variables
-=head2 INTERNALS
-=head3 Object Representation
 
-Каждый класс отображаемый в источник данных представляется в виде набора
-сущностей, каждая из которых представляет состояние базового класса.
-
-Foo         entityFoo
-    Bar         entityBar
-    Baz         entityBaz
-
-При сохранении виртуальных свойств классов в соответствующих сущностях заводится
-два поля - одно под сохранение собственного значения свойства, другое - для
-хренеия виртуального значения.
-
-Foo
-    public virtual property Name => prop_all, {Type => String};
-    
-entityFoo
-    string m_Name - собственное значение
-    string v_Name - вртуальное значение
-    
-Каждый сохраненный объект в базе имеет собственный идентификатор.
-Новые объекты идентификатора не имеют, до тех пор пока они не будут сохранены.
-
-=head3 Object Cache
-
-Для учета объектов, которые присутствуют в источнике данных используется кеш
-объектов. Сюда попадают полученные из базы объекты, а также вновь добавленные
-объекты.
-
-ObjectInfo => {
-    instance => weak ref
-    _id => data source dependent id
-    state => {persistent|null|new|deleted}
-    work_unit => ref to the work unit where object is acting
-}
-
-данная структура доступна через две функции ObjectInfoById и ObjectInfo
-
-=head3 Type mapping
-
-Источник данных имеет в себе схему данных, которая определяет набор типов,
-хранимых в данном источнике. Есть несколько видов отображения типов:
-
-=level 4
-
-=item 1
-
-Отображение классов, когда класс рассмаривается в иде набора свойств
-
-=item
-
-Отображение классов в одно значение (напрмер строку, данные и т.п.)
-
-=item
-
-Классы, которые на прямую работают с источником данных, такие как коллекции.
-
-=back
-
-=cut
+=cut
\ No newline at end of file