ORM (Object relation mapping)
对象关系映射
10.1.1 什么是ORM
ORM并不是一种具体的产品,而是一类框架的总称,它概述了这类框架的基本特征:完成面向对象的程序设计语言到关系数据库的映射。基于ORM框架完成映射后,既可利用面向对象程序设计语言的简单易用性,又可利用关系数据库的技术优势。
面向对象程序设计语言与关系数据库发展不同步时,需要一种中间解决方案,ORM框架就是这样的解决方案。笔者认为,随着面向对象数据库的发展,其理论逐步完善,最终会取代关系数据库。只是这个过程不可一蹴而就,ORM框架在此期间内会蓬勃发展。但随着面向对象数据库的出现,ORM工具会自动消亡。
10.1.2 为什么需要ORM
在上一节已经基本回答了这个问题,面向对象的程序设计语言,代表了目前程序设计语言的主流和趋势,其具备非常多的优势,比如:
面向对象的建模、操作。
多态、继承。
摒弃难以理解的过程。
简单易用,易理解性。
但数据库的发展并未与程序设计语言同步,而且,关系数据库系统的某些优势,也是面向对象的语言目前无法解决的。比如:
大量数据操作查找、排序。
集合数据连接操作、映射。
数据库访问的并发、事务。
数据库的约束、隔离。
面对这种面向对象语言与关系数据库系统并存的局面,采用ORM就变成一种必然。
10.1.3 流行的ORM框架简介
目前ORM框架的产品非常多,除了各大著名公司、组织的产品外,甚至,其他一些小团队也都有推出自己的ORM框架。目前流行的ORM框架有如下这些产品。
大名鼎鼎的Hibernate:出自Gavin King的手笔,目前最流行的开源ORM框架,其灵巧的设计,优秀的性能,还有丰富的文档,都是其迅速风靡全球的重要因素。
传统的Entity EJB:Entity EJB实质上也是一种ORM技术,这是一种备受争议的组件技术,很多人说它非常优秀,也有人说它一钱不值。事实上,EJB为J2EE的蓬勃发展赢得了极高的声誉,就笔者的实际开发经验而言,EJB作为一种重量级、高花费的ORM技术上,具有不可比拟的优势。但由于其必须运行在EJB容器内,而且学习曲线陡峭,开发周期、成本相对较高,因而限制EJB的广泛使用。
IBATIS:Apache软件基金组织的子项目。与其称它是一种ORM框架,不如称它是一种 “Sql Mapping”框架。相对Hibernate的完全对象化封装,iBATIS更加灵活,但开发过程中开发人员需要完成的代码量更大,而且需要直接编写SQL语句。
Oracle的TopLink:作为一个遵循OTN协议的商业产品,TopLink在开发过程中可以自由下载和使用,但一旦作为商业产品使用,则需要收取费用。可能正是这一点,导致了TopLink的市场占有率。
OJB:Apache软件基金组织的子项目。开源的ORM框架,但由于开发文档不是太多,而且OJB的规范一直并不稳定,因此并未在开发者中赢得广泛的支持。
------以上来自互联网
下面举一个简单的例子,可能有些粗略,不过很简单,就没有怎么过多解释了。可以下载附件中的例子。
(1) 需要的包
有11个包,具体见附件
(2)
创建一个配置文件,这是hibernate的配置文件hibernate.cfg.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost/test</property>
<property name="connection.username">root</property>
<property name="connection.password">123</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">5</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">update</property>
<mapping resource="person.hbm.xml" />
</session-factory>
</hibernate-configuration>
创建一个javabean的类
package com;
public class Person {
private String name;
private int age;
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
创建一个person.hbm.xml,person是Javabean类的名字,首字母是小写。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--hibernate-mapping package 可以去掉,但要在class 要具体指向类 -->
<hibernate-mapping package="com">
<class name="Person" table="person">
<id name="id" column="id">
<generator class="identity" />
</id>
<!-- column 属性,如果数据库的列名和属性名相同就可以不写,不同反之 -->
<property name="age" />
<property name="name" column="name" />
</class>
</hibernate-mapping>
客户端调用
public static void main(String[] args) {
// 读取配置文件
Configuration configuration = new Configuration().configure();
// 创建sessionFactory
SessionFactory sessionFactory = configuration.buildSessionFactory();
// 打开Session
Session session = sessionFactory.openSession();
List list = session.createQuery("from Person").list();
System.out.println("Client.main()" + list);
}
分享到:
相关推荐
标题中的"cpp-SQLiteORM用于现代C++的SQLite ORM库只有header"表明这是一个关于C++的SQLite对象关系映射(ORM)库,且该库仅包含头文件,这意味着开发者无需链接任何库文件,只需包含相应的头文件即可使用。ORM是一...
HSWeb-Easy-ORM 是一个开源的简单对象关系映射(ORM)工具,设计初衷是为了简化动态表单的处理。ORM 工具的核心作用在于桥接数据库与编程语言,允许开发者通过面向对象的方式操作数据库,避免了直接编写 SQL 语句的...
SQLite3的ORM(Object-Relational Mapping)框架是一种在C++编程中将数据库关系模型与对象模型进行对应的技术。ORM框架使得开发者可以使用面向对象的方式来操作数据库,避免了直接编写SQL语句,提高了开发效率和代码...
ORM,全称Object-Relational Mapping,即对象关系映射,是一种编程技术,用于将关系数据库的数据模型映射到面向对象的软件应用中。在Java领域,Hibernate和MyBatis是两种广泛应用的ORM框架,它们极大地简化了数据库...
SqlSugar是一个在中国广泛使用的对象关系映射(ORM)框架,它极大地简化了.NET开发者与数据库交互的工作。ORM工具箱如SqlSugar,通过提供高级抽象,允许程序员以面向对象的方式处理数据库操作,而无需直接编写SQL...
对象关系映射(ORM) 对象关系映射(ORM)是一种概念性的、易于理解的模型化数据的方法,基于三个核心原则:简单、传达性、精确性。ORM 方法论提供了概念性的模型化数据的方法,基于数据模型创建正确标准化了的结构...
对象关系映射(ORM,Object-Relational Mapping)是一种编程技术,它旨在解决面向对象编程语言与关系数据库管理系统之间的不匹配问题。ORM 提供了一种方式,使得开发者可以用面向对象的方式来处理数据库,而无需直接...
Moon.Orm是一个专门为.NET开发者设计的轻量级ORM(对象关系映射)框架,它具有强大的功能和良好的可扩展性,能够支持多种不同的数据库系统,包括但不限于MySQL、SQL Server、Oracle、SQLite等。ORM框架的主要目标是...
在企业级应用开发中,数据持久化是必不可少的一部分,ORM(Object-Relational Mapping)框架则解决了对象与关系数据库之间的映射问题,使得开发更加便捷。Spring 提供了对多种 ORM 框架的集成支持,如 Hibernate、...
在Django框架中,ORM(Object-Relational Mapping)是一种将数据库操作转化为对象操作的技术,使得开发者无需直接编写SQL语句即可与数据库交互。在处理大量数据更新时,使用ORM进行批量更新是一种高效且安全的方法。...
**eform自定义表单**是北京方程软件推出的一款开源工作流解决方案,它专为程序员在工程开发中简化表单设计流程而设计。这款工具的出现,极大地提升了开发效率,减少了开发表单时的繁琐步骤,使得程序员可以更加专注...
### 关于 "org.springframework.orm.hibernate3.LocalSessionFactoryBean" 未找到问题的知识点解析 #### 一、问题背景 在开发基于Spring与Hibernate整合的应用时,可能会遇到“`org.springframework.orm.hibernate...
《K-ORM自定义ORM工具详解》 ORM(Object-Relational Mapping)是现代软件开发中的一种重要技术,它将数据库中的数据与程序中的对象进行映射,使得开发者可以使用面向对象的方式操作数据库,而无需关注底层SQL语句...
eform集成开发手册 eform集成开发手册是专门为eform开发人员设计的指南,旨在帮助开发者快速了解eform的集成开发流程和技术细节。该手册涵盖了eform集成开发的各个方面,包括系统文件说明、系统表结构说明、eform ...
在Java编程中,ORM(Object-Relational Mapping)是一种技术,它允许程序员使用面向对象的方式来操作数据库,将数据库中的表映射为Java对象,而无需编写大量的SQL语句。本主题探讨的是如何通过反射和注解来自定义ORM...
ORM映射,全称为Object-Relational Mapping,是对象关系映射,是现代Web应用程序中一个重要的技术。它提供了一种方式,将数据库中的表结构映射为编程语言中的对象,使得开发者可以使用面向对象的方式来操作数据库,...
ORM,全称Object-Relational Mapping,即对象关系映射,是一种编程技术,它允许开发者在关系数据库和面向对象的程序之间建立桥梁。在.NET框架中,ORM技术可以帮助程序员更高效地处理数据库操作,减少对SQL语句的直接...
Sharp-ORM 2007 实现数据库与C#类的无缝集成。 通过Sharp-ORM自动生成数据库到类的代码,采用三层体系结构设计,屏蔽具体的数据库产品。生成的类可通过自定义的业务逻辑进行扩展。 通过ORM让程序员彻底摆脱书写SQL的...
Python中的TortoiseORM是一个强大的、易于学习和使用的异步对象关系映射(ORM)库。ORM框架允许开发者使用高级的编程语言(如Python)来操作数据库,而无需直接编写SQL语句,大大简化了数据库操作。在Python的开发...