ORM框架与数据库交互

---

title: ORM框架与数据库交互  
date: 2024/12/22  
updated: 2024/12/22  
author: cmdragon

excerpt:  
对象关系映射(ORM)框架是连接数据库与编程语言的桥梁,它极大地简化了两者之间的交互。通过ORM,开发者能够以面向对象的方式处理数据库操作,避免了直接编写SQL语句的繁琐,从而提升开发效率并降低出错率。

categories:

  - 前端开发

tags:

  - ORM
  - 对象关系映射
  - 数据库交互
  - CRUD操作
  - 开发效率
  - 常见框架
  - 数据操作

---

![image](https://pic.it1024doc.com/cnblogs/202412/c6d21609959dc7394250561e0cc22836.png)  
![image](https://pic.it1024doc.com/cnblogs/202412/7abb818bcd336314575591c0fc4e87e5.png)

对象关系映射(ORM)框架是一种强大的技术,它通过将数据库表映射成编程语言中的对象,简化了数据库操作。使用ORM,开发者可以以面向对象的方式进行数据访问,自动处理SQL查询和数据映射。

## 一、ORM的基本概念

ORM(Object-Relational Mapping)是一种程序设计技术,它通过将数据库表映射为编程语言中的对象,来简化数据库操作。ORM允许开发者以对象的方式进行数据访问,自动处理SQL查询和数据映射。

### 1.1 ORM的优势

- **减少SQL代码**:开发者不需要直接编写大量的SQL查询代码,能够以对象的形式进行数据库操作。
- **提高开发效率**:ORM框架通常提供直观的API和查询功能,加快开发速度,减少手动操作的错误。
- **跨数据库兼容性**:很多ORM框架支持多种数据库类型,允许应用程序在不同的数据库系统之间轻松迁移。
- **更好的数据抽象**:通过对象化的方式操作数据,可以提高代码的可读性和可维护性。

## 二、常见的ORM框架

以下是一些广泛使用的ORM框架,它们在不同编程语言中具备良好的支持:

### 2.1 在Python中使用SQLAlchemy

SQLAlchemy是一个在Python中非常流行的ORM框架,提供强大的功能和灵活性。

#### 创建模型

```python
from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

Base = declarative_base()

class Customer(Base):
    __tablename__ = 'customers'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    email = Column(String)

# 数据库连接
engine = create_engine('mysql+pymysql://username:password@localhost/my_database')
Base.metadata.create_all(engine)

Session = sessionmaker(bind=engine)
session = Session()

# 添加新客户
new_customer = Customer(name='John Doe', email='john@example.com')
session.add(new_customer)
session.commit()

2.2 在Java中使用Hibernate

Hibernate是Java中最常用的ORM框架,提供强大的性能和灵活性。

创建实体类

import javax.persistence.*;

@Entity
@Table(name = "customers")
public class Customer {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name")
    private String name;

    @Column(name = "email")
    private String email;

    // getters and setters
}

配置Hibernate和保存数据

SessionFactory factory = new Configuration()
        .configure("hibernate.cfg.xml")
        .addAnnotatedClass(Customer.class)
        .buildSessionFactory();

Session session = factory.getCurrentSession();
session.beginTransaction();
Customer customer = new Customer();
customer.setName("Jane Doe");
customer.setEmail("jane@example.com");
session.save(customer);
session.getTransaction().commit();

2.3 在PHP中使用Doctrine

Doctrine是PHP中流行的ORM库,提供灵活和强大的数据库操作功能。

创建实体类

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="customers")
 */
class Customer {
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /** @ORM\Column(type="string") */
    private $name;

    /** @ORM\Column(type="string") */
    private $email;

    // Getters and Setters...
}

保存数据

```php
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;

// 设置配置
$config = Setup::createAnnotationMetadataConfiguration(array(DIR."/src"), true);
$entityManager = EntityManager::create($dbParams, $config);

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/4447.html

(0)
LomuLomu
上一篇 2024 年 12 月 27 日
下一篇 2024 年 12 月 27 日

相关推荐

  • 架构师启示录:知识模型、落地方法与思维模式PDF、EPUB免费下载

    适读人群 :资深程序员、初级架构师 从架构知识模型、架构落地方法、架构思维模式三大维度介绍架构师的能力模型,带你穿越“认知迷雾” 电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍 点击原文去下载 书籍信息 作者: 灵犀出版社: 机械工业出版社出版年: 2024-3页数: 212装帧: 平装丛书: 架构师书库ISBN: 97871117…

    2025 年 1 月 11 日
    53900
  • 【创新毕设】基于SpringBoot的校园二手交易系统设计与实现(附源码)支持多语言开发

    目录架构 研究背景与意义国内外研究综述论文框架说明系统可行性论证功能需求解析数据库设计方案核心功能实现系统测试方案 研究背景 在数字经济高速发展的当下,校园内闲置物品流转需求日益增长。传统交易模式存在信息不对称、交易效率低下等问题。本系统采用SpringBoot框架构建,通过线上平台实现二手物品的高效流通,既促进资源循环利用,又能培养学生环保意识。系统支持J…

    未分类 2025 年 5 月 19 日
    1.0K00
  • Java难绷知识02——抽象类中只能有或者必须有抽象方法吗以及有关抽象类的细节探讨

    Java难绷知识02——抽象类中只能有或者必须有抽象方法吗以及有关抽象类的细节探讨 标题长的像轻小说 首先回答标题抛出的问题——False 显然,有抽象方法的类是抽象类,但是,抽象类中只能有或者必须有抽象方法吗? 抽象类可以包含抽象方法,也可以包含具体方法 如果一个类包含至少一个抽象方法,用abstract关键字修饰,那么这个类必须被声明为抽象类。 抽象类除…

    未分类 2024 年 12 月 31 日
    49900
  • Java HttpClient 实现 POST 请求参数传递的两种方案

    在 Java 的 HttpClient 组件中,开发者可以通过两种主流方式实现 POST 请求的参数传递:1. 请求体直接传输(推荐用于 RPC 交互,支持结构化数据格式)2. 表单式参数提交(模拟传统网页表单的键值对传输机制)针对 RPC 场景下的 POST 请求参数传递需求,以下将详细解析这两种实现方案,并附上完整的代码实例。 方案一:请求体 JSON …

    未分类 2025 年 5 月 12 日
    40300
  • 交易系统:应用层、领域层分层架构设计

    大家好,我是汤师爷~ 线上线下交易系统的应用架构包括终端、应用层、领域层和关联系统。 应用层能力 应用层定义软件的应用功能,负责接收用户请求、协调领域层执行任务并返回结果。主要包括以下模块: 1)C端服务模块 为消费者提供完整的交易链路功能,包括加购、下单、支付、结算、拆单、确认收货和退货退款等。 2)商家后台 为商家提供全面的订单管理功能,包括订单操作、搜…

    2024 年 12 月 31 日
    53500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信