首页 / 知识
关于orm:从对象定义生成数据库表
2023-04-13 07:15:00

Generating database tables from object definitions我知道,有几种(自动)方法可以创建数据访问层来操纵现有数据库(LINQ to SQL,Hibernate等)。但是我有点累了(我相信应该有一种更好的做事方式),例如: 从对象/实体定义生成数据库模式的方法怎么样?我似乎找不到像这样的工具的良好参考(我希望至少在某些框架中会有某种内置支持)。 如果可以,那将是完美的: 签出DataObjects.Net-旨在支持这种情况。仅代码,无其他。它的模式升级层可能是您所能找到的最有特色的层,它确实完全抽象了模式升级SQL。 观看产品视频-您不会注意到同步架构的任何额外操作。架构升级样本显示了此功能的预期用法。 当我们构建自己的框架的第一个版本(Inon Datamanager)时,我让它读取了预先存在的SQL表并从中自动生成Java对象。 当我来自Smalltalkish背景的同事构建了第二个版本时,他们从对象开始,然后自动生成表格。 实际上,直到我再次添加它之前,他们完全忘记了SQL部分。但是如今,我们只是在应用程序启动时运行触发器,该触发器遍历对象模型,检查表和所有正确的列是否存在,如果不存在则创建它们。很方便。 事实证明,这比您预期的要容易得多-如果您最喜欢的工具不支持类似的过程,则可以在几个小时内编写它-假设关系到对象的映射相对简单。 但问题是,这似乎取决于您是文化对象还是数据库人员-您可以将其中任何一个视为权威来源。 您描述的是GORM。它是Grails框架的一部分,旨在与Hibernate(将来可能是JPA)一起使用。当我第一次使用Grails时,它似乎倒退了。我对使用Rails样式的工作流程感到更满意,该工作流程包括制作表格并让框架从数据库架构生成支架。 GORM会为您持久保存域对象,以便您创建和更改对象,并管理数据库的创建/更新。现在,我已经习惯了,这更加有意义。很抱歉,如果您不想使用新的框架,但是它在1.1版的路线图上可以使GORM独立可用。 正如Jason所建议的那样,对象db可能是一个不错的选择。看一下db4objects。 我相信这是Microsofy实体框架试图解决的问题。尽管没有专门设计为"编译(数据库更改是自动完成的)",但它确实解决了处理对域模型的更改的问题,而无需极大地依赖基础数据模型。 您可能正在寻找对象数据库。 有点晚的答案,但是在这里: 我遇到了完全相同的问题,最终为它编写了自己的解决方案,但是仅使用.NET和SQL Server。它基本上会实现您描述的过程:
根据LGPL许可,包含数据库的库是免费的。 http://code.google.com/p/bsn-modulestore/ 是的,Django运行良好。 是的,它将根据您的数据模型定义生成SQL表(用python编写) 如果您更新结构,它不会总是更改现有表,您可能必须手动运行ALTER表 Ruby on Rails具有这些功能的更高级版本(Rails迁移),但是我不太喜欢该框架,我发现ruby和rails非常独特 我一直在研究一些"主要"框架,而Django似乎确实做到了我所说的。大概从这个截屏视频来看。 有人对此有何评论?它运作良好吗? 一些真正的大狗,例如ERwin Data Modeler,将成为DB的对象。您需要花大价钱才能负担得起该产品。 |
最新内容
相关内容
Python元类之通过元类实现数据库OR
Python元类之通过元类实现数据库ORM框架,数据,名称,信息,代码,主体,当中,字段,分析,一致,投入,ORM框架是什么如果是没有做过后端的小伙伴上来列举Python面向对象中带双下划线的
列举Python面向对象中带双下划线的特殊方法,信息,代码,培训,对象,属性,方法,实例,字符串,里边,内容,__new__:生成实例__init__:生成实例的属性_简述Python数据库三大范式?
简述Python数据库三大范式?,数据,设计,公司,信息,培训,数据库,字段,范式,订单,关系,python数据库的三大特性:实体:表属性:表中的数据(字段)关系Python面向对象的基本概念
Python面向对象的基本概念,概念,信息,位置,新增,培训,属性,鸟类,定义,对象,方法,python使用类(class)和对象(object),进行面向对象(object-oriPython 条件对象
Python 条件对象,状态,培训,对象,条件,线程,方法,底层,发生,场景,典型,条件对象总是与某种类型的锁对象相关联,锁对象可以通过传入获得,或者在Python 事件对象
Python 事件对象,通信,培训,线程,事件,对象,内部,标志,信号,机制,以上,一个线程发出事件信号,其他线程等待该信号,这是最简单的线程之间通信机Python之什么是面向对象?
Python之什么是面向对象?,设计,流程,代码,个体,大唐,对比,培训,模子,上帝,对象,OOP(ObjectOrientedPrograming)编程是利用“类”和“对象”来python如何导入txt数据库?
python如何导入txt数据库?,数据,时间,代码,培训,数据库,函数,读数,数据表,以上,方法,python将TXT数据导入数据库的方法代码如下:#!/usr/bin/pyPython如何创建对象,有哪些方法
Python如何创建对象,有哪些方法,培训,对象,方法,内容,函数,属性,所在,以上,以下,功能,以下介绍Python创建对象的9种方法。classPoint:def__inipython怎么创建mysql数据库连接
python怎么创建mysql数据库连接,项目,数据,培训,参数,结果,数据库,方法,语句,数据库连接,接口,python数据库接口支持非常多的数据库,你可以选python类对象和实例对象是一样的吗
python类对象和实例对象是一样的吗,地址,概念,下来,数据,培训,实例,对象,方法,属性,变量,python面向对象最重要的概念就是类(Class)和实例(Inpython中类对象和方法的区别是什么
python中类对象和方法的区别是什么,地址,数据,培训,对象,函数,类型,字符串,方法,表示,身份,python使用对象模型来存储数据,也就是说构造任何类