You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Quarkus中仅引入javax.persistence而不配置ORM可行吗?

解决方法

1. 仅引入JPA API依赖

在你的Maven库的pom.xml中,只添加JPA API的依赖,无需引入任何ORM实现(如Hibernate、EclipseLink)。根据JPA版本选择对应依赖:

针对Jakarta Persistence(JPA 3.0+)

<dependency>
    <groupId>jakarta.persistence</groupId>
    <artifactId>jakarta.persistence-api</artifactId>
    <version>3.1.0</version>
    <scope>compile</scope>
</dependency>

针对传统JPA(2.x版本,基于javax)

<dependency>
    <groupId>javax.persistence</groupId>
    <artifactId>javax.persistence-api</artifactId>
    <version>2.2</version>
    <scope>compile</scope>
</dependency>

compile范围仅用于让实体类编译通过(需要用到@Entity、@Id等JPA注解),具体ORM实现由依赖你这个库的项目自行引入和配置。

2. 编写标准JPA实体类

在库中编写实体类时,只使用JPA API提供的注解,避免引入任何ORM专属的类或注解:

import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String username;
    private String email;

    // JPA要求的无参构造器
    public User() {}

    public User(String username, String email) {
        this.username = username;
        this.email = email;
    }

    // Getter、Setter方法
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    public String getUsername() { return username; }
    public void setUsername(String username) { this.username = username; }
    public String getEmail() { return email; }
    public void setEmail(String email) { this.email = email; }
}

3. 排除意外引入的ORM依赖

如果你的库有其他依赖传递引入了ORM实现,通过<exclusions>标签排除:

<dependency>
    <groupId>com.example</groupId>
    <artifactId>some-dependent-lib</artifactId>
    <version>1.0.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>

4. 依赖项目自行处理ORM配置

其他项目引入你的库后,自行添加所需的ORM实现并完成配置。比如Spring Boot项目可以这样做:

添加Hibernate及数据库依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

在application.properties中配置JPA

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update

这样依赖项目就能正常使用你库中的实体类进行数据访问,而你的库完全不需要参与ORM的实现与配置。


内容的提问来源于stack exchange,提问作者Fernando

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 04:45:32