Skip to content

ORM 使用指南 ​

ORM(对象关系映射)是一种通过面向对象的方式操作数据库的技术,它通过将数据库中的表映射为编程语言中的对象,简化了数据库操作,减少了直接编写 SQL 语句的需求。在 PostgreSQL 中,常见的 ORM 工具有 Sequelize、TypeORM(Node.js)、SQLAlchemy(Python)等。以下是如何使用这些工具进行 PostgreSQL 操作的指南。

Node.js - Sequelize ORM ​

Sequelize 是一个基于 Promise 的 Node.js ORM,用于支持多种数据库,包括 PostgreSQL。以下是如何使用 Sequelize 与 PostgreSQL 进行交互的示例。

安装 Sequelize 和 pg 模块 ​

bash
npm install sequelize pg pg-hstore

配置 Sequelize 连接 ​

javascript
const { Sequelize, DataTypes } = require('sequelize');

// 创建 Sequelize 实例并连接 PostgreSQL 数据库
const sequelize = new Sequelize('postgres://your_user:your_password@localhost:5432/your_database');

// 测试连接
sequelize.authenticate()
  .then(() ={
    console.log('Connection has been established successfully.');
  })
  .catch(err ={
    console.error('Unable to connect to the database:', err);
  });

定义模型 ​

javascript
// 定义一个 User 模型
const User = sequelize.define('User', {
  username: {
    type: DataTypes.STRING,
    allowNull: false
  },
  email: {
    type: DataTypes.STRING,
    allowNull: false,
    unique: true
  }
}, {
  tableName: 'users',  // 指定表名
  timestamps: false    // 不使用时间戳字段
});

// 同步模型并创建表
sequelize.sync()
  .then(() ={
    console.log('User table has been created.');
  });

操作数据库 ​

javascript
// 创建一个新用户
User.create({
  username: 'john_doe',
  email: '[email protected]'
})
  .then(user ={
    console.log('New user created:', user);
  })
  .catch(err ={
    console.error('Error creating user:', err);
  });

// 查询用户
User.findAll()
  .then(users ={
    console.log('All users:', users);
  })
  .catch(err ={
    console.error('Error fetching users:', err);
  });

Python - SQLAlchemy ORM ​

SQLAlchemy 是 Python 中最流行的 ORM 工具之一,支持 PostgreSQL 数据库。以下是如何使用 SQLAlchemy 操作 PostgreSQL 数据库的示例。

安装 SQLAlchemy 和 psycopg2 模块 ​

bash
pip install sqlalchemy psycopg2

配置 SQLAlchemy 连接 ​

python
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# 创建数据库引擎
engine = create_engine('postgresql://your_user:your_password@localhost:5432/your_database')

# 基类
Base = declarative_base()

# 创建 Session 类
Session = sessionmaker(bind=engine)
session = Session()

定义模型 ​

python
from sqlalchemy import Column, Integer, String

class User(Base):
    __tablename__ = 'users'  # 指定表名
    
    id = Column(Integer, primary_key=True)
    username = Column(String, nullable=False)
    email = Column(String, unique=True, nullable=False)

# 创建表
Base.metadata.create_all(engine)

操作数据库 ​

python
# 创建用户
new_user = User(username='john_doe', email='[email protected]')
session.add(new_user)
session.commit()

# 查询用户
users = session.query(User).all()
for user in users:
    print(user.username, user.email)

Java - Hibernate ORM ​

Hibernate 是 Java 中常用的 ORM 工具,支持 PostgreSQL 数据库。以下是如何使用 Hibernate 操作 PostgreSQL 数据库的示例。

配置 Hibernate 连接 ​

首先,在 pom.xml 文件中添加 Hibernate 和 PostgreSQL 驱动的依赖:

xml
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.4.32.Final</version>
</dependency>
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.2.5</version>
</dependency>

配置 Hibernate 配置文件(hibernate.cfg.xml) ​

xml
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
        <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
        <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/your_database</property>
        <property name="hibernate.connection.username">your_user</property>
        <property name="hibernate.connection.password">your_password</property>
        <property name="hibernate.hbm2ddl.auto">update</property>
        <property name="hibernate.show_sql">true</property>
    </session-factory>
</hibernate-configuration>

定义实体类 ​

java
import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class User {
    
    @Id
    private int id;
    private String username;
    private String email;

    // getters and setters
}

操作数据库 ​

java
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class Main {
    public static void main(String[] args) {
        // 创建 SessionFactory
        SessionFactory factory = new Configuration().configure("hibernate.cfg.xml").addAnnotatedClass(User.class).buildSessionFactory();

        // 获取 Session
        Session session = factory.getCurrentSession();

        try {
            // 创建新用户
            User newUser = new User();
            newUser.setUsername("john_doe");
            newUser.setEmail("[email protected]");

            // 开始事务
            session.beginTransaction();

            // 保存用户
            session.save(newUser);

            // 提交事务
            session.getTransaction().commit();
        } finally {
            factory.close();
        }
    }
}

小结 ​

在本章节中,我们展示了如何在 Node.js、Python 和 Java 中使用 ORM 工具(Sequelize、SQLAlchemy、Hibernate)与 PostgreSQL 数据库进行交互。通过 ORM,开发者能够更加方便地执行数据库操作,而不需要编写大量的 SQL 语句,提升了开发效率,并使代码更加清晰和易于维护。

ORM 使用指南 ​

ORM(对象关系映射)是一种通过面向对象的方式操作数据库的技术,它通过将数据库中的表映射为编程语言中的对象,简化了数据库操作,减少了直接编写 SQL 语句的需求。在 PostgreSQL 中,常见的 ORM 工具有 Sequelize、TypeORM(Node.js)、SQLAlchemy(Python)等。以下是如何使用这些工具进行 PostgreSQL 操作的指南。

Node.js - Sequelize ORM ​

Sequelize 是一个基于 Promise 的 Node.js ORM,用于支持多种数据库,包括 PostgreSQL。以下是如何使用 Sequelize 与 PostgreSQL 进行交互的示例。

安装 Sequelize 和 pg 模块 ​

bash
npm install sequelize pg pg-hstore

配置 Sequelize 连接 ​

javascript
const { Sequelize, DataTypes } = require('sequelize');

// 创建 Sequelize 实例并连接 PostgreSQL 数据库
const sequelize = new Sequelize('postgres://your_user:your_password@localhost:5432/your_database');

// 测试连接
sequelize.authenticate()
  .then(() ={
    console.log('Connection has been established successfully.');
  })
  .catch(err ={
    console.error('Unable to connect to the database:', err);
  });

定义模型 ​

javascript
// 定义一个 User 模型
const User = sequelize.define('User', {
  username: {
    type: DataTypes.STRING,
    allowNull: false
  },
  email: {
    type: DataTypes.STRING,
    allowNull: false,
    unique: true
  }
}, {
  tableName: 'users',  // 指定表名
  timestamps: false    // 不使用时间戳字段
});

// 同步模型并创建表
sequelize.sync()
  .then(() ={
    console.log('User table has been created.');
  });

操作数据库 ​

javascript
// 创建一个新用户
User.create({
  username: 'john_doe',
  email: '[email protected]'
})
  .then(user ={
    console.log('New user created:', user);
  })
  .catch(err ={
    console.error('Error creating user:', err);
  });

// 查询用户
User.findAll()
  .then(users ={
    console.log('All users:', users);
  })
  .catch(err ={
    console.error('Error fetching users:', err);
  });

Python - SQLAlchemy ORM ​

SQLAlchemy 是 Python 中最流行的 ORM 工具之一,支持 PostgreSQL 数据库。以下是如何使用 SQLAlchemy 操作 PostgreSQL 数据库的示例。

安装 SQLAlchemy 和 psycopg2 模块 ​

bash
pip install sqlalchemy psycopg2

配置 SQLAlchemy 连接 ​

python
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# 创建数据库引擎
engine = create_engine('postgresql://your_user:your_password@localhost:5432/your_database')

# 基类
Base = declarative_base()

# 创建 Session 类
Session = sessionmaker(bind=engine)
session = Session()

定义模型 ​

python
from sqlalchemy import Column, Integer, String

class User(Base):
    __tablename__ = 'users'  # 指定表名
    
    id = Column(Integer, primary_key=True)
    username = Column(String, nullable=False)
    email = Column(String, unique=True, nullable=False)

# 创建表
Base.metadata.create_all(engine)

操作数据库 ​

python
# 创建用户
new_user = User(username='john_doe', email='[email protected]')
session.add(new_user)
session.commit()

# 查询用户
users = session.query(User).all()
for user in users:
    print(user.username, user.email)

Java - Hibernate ORM ​

Hibernate 是 Java 中常用的 ORM 工具,支持 PostgreSQL 数据库。以下是如何使用 Hibernate 操作 PostgreSQL 数据库的示例。

配置 Hibernate 连接 ​

首先,在 pom.xml 文件中添加 Hibernate 和 PostgreSQL 驱动的依赖:

xml
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.4.32.Final</version>
</dependency>
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.2.5</version>
</dependency>

配置 Hibernate 配置文件(hibernate.cfg.xml) ​

xml
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
        <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
        <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/your_database</property>
        <property name="hibernate.connection.username">your_user</property>
        <property name="hibernate.connection.password">your_password</property>
        <property name="hibernate.hbm2ddl.auto">update</property>
        <property name="hibernate.show_sql">true</property>
    </session-factory>
</hibernate-configuration>

定义实体类 ​

java
import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class User {
    
    @Id
    private int id;
    private String username;
    private String email;

    // getters and setters
}

操作数据库 ​

java
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class Main {
    public static void main(String[] args) {
        // 创建 SessionFactory
        SessionFactory factory = new Configuration().configure("hibernate.cfg.xml").addAnnotatedClass(User.class).buildSessionFactory();

        // 获取 Session
        Session session = factory.getCurrentSession();

        try {
            // 创建新用户
            User newUser = new User();
            newUser.setUsername("john_doe");
            newUser.setEmail("[email protected]");

            // 开始事务
            session.beginTransaction();

            // 保存用户
            session.save(newUser);

            // 提交事务
            session.getTransaction().commit();
        } finally {
            factory.close();
        }
    }
}

小结 ​

在本章节中,我们展示了如何在 Node.js、Python 和 Java 中使用 ORM 工具(Sequelize、SQLAlchemy、Hibernate)与 PostgreSQL 数据库进行交互。通过 ORM,开发者能够更加方便地执行数据库操作,而不需要编写大量的 SQL 语句,提升了开发效率,并使代码更加清晰和易于维护。

Released under the MIT License.