SitePoint Sponsor

User Tag List

Page 2 of 3 FirstFirst 123 LastLast
Results 26 to 50 of 54
  1. #26
    SitePoint Addict pachanga's Avatar
    Join Date
    Mar 2004
    Location
    Russia, Penza
    Posts
    265
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by mlemos
    I note that your problem is that you do not pay attention to what I am telling you. Then you blame me for your lack of attention and even resort to personal insult by calling me dishonest. Have you ever considered that you are the one with difficulty to understand?
    Please don't take it personal, i apologize if i sounded harsh. You recommend Metastorage to everyone in every db related thread and i simply wanted to give it a real test-drive. I got really interested in Metastorage since you keep saying that "Metastorage approach seemed less complicated (less development steps), more efficient" than that of Hibernate which simply turned out not true for me and this is what i'm trying to point at.

    Ok, here's my short Metastorage summary:

    - it really does map some dictated to a developer model described with its own XML schema where you can mix XML markup with PHP

    - maps the model in a very straight-forward manner: one class - one table and it seems to be impossible to customize this behavior

    - doesn't support value objects

    - it's not valid to compare Hibernate and Metastorage, since the former is way more comprehensive and flexible

    - there is a lot of extra stuff for Metastorage: auto forms builder, UML builder, XML schema builder using UML, etc...



    There're still many other questions, e.g:

    - does it support lazy loading and eager fetching of collections? And if yes how can it be controlled from mapping schema?

    - does it wrap object persistent attributes with proxies in order not to load a full graph of objects?

    - does it have some sort if IdentityMap implementation in order to cache already fetched objects?

    - what is the entity uid generation mechanism?
    Last edited by pachanga; Oct 10, 2005 at 23:44.

  2. #27
    Non-Member
    Join Date
    Jan 2003
    Posts
    5,748
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    From an object oriented point of view, I'm not exactly sure myself the best method of doing thing, but from an SQL point of view,
    Thinking about this some more today, here is one solution for you. Say you start off with a collection of objects, so these objects would at the very minimum have a bunch of getters to access the data yes?

    PHP Code:
    class Person {
    //...
    public function getId() {
    return 
    $this -> id;

    // other getters 
    // ...

    So, why not have this class have it's own ability to create it's own collection? The collection would be based on an ID - so you query the database based on this ID, and the class it's self creates it's own collection.

    This happens for you for each object you create, in the original collection. In doing so this way, you would eventually have your entire collection of a person, related persons to them, and their own related persons etc... Since each unique object has it's own collection in that event.

    PHP Code:
    // untested but it's a rough approx. in my view
    //
    $collection = array();
    foreach( 
    $rs as $row ) {
    $collection[] = new Person$row );
    }
    // ...
    class Person /* extends ?? */ {
    public 
    $id;
    // ...
    public function __construct$row false ) {
    if( 
    $row ) {
    $this -> populate$row );
    }
    }

    public function 
    getId() {
    return 
    $this -> id;
    }
    // other getters

    private function populate$row ) {
    $this -> collection = array();
    foreach( 
    $row as $item ) {
    if( 
    $c $this -> createCollection$item['ID'] ) ) {
    $this -> collection[] = new Person$c ); // fix
    }
    }

    private 
    createCollection$id ) {
    // query your database based on this ID passed
    // ...
    if( $rs -> fetch() ) {
    $tmp = array();
    while( 
    $rs -> fetch() ) {
    // fetch a row
    $tmp[] = $rs -> getAll();
    }
    return 
    $tmp;
    }
    return 
    false;
    }
    // ...

    The ID in question isn't the ID of the person in question, but the related persons to that given person...

    Does this make sense to you?
    Last edited by Dr Livingston; Oct 11, 2005 at 02:06. Reason: add an example

  3. #28
    SitePoint Member
    Join Date
    Sep 2005
    Posts
    15
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Thumbs up Thanks for guiding me

    Thanks for the help...
    atleast now i know that metastorage is the technology am going to use for the project........

    i will soon posts my piece of work if ever i come across any problems..
    any help obtained is very valuable....

    well i was installing metastorage on wamp......but i don't know where to put the folder so i place it the www folder root of wamp......

    when testing how to build the codes via interface generator it worked for sure but when trying to run the php script in the manual am having some configurations problem....


    i would like to know how to configure and install metastorage with wamp
    or installation of apache mysql php on windows with metastorage...

    my problem is i am a newbie in linux so am having trobles to configure metastorage......so i used wamp.....i will soon install fedora 4 on my pc...
    so till then am working on windows xp but it can be implemented on xp also

    well for the commands on shell is it the same on windows.......
    how to configure these also on linux also will be very grateful....
    a tutorial or some guidelines will be most welcome.....

    Thanks again.......

    Ps; my problem is in which directory to place what....
    that's y i use wamp but metastorage how to integrate it with apache, php,mysql or directly how to link it with wamp to start working quickly....

    Everything seems difficult at first until i give it a real try coz the impossible is often untried.........hope to get siome guidelines soon

    Thank you a million times

  4. #29
    SitePoint Addict
    Join Date
    Apr 2002
    Posts
    330
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by tos
    well i was installing metastorage on wamp......but i don't know where to put the folder so i place it the www folder root of wamp......

    when testing how to build the codes via interface generator it worked for sure but when trying to run the php script in the manual am having some configurations problem....


    i would like to know how to configure and install metastorage with wamp
    or installation of apache mysql php on windows with metastorage...
    You can install Metastorage as described in the documentation as long as your Web server lets you access Metastorage Web interface files. I suppose that if you unpack the Metastorage archive that you get from the download page in the htdocs directory that will do.

    Then you just need to access http://localhost/metal/metastorage/index.html . This page links the Webstorage application (Metastorage compiler Web interface) and also to documentation pages.

    This should work the same with either Apache on Windows or Linux. Just make sure that Apache handles .php extension as PHP scripts, your php.ini has safe_mode disabled and memory_limit is set to a sufficient memory value (32MB should be enough).
    Manuel Lemos

    Metastorage - Data object relational mapping layer generator
    PHP Classes - Free ready to use OOP components in PHP

  5. #30
    SitePoint Addict
    Join Date
    Apr 2002
    Posts
    330
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by pachanga
    - maps the model in a very straight-forward manner: one class - one table and it seems to be impossible to customize this behavior
    As I said, it is not impossible, it is just something that nobody asked before. Implementing that is not hard at all.


    Quote Originally Posted by pachanga
    - it's not valid to compare Hibernate and Metastorage, since the former is way more comprehensive and flexible
    I am not a a native English speaker, but this sentence sounds to me as a contradiction. First you say that it is not valid to compare Hibernate and Metastorage, but than you compare them by saying that Hibernate better in some aspects than Metastorage!?!

    Anyway, what I said, and I keep saying, that despite I do not use Hibernate or even Java, but based on the available documentation and sample projects, Hibernate approach is more complicated because it require more development steps to understand and create a pile of files of source code and configuration to get you started. Then it requires a bunch classes of Hibernate framework that is needed at runtime to process mappings to store and retrieve your persistent objects.

    Maybe once you try Metastorage for real you understand that what I am saying is that Metastorage is simpler to use because you can define all you persistent classes model in a single file according to your needs and Metastorage generates all the code for you. Metastorage generates efficient code because it does not need any framework to store and retrieve persistent objects at runtime, the generated code already the necessary knowledge to do that.

    Anyway, Metastorage was developed primarily to fulfill real world needs. It was not developed to compete with any other project. I am sure it can be improved to provide more and better features that Hibernate or others already provide because no project is perfect for everybody.

    So, I am not telling you to use Metastorage if it does not fulfill your real world needs. If does not fulfill your needs, either you use another tool or develop your own, or you do like many others that expressed their needs and what Metastorage missed was added to the to do list and will be implemented soon or later.


    Quote Originally Posted by pachanga
    - does it support lazy loading and eager fetching of collections? And if yes how can it be controlled from mapping schema?
    All referenced objects, collections and blobs are lazy loaded. If you want to retrieve objects that are lazy loaded, you need to add a function of the appropriate type to the right class to request the explicit loading of the objects.

    For instance, if you have object that has a collection of objects of another class, you need to add a function of the type getcollection to the class that has the collection. At run time you call that function and its objects are loaded then.

    Furthermore you can associate a filter expression in Metastorage OQL to a getcollection function to restrict the retrieved objects to those that satisfy a certain condition.


    Quote Originally Posted by pachanga
    - does it wrap object persistent attributes with proxies in order not to load a full graph of objects?
    Isn't that what lazy loading means?

    Quote Originally Posted by pachanga
    - does it have some sort if IdentityMap implementation in order to cache already fetched objects?
    The factory class keeps an array of already retrieved objects of each class to prevent creating the same object in memory more than once.

    Quote Originally Posted by pachanga
    - what is the entity uid generation mechanism?
    It uses auto-increment fields implemented by Metabase database abstraction API.
    Manuel Lemos

    Metastorage - Data object relational mapping layer generator
    PHP Classes - Free ready to use OOP components in PHP

  6. #31
    SitePoint Addict pachanga's Avatar
    Join Date
    Mar 2004
    Location
    Russia, Penza
    Posts
    265
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by mlemos
    it's not valid to compare Hibernate and Metastorage, since the former is way more comprehensive and flexible
    I am not a a native English speaker, but this sentence sounds to me as a contradiction. First you say that it is not valid to compare Hibernate and Metastorage, but than you compare them by saying that Hibernate better in some aspects than Metastorage!?!
    If i wanted to refer to Metastorage in that case i would use the "latter" word while "former" refers to Hibernate. I'm not a native English speaker neither, please correct me if i'm wrong.

  7. #32
    SitePoint Addict pachanga's Avatar
    Join Date
    Mar 2004
    Location
    Russia, Penza
    Posts
    265
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by mlemos
    Anyway, what I said, and I keep saying, that despite I do not use Hibernate or even Java, but based on the available documentation and sample projects, Hibernate approach is more complicated because it require more development steps to understand and create a pile of files of source code and configuration to get you started. Then it requires a bunch classes of Hibernate framework that is needed at runtime to process mappings to store and retrieve your persistent objects.
    You should really have a look at "Hibernate In Action" book before trying to make any sort of such claims. I tried Hibernate and had a glimpse at Metastorage and i find Hibernate to be way more logical and more suitable for mapping rich domain models than Metastorage.

    Maybe once you try Metastorage for real you understand that what I am saying is that Metastorage is simpler to use because you can define all you persistent classes model in a single file according to your needs and Metastorage generates all the code for you.
    Simpler doesn't mean to be better, right? I wanted to try Metastorage but found its approach absolutely inappropriate for my model and simple examples mentioned above showed that. Maybe Metastorage can work good for small projects where model is mapped directly to the db schema but it's not my case.

    I'll stress it again Metastorage dictates the model to the developer and this is what i want to avoid at all costs.

    Isn't that what lazy loading means?
    Well, yes, but collections and object references are different things. I wonder how you managed to implement real proxies for PHP4 where overloading extension is totally broken.

  8. #33
    Non-Member
    Join Date
    Jan 2003
    Posts
    5,748
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    If i wanted to refer to Metastorage in that case i would use the "latter" word while "former" refers to Hibernate.


    And my spoken language is English - Hell, it's the only language I know... Well the only one that is printable anyways

  9. #34
    SitePoint Addict
    Join Date
    Apr 2002
    Posts
    330
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by pachanga
    If i wanted to refer to Metastorage in that case i would use the "latter" word while "former" refers to Hibernate. I'm not a native English speaker neither, please correct me if i'm wrong.
    That is not the point. You say it is not valid to compare, but when you say A is more than B, you are indeed comparing. That is the contradiction. Anyway, nevermind.
    Manuel Lemos

    Metastorage - Data object relational mapping layer generator
    PHP Classes - Free ready to use OOP components in PHP

  10. #35
    SitePoint Addict
    Join Date
    Apr 2002
    Posts
    330
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by pachanga
    You should really have a look at "Hibernate In Action" book before trying to make any sort of such claims. I tried Hibernate and had a glimpse at Metastorage and i find Hibernate to be way more logical and more suitable for mapping rich domain models than Metastorage.
    I looked at Hibernate documentation in the site and Hibernate in Action sample chapters and that was enough to conclude that if you have to setup a lot of files to define a miriad of mapping details (most of which could be assumed as defaults), model classes, ant build files, etc..., that is certainly more complicated than just editing ONE file to define the classes model in Metastorage XML component format from which it generates all you need to get started writing your application based in the generated code in seconds.

    You don't know that because in reality you never tried Metastorage.

    Anyway, that is my opinion and I am not going to insist and explain it again as I would be repeating myself.



    Quote Originally Posted by pachanga
    Simpler doesn't mean to be better, right? I wanted to try Metastorage but found its approach absolutely inappropriate for my model and simple examples mentioned above showed that.
    Simpler means better to many people. Hibernate is often considered better than CMP EJB solutions because CMP with EJB is a pain and Hibernate is simpler, despite Hibernate is slower as it uses runtime reflection to figure what to do to persist the objects.

    Now, Metastorage is even simpler because you do not have to go through many of the steps that Hibernate based solutions need. If you had tried Metastorage for a fact you would know, but it seems to me that you are more concerned to minimize the merits of Metastorage, rather than using it for real and see how much time and development effort it saves..

    Quote Originally Posted by pachanga
    Maybe Metastorage can work good for small projects where model is mapped directly to the db schema but it's not my case.
    If you have seen the component schema with tens of classes that a Metastorage user is developing to implement a large ERP system, you could realize that mapping details have nothing to do with the size of the projects.


    Quote Originally Posted by pachanga
    I'll stress it again Metastorage dictates the model to the developer and this is what i want to avoid at all costs.
    I already told you that Metastorage lets implement the model you want. If you just want to map classes and variables to tables and field with different names, that is very easy to do. I also said that was never done because nobody asked.

    If that is important for you and you indeed want to become a legitimate Metastorage user, I can implement that right away. If you do not want to use Metastorage at all, obviously I will skip that to give priority to other features that legitimate users have asked. It is on the to do list anyway, so it will be implemented soon or later.


    Quote Originally Posted by pachanga
    Well, yes, but collections and object references are different things. I wonder how you managed to implement real proxies for PHP4 where overloading extension is totally broken.
    As I said, collections are also lazy loaded. When you want to retrieve all objects of a collection, you just call a function of the type getcollection and it returns an array with references to the collection objects. I also said that you can associate filter expressions in Metastorage OQL that are compiled and executed at runtime without any delay parsing and converting the OQL queries in SQL.
    Manuel Lemos

    Metastorage - Data object relational mapping layer generator
    PHP Classes - Free ready to use OOP components in PHP

  11. #36
    Non-Member
    Join Date
    Jan 2003
    Posts
    5,748
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    If you just want to map classes and variables to tables and field with different names, that is very easy to do.
    Of course it's easy... It's just as easy I suppose with a dozen other methods as well, but it's how you want to work with that mapping is what is we are more concerned with I think?

    I don't think MetaStorage makes it easy to work with in my view, what MetaStorage does, it does it well in some respects, but in saying that, there are limitations. Hibernate, despite your obvious view of it, addresses those limitations.

  12. #37
    SitePoint Addict pachanga's Avatar
    Join Date
    Mar 2004
    Location
    Russia, Penza
    Posts
    265
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by mlemos
    That is not the point. You say it is not valid to compare, but when you say A is more than B, you are indeed comparing. That is the contradiction. Anyway, nevermind.
    But i'm not comparing i'm stating the fact: Hibernate is more comprehensive and flexible than Metastorage. You don't agree, do you?

  13. #38
    SitePoint Addict pachanga's Avatar
    Join Date
    Mar 2004
    Location
    Russia, Penza
    Posts
    265
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by mlemos
    I looked at Hibernate documentation in the site and Hibernate in Action sample chapters and that was enough to conclude that if you have to setup a lot of files to define a miriad of mapping details (most of which could be assumed as defaults),
    Hibernate is all about the freedom of choice and flexibility that's why one can have very complicated mappings which in fact are very logical and easy to read.

    model classes,
    Now finally, i understand why we don't understand each other! You think that it's ok to generate the business model with some tool(Metastorage) while i think that it's actually what a programmer must do with his head and hands.

    Programming the business model is art which requires some serious programming skills. It's actually where all the most important logic relevant to the application happens. Martin Fowler and Eric Evans will second that

    I think you should place the following text on the home page of the Metastorage site:

    "Metastorage is the most comprehensive ORM tool for PHP. It doesn't simply map your business model to a database but it also generates the model for you. You don't need to design it, draw UMLs, develop it using TDD, etc - leave it to Metastorage! Just create your db schema and describe mappings and you're done! Isn't it great?! Indeed, why spending lots of hours for knowledge crunching, creating domain ubiquitous language, hiring domain experts and polishing business model? It's difficult and tedious - Metastorage will do it for you. As a free bonus it will also draw UMLs and generate web forms for you."



    I agree that in the simplest cases where model can be mapped to the database in a straight forward fashion Metastorage can be helpul. But it fails miserably for more complicated tasks(remember value objects?). Why don't you admit that? Metastorage is simply a generator of getters/setters classes for db which supports really weird things IMO:

    Code:
    <function>
      <name>addBid</name>
      <type>custom</type>
      <argument>
        <name>bid</name>
      </argument>
      <parameters>
        <language>PHP</language>
        <do>
    
        foreach($this->bids as $bid)
        {
          if($bid->getDatePeriod()->intersects($new_bid->getDatePeriod()))
            throw new BusinessException('Buids can not overlap!');
        }
        
        $bid->setAuthor($bid);
        $this->bids->add($new_bid);
    
        </do>
        <return>boolean</return>
      </parameters>
    </function>
    If you call it modelling i give up...

    ant build files
    It has nothing to do with mapping and you know that.

    that is certainly more complicated than just editing ONE file
    You wouldn't believe it but Hibernate allows you to keep all mappings in one file as well. However i think it's more logical to have one mapping file for every model class but it's just the matter of choice. At the same time Hibernate supports annotations right in the business model code:

    Code:
    @Entity(access = AccessType.FIELD)
    public class Customer implements Serializable {
        
        @Id;
        Long id;
    
        String firstName;
        String lastName;
        Date birthday;
    
        @Transient
        Integer age;
    
        @Embedded
        private Address homeAddress;
    
        @OneToMany(cascade=CascadeType.ALL)
        @JoinColumn(name="CUSTOMER_ID")
        Set<Order> orders;
    
        // Getter/setter and business methods
    }
    You don't know that because in reality you never tried Metastorage.
    But why should i if find its approach unacceptable?

    I already told you that Metastorage lets implement the model you want.
    Nope it doesn't. I showed you the model i want and you showed what it must be if used with Metastorage.

    Quote Originally Posted by mlemos
    Quote Originally Posted by pachanga
    I wonder how you managed to implement real proxies for PHP4 where overloading extension is totally broken.
    As I said, collections are also lazy loaded. When you want to retrieve all objects of a collection, you just call a function of the type getcollection and it returns an array with references to the collection objects. I also said that you can associate filter expressions in Metastorage OQL that are compiled and executed at runtime without any delay parsing and converting the OQL queries in SQL.
    Could you please simply answer the question regarding proxy?

  14. #39
    SitePoint Member
    Join Date
    Sep 2005
    Posts
    15
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Project help

    Hi all...during the few days i was try to derive the classes and how will they be related and finally i need to make use of metastoarage which am still learning......

    well my project is about an online photo album using ajax.
    any resources on ajax also is most welcomed....but am mostly catered about how metastorage can handle this situation?

    classes containing members, albums which has 2 generalization Events and places, which are in turn linked to each other as N:N and also images which is an association to albums...i know its part of the album but am a bit confused if its a composition rather than an association.......

    could anyone help please?How to cater about this relationship?furthermore is it okay for the other relationship of classes.....

    the more interesting part is that members are related to each other(may or maynot), zats why i was wondering if metastorage could handle many to many relationships....

    in all every member is related to some members related to some images which are related to albums which are generalized into events(birthday,marriage,etc..) and Places......

    Note that places and events are also related like i mentioned?

    So finally there will be complex queries with these related objects.......
    i would like to know can metastorage handle such operations and queries?
    i am still learning metastorage and due to lack of time....i could not worked on it a lot.....

    am still in the background study and analysis phase........but am still trying to begin to write some piece of code for my application......

    could anyone please tell me what is wrong with my classes and relationships...
    furthermore how can i design it with metastorage?this part am gonna try it soon a few tips is most welcomed...

    i need to send request OQL to metastorage which in turn handles the databases according to the queries......can this be done? yeah i know but just to confirm?

    a bit confused these days?

    thanks a lot in advance......i really need great help

  15. #40
    SitePoint Addict
    Join Date
    Apr 2002
    Posts
    330
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by tos
    classes containing members, albums which has 2 generalization Events and places, which are in turn linked to each other as N:N and also images which is an association to albums...i know its part of the album but am a bit confused if its a composition rather than an association.......

    could anyone help please?How to cater about this relationship?furthermore is it okay for the other relationship of classes.....
    Your explanation is a bit confusing. It would help if you provide a sort of diagram that shows what entitities (classes) do you want to manipulate and what kind of relationships they have between them. There are several UML diagram editors that may help you on this. There is Umbrello for Linux and Poseidon (Java based) just to mention a couple that are free.

    Quote Originally Posted by tos
    the more interesting part is that members are related to each other(may or maynot), zats why i was wondering if metastorage could handle many to many relationships....
    Yes.

    Quote Originally Posted by tos
    So finally there will be complex queries with these related objects.......
    i would like to know can metastorage handle such operations and queries?
    You would have to tell me more about such queries, but generally yes.


    Quote Originally Posted by tos
    am still in the background study and analysis phase........but am still trying to begin to write some piece of code for my application......
    Usually code is the last thing you work on. First you need to get your data model right in a way that it satisfy your application requirements.
    Manuel Lemos

    Metastorage - Data object relational mapping layer generator
    PHP Classes - Free ready to use OOP components in PHP

  16. #41
    SitePoint Addict
    Join Date
    Apr 2002
    Posts
    330
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by pachanga
    But i'm not comparing i'm stating the fact: Hibernate is more comprehensive and flexible than Metastorage. You don't agree, do you?
    You are a totally confused fellow. You don't seem to know what comparings means. Maybe if you look in a dictionary for the word comparing you realize that if you say that A is more than B, therefore you are comparing A with B. So, you are in contradiction when you say you are not comparing.

    Anyway, that is just a tip regarding the fact that your confusions are the reason of your misunderstandings.
    Manuel Lemos

    Metastorage - Data object relational mapping layer generator
    PHP Classes - Free ready to use OOP components in PHP

  17. #42
    SitePoint Addict
    Join Date
    Apr 2002
    Posts
    330
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by pachanga
    Now finally, i understand why we don't understand each other! You think that it's ok to generate the business model with some tool(Metastorage) while i think that it's actually what a programmer must do with his head and hands.
    You continue to have difficulty to understand, what I have already told you, that when you use Metastorage it is still the developer that defines the business model. Whether or not you like that, that is totally your problem. Maybe you start getting it with a metaphor.

    Metastorage is a tool was developed to drastically reduce the development time by generating code that otherwise would take more time to write, test and debug when done manually.

    It is like crossing an ocean. You can either do it yourself swimming all the way (if you do not give up or die in the middle) or you can navigate througout the ocean using a boat. Metastorage is like a boat. Not only it maps your business model, but it also can bundle a lot more functionality that you can use to implement the details of your business model, but without having write, test and debug all that code manually.

    The part that you still not get, is that using Metastorage the developer is not replaced, as it is explained in the Metastorage FAQ, but rather he may concentrate more time on the parts that require higher level knowledge and creativity.

    If you are against code generation, forget Metastorage and everything else that relies on it. In that case you need to try to cross your ocean and fail as many times as necessary to realize that boat are good after all.



    Quote Originally Posted by pachanga
    Metastorage is simply a generator of getters/setters classes for db which supports really weird things IMO:
    You must not be serious. Metastorage is based on the MetaL engine. MetaL has over 43.000 lines of pure PHP. The persistence module, which is the base of Metastorage, alone has 20.000 lines.

    Just this year I was invited to give 5 talks in different places about Metastorage. One of the talks was part of IT post-graduate course to which I was invited to give an class that takes 8 hours. Just the Metastorage training part has over 50 slides detailing how Metastorage can be used in real world PHP projects.

    There are in total 360Kb of HTML documentation including the reference manual, the FAQ, Howto and a troubleshooting guide.

    I also mentioned that one user alone is working on an ERP project that uses Metastorage to handle the model layer of his application that has tens of classes.

    Your attempt to minimize the value that Metastorage has to its legitimate users just makes you look totally ridiculous.

    It seems to me that you never had a real interest in Metastorage at all since the beginning of the thread and you are just using your false interest as an an excuse to minimize my work.

    Anyway, given that you seem to want to turn this thread into a personal attack to my work, I cannot justify giving you anymore attention to somebody that lacks of proper maturity. Grow up and learn to respect the work of others and maybe you get some respect for yourself.
    Manuel Lemos

    Metastorage - Data object relational mapping layer generator
    PHP Classes - Free ready to use OOP components in PHP

  18. #43
    SitePoint Addict pachanga's Avatar
    Join Date
    Mar 2004
    Location
    Russia, Penza
    Posts
    265
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by mlemos
    Anyway, given that you seem to want to turn this thread into a personal attack to my work, I cannot justify giving you anymore attention to somebody that lacks of proper maturity. Grow up and learn to respect the work of others and maybe you get some respect for yourself.
    Oh, thank you for this professional and really mature advice. This is a very healthy attitude to my reasoned critique. I think folks watching this thread will draw some conclusions regarding Metastorage and its use.

    P.S. Don't forget to put the link to this thread for your every hyping Metastorage post in the future. This will save some time for folks evaluating your product.

  19. #44
    SitePoint Addict
    Join Date
    Apr 2004
    Location
    Melbourne
    Posts
    362
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I'll say a narrow victory to pachanga. There are some over generalisations, and I don't think they were both arguing the same points all the time, but based on pachanga asking the initial question he gets the benefit of the doubt.

  20. #45
    Non-Member
    Join Date
    Jan 2003
    Posts
    5,748
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Metastorage is like a boat.
    The Titanic comes to mind... Look what happened

  21. #46
    SitePoint Addict
    Join Date
    Apr 2002
    Posts
    330
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by Dr Livingston
    The Titanic comes to mind... Look what happened
    Good joke, however Titanic did not survive its first trip. Metastorage was started 3 years ago and has been used successfully by many people.

    Other than that, Titanic did not sink because the boat was not good, but rather because the captain was not warned in time about the proximity of icebergs.

    Anyway, my point is that many projects are only viable if you use tools that let you accomplish your tasks in time, or else they may never end of be canceled due to the lack of patience of who is paying for them.

    While you are young an inexperienced, you may think that just because you know how to program, no project is too large or too difficult for you.

    That is a dangerous thought because you may only realize that your project is ill fated when it is ended by somebody else (be fired or have the project canceled) or you realize that you did not have that much time to do it all by hand.

    Metastorage was not written to replace the developer but rather to let him program in a more efficient way.

    I can understand that certain people have difficulty to accept this because they don't know for sure whether Metastorage can do what they need, or are just afraid that Metastorage is too good that can make them dispensable.

    That is FUD, but I am well aware that is a psychological problem that affects practically all code generation based projects. That is why I have taken some measures like making Metastorage generate commented code. Comments only increase the generated code files size, but at least they can help uncertain developers to understand better what Metastorage does so they can feel more confident about this tool.

    Of course that will not help developers that make assumptions without trying it or already assumed a prejudice position. There is nothing to be done nor there is time to waste with developers that act on prejudice. Let the time help them reaching the same conclusions I described above.

    Often I see the question: Is PHP ready for the enterprise? The way I see it the question should have been: Are PHP developers ready for the enterprise? I don't think that "prima donna" developers that insist on low productivity developing methods are ready for the enterprise. Hand coding everything, including in medium or large projects, is one of those problematic methods. Time will tell them just that.

    On the opposite side there are developers that are very eager to use mature code generation based solutions. Many of those developers know that wasting too much time with hand coding methods may simply kill their projects soon or later. They know that because it already happened to them before.

    Of course, since each code generation tool needs to be learned properly, they also need good documentation, tutorials, if not on site training.

    That explains a recent surge in the requests that I have had to give talks and training about Metastorage. I do not do that for a living. My full time job is the PHP Classes site. Fortunately, since I am my own boss, I can spare a few days to travel wherever I am asked to go, as long my travel and lodging expenses are covered. I do not charge anything for training because I reuse presentation materials prepared in past training sessions.

    My goal in giving free Metastorage training is to increase its user base as much as possible. My main benefit from that is the more users try it, the more bug reports and feature suggestions I get. Ultimately I benefit from that too because it helps improving my own tool that I use for developing the PHP Classes site. So, the time and effort that I spend with Metastorage is fully justified to me.
    Manuel Lemos

    Metastorage - Data object relational mapping layer generator
    PHP Classes - Free ready to use OOP components in PHP

  22. #47
    Non-Member
    Join Date
    Jan 2003
    Posts
    5,748
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Nonetheless, the Titanic did sink, didn't it?

    While you are young an inexperienced, you may think that just because you know how to program, no project is too large or too difficult for you.
    I'm not that young and inexperienced that I can't decide which tools are right or not for the job at hand. Metastorage isn't the right tool, going by the requirements of the threads author.

    You forget that Metastorage is just that - a tool. It isn't going to be a viable option for every case, whereas the view that I get from you, is that what you want to do, is to shoehorn Metastorage as a viable option or solution to every object relational mapping issue that has in the last 18 months or so, been discussed on these forums.

    As for personal attacks, I can't on any account, see where Pachanga has actually made any personal attacks. The posting you made earlier though, has a lot to say not only about yourself, but also of Metastorage.

    Instead of discussing the possibilities of what Metastorage can do, and what it could do, in a meaningful and positive manner, you have ridiculed everyone who has taken part in this dicussion, who questions your tool and reasoning.

    That isn't healthy for Metastorage, as people are taking note. More importantly it isn't healthy for these forums, and it's members.

  23. #48
    SitePoint Enthusiast
    Join Date
    Aug 2002
    Posts
    54
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    The best way for this sensitive application is to develope it in your own , or hire someone to develope it for your uses !

    I advice that .

  24. #49
    SitePoint Wizard DougBTX's Avatar
    Join Date
    Nov 2001
    Location
    Bath, UK
    Posts
    2,498
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by mlemos
    Quote Originally Posted by pachanga
    Metastorage is simply a generator of getters/setters classes for db which supports really weird things IMO:
    You must not be serious. Metastorage is based on the MetaL engine. MetaL has over 43.000 lines of pure PHP. The persistence module, which is the base of Metastorage, alone has 20.000 lines.
    But you don't refute pachanga's claim?

    63,000 lines of PHP for a generator of getters/setters classes?

    Douglas
    Hello World

  25. #50
    SitePoint Member
    Join Date
    Sep 2005
    Posts
    15
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Metastorage Help

    i would like to have enough materials to get me started with metastorag...
    well i have finish design my class diagram but i don't know how to upload it to the forum..

    i just wanted to say that its easy to criticise someone's work but really an open source ORM really helps for those who don't have time to code classes one by one but rather needs to concentrate on building complex queries.

    well how can i upload the class diagram for me, then to really know based on your comments -that am sure i gonna get positive response, how metastorage handle my needs or if suvh complex queries are supported by the OQL of metastorage.....


    Thanks in advance.....

    Ps:could i mail u mlemos if i can't upload the class diagram


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •