백엔드 개발 PHP 튜토리얼 Atitit.ati orm的设计and架构小结 适用于java c# php版

Atitit.ati orm的设计and架构小结 适用于java c# php版

Jun 13, 2016 pm 12:23 PM
dictionary nbsp object quot string

Atitit.ati orm的设计and架构总结 适用于java c# php版

Atitit.ati orm的设计and架构总结 适用于java c# php

 

1Orm的目标1

1.1. 动态obj1

1.2. Hbapi(meger,save,update,del)1

2Orm的概念1

3动态obj2

4参考4

 

 

 

 

 

 

1. Orm的目标

1.1. 动态obj

1.2. Hbapi(meger,save,update,del)

2. Orm的概念

saveOrUpdate后的对象会纳入session的管理,对象的状态会跟数据库同步,再次查询该对象会直接从session中取,merge后的对象不会纳入session的管理,再次查询该对象还是会从数据库中取。.

 

对于hibernate,它的对象有三种状态,transient、persistent、detached

下边是常见的翻译办法:

transient:瞬态或者自由态

persistent:持久化状态

detached:脱管状态或者游离态

脱管状态的实例可以通过调用save()、persist()或者saveOrUpdate()方法进行持久化。

persist和merge: 没有和数据库进行同步

save和update:    处理后的数据处于持久状态,换句话说,调用sql进行和数据库同步的步骤。

总的来说,对于长事务的处理,应该使用persist和merge。减少数据库交互

 

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:[email protected]

转载请注明来源: http://blog.csdn.net/attilax

 

 

3. 动态obj

 

Proj.amazon .spider

 public object hanlder(object obj, ClassLibrary1.com.attilax.lang.FilterFilterChain nextChain)

        {

            DictionarystringObject> ormObj = new Dictionarystringobject>();

            ormObj.Add("table""ecs_goods");

 

 

            DictionarystringObject> flds_frm = (DictionarystringObject>)obj;

            DictionarystringObject> flds = new Dictionarystringobject>();

            flds.Add("goods_name", flds_frm["title"]);

            flds.Add("goods_desc""goods_descxxx");

          //  flds.Add("good_nam

            ormObj.Add("fields", flds);

 

            AtiOrmX ormx = (AtiOrmX)new IocX().getBean("ormx");

 

            return ormx.save(ormObj);

        }

 

 

-------code

public  class AtiOrmX

    {

      public Ioc ioc;

 

      public Object save(Object ormObj)

      {

          String sql = SqlX.getSql(ormObj);

          Console.WriteLine("--orm sql:" + sql);

          DbUtil dbx = (DbUtil)ioc.getBean("dbx");

      return     dbx.exec(sql);

      }

}

 

 

 

 public class SqlX

    {

        public static string getSql(object ormObj)

        {

          //  throw new NotImplementedException();

            DictionaryStringObject> ormobjMap = ((DictionaryStringObject>)ormObj) ;

            DictionaryStringObject> fldMap = (DictionaryStringObject>)ormobjMap["fields"];

 

            System.Collections.Generic.Listobject> flds = new Listobject>();

            System.Collections.Generic.Listobject> fld_vals = new Listobject>();

            foreach (var item in fldMap)

            {

                flds.Add(item.Key);

                fld_vals.Add("'"+ item.Value+"'");

                Console.WriteLine(item.Key + item.Value);

            }

 

            String fld_s = ListX.join(",", flds);

            String v_s = ListX.join(",", fld_vals);

            String sql = " insert into " + ormobjMap["table"] + "(@flds)values(@vs)";

            sql = sql.Replace("@flds", fld_s); sql = sql.Replace("@vs", v_s);

            return sql;

        }

    }

 

 

 

    public class DbUtil

    {

 

        public Object exec(string sql)

        {

            MySqlConnection mysqlcon = this.getmysqlcon();

            mysqlcon.Open();

            MySqlCommand mysqlcom = new MySqlCommand(sql, mysqlcon);

            int r = mysqlcom.ExecuteNonQuery();

            mysqlcom.Dispose();

            mysqlcon.Close();

            mysqlcon.Dispose();

            return r;

        }

 

 

------ioc

 

 

          facMap.Add("dbx", () =>

          {

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

해결 방법: 조직에서 PIN 변경을 요구합니다. 해결 방법: 조직에서 PIN 변경을 요구합니다. Oct 04, 2023 pm 05:45 PM

해결 방법: 조직에서 PIN 변경을 요구합니다.

Windows 11에서 창 테두리 설정을 조정하는 방법: 색상 및 크기 변경 Windows 11에서 창 테두리 설정을 조정하는 방법: 색상 및 크기 변경 Sep 22, 2023 am 11:37 AM

Windows 11에서 창 테두리 설정을 조정하는 방법: 색상 및 크기 변경

Windows 11에서 작업 표시줄 축소판 미리 보기를 활성화 또는 비활성화하는 방법 Windows 11에서 작업 표시줄 축소판 미리 보기를 활성화 또는 비활성화하는 방법 Sep 15, 2023 pm 03:57 PM

Windows 11에서 작업 표시줄 축소판 미리 보기를 활성화 또는 비활성화하는 방법

Windows 11에서 제목 표시줄 색상을 변경하는 방법은 무엇입니까? Windows 11에서 제목 표시줄 색상을 변경하는 방법은 무엇입니까? Sep 14, 2023 pm 03:33 PM

Windows 11에서 제목 표시줄 색상을 변경하는 방법은 무엇입니까?

Windows 11/10 복구의 OOBELANGUAGE 오류 문제 Windows 11/10 복구의 OOBELANGUAGE 오류 문제 Jul 16, 2023 pm 03:29 PM

Windows 11/10 복구의 OOBELANGUAGE 오류 문제

Windows 11의 디스플레이 크기 조정 가이드 Windows 11의 디스플레이 크기 조정 가이드 Sep 19, 2023 pm 06:45 PM

Windows 11의 디스플레이 크기 조정 가이드

Windows 11에서 밝기를 조정하는 10가지 방법 Windows 11에서 밝기를 조정하는 10가지 방법 Dec 18, 2023 pm 02:21 PM

Windows 11에서 밝기를 조정하는 10가지 방법

Safari에서 iPhone의 개인 브라우징 인증을 끄는 방법은 무엇입니까? Safari에서 iPhone의 개인 브라우징 인증을 끄는 방법은 무엇입니까? Nov 29, 2023 pm 11:21 PM

Safari에서 iPhone의 개인 브라우징 인증을 끄는 방법은 무엇입니까?

See all articles