现有的ORM框架思路分析。

1. 单独对象简单属性操作

2. One 2 Many 操作

3. Many 2 Many 操作

4. Query的自定义查询操作。 

http://www.cnblogs.com/Jerry-Chou/archive/2009/11/02/light-weight-orm-for-net-publishing.html

实在是非常简单。。。单个表对象的orm映射操作。每天有参考价值

http://www.cnblogs.com/huobazi/archive/2008/01/31/dbentry.html

1. 继承了DbObjectModel<Book>, 抽象类

貌似可以直接被http访问操作。 

    User u = new User();
    u.Name 
= "tom";
    DbEntry.Save(u);

1对多的查询操作: 

代码
[DbTable("People")]
public abstract class Person : DbObjectModel<Person>
{
    [Length(
50)]
    
public abstract string Name { getset; }

    [HasOne(OrderBy 
= "Id DESC")]
    
public abstract PersonalComputer PC { getset; }

    
public Person() { }
    
public Person(string Name) { this.Name = Name; }
}
代码
[DbTable("Books")]
public abstract class Book : DbObjectModel<Book>
{
    [Length(
50)]
    
public abstract string Name { getset; }

    [BelongsTo, DbColumn(
"Category_Id")]
    
public abstract Category Category { getset; }

    
public Book() { }
    
public Book(string Name) { this.Name = Name; }
}

使用自定义的HasMany表示多对多 

代码
        Category c = Category.FindById(3);
        Console.WriteLine(
">>Before:");
        ShowHasMany(c);
        Console.WriteLine(
">>After:");
        c.Name 
= "Sport";
        c.Books[
0].Name = "Kungfu";
        c.Books[
1].Name = "Dodge the bullets";
        c.Save();
        Article a = Article.New("fly away");
        a.Readers.Add(Reader.New(
"Kingkong"));
        a.Readers.Add(Reader.New(
"Spiderman"));
        a.Save();

http://ibatis.apache.org/

http://www.docin.com/p-37858241.html

ibatis需要自己写sql对orm进行映射,简单的说,就是一垃圾。

http://docs.jboss.org/hibernate/stable/core/reference/en/html_single/#tutorial-firstapp-firstclass

Hibernate

建立一个Event的类, 

代码
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();

        Event theEvent 
= new Event();
        theEvent.setTitle(title);
        theEvent.setDate(theDate);
        session.save(theEvent);

        session.getTransaction().commit();

一对多操作

代码
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();

        Person aPerson 
= (Person) session.load(Person.class, personId);
        Event anEvent 
= (Event) session.load(Event.class, eventId);
        aPerson.getEvents().add(anEvent);

        session.getTransaction().commit();

http://www.cnblogs.com/jiangyuxuan/archive/2007/08/11/852187.html

    [Serializable]
    [ORMapping(TableName
="t_system_user")] // 映射的实际数据表名称
    public class UserEntity : BaseEntity  // 必须继承实体基类

小结一下

看现在的orm很累,都没什么意思。来来去去那些。不是xml就是元数据。现在我的问题就是关系中的操作。

如果对对象的简单属性操作,没有任何问题。

x.aaa = xxx;

Session.save(x);

如果是简单操作+1对多操作,那么这两个对象,如何保证先后?如何实现save?

1对多,person --> car,本质上,就是person有个car的主键。因此,在操作上,用户要先save(car).再save(person)

如果是多对多操作?

本质上,就是增加了连接表,是个独立与这个2个对象的表。例如

person ---> cars ---> car

首先,这个连接关系,一定有方向,例如person->car。然后才是多对多关系。那么这个连接表就属于person管理了。过程就是:

car = new car();

person = new person();

person.addcar(car);

session.save(car);

session.save(person); 

原文地址:https://www.cnblogs.com/zc22/p/1819463.html