📜  EJB-持久性(1)

📅  最后修改于: 2023-12-03 15:00:34.962000             🧑  作者: Mango

EJB-持久性

概述

EJB是Java Enterprise Edition平台中的一种分布式应用程序技术,它可以在分布式环境下建立可重复使用,基于组件的应用程序。EJB持久化是通过EJB技术实现数据持久化的方式,它可以将应用程序所需要的数据保存到数据库中。

EJB持久化技术

EJB持久化技术主要指的是JPA(Java Persistence API),它是Java EE技术中提供的一项用于对数据库进行持久化操作的标准接口。JPA为Java应用提供了一组标准并符合规范的API,支持数据对象的映射,上下文管理和查询语言等操作。

JPA实现方式

在EJB持久化中,JPA可以通过以下方式进行实现:

  • 使用JPA实现ORM(Object-relational mapping)映射,将Java中的实体类对象映射到数据库中的表中。
  • 使用JPA提供的EntityManager接口来实现对数据库的增删改查操作。
  • 使用JPA提供的Criteria API构造动态查询,便于在开发过程中对查询条件的修改。
  • 使用JPA提供的JPQL(Java Persistence Query Language)通过查询语句查询数据库。
JPA实体类

在EJB持久化中,实体类是指用于表示数据库表结构的Java类,能够提供持久化操作的对象。在JPA中,实体类需要使用@Entity注解标注,并且需要定义一个唯一标识符@Id,如下所示:

@Entity
public class User{
    @Id
    private Long id;
    private String name;
    //其他字段及构造方法和get/set方法
    …
}
JPA EntityManager

在EJB持久化中,JPA提供的EntityManager是实现数据库持久化操作的核心接口。通过EntityManager可以与数据库进行交互,进行数据库操作,如下所示:

@Stateless
public class UserService{
    @PersistenceContext(unitName = "user-unit")
    private EntityManager entityManager;
    public void addUser(User user){
        entityManager.persist(user);//增
    }
    public void updateUser(User user){
        entityManager.merge(user);//改
    }
    public void deleteUser(User user){
        entityManager.remove(user);//删
    }
    public User findUser(Long id){
        return entityManager.find(User.class,id);//查
    }
    //其他操作...
}
JPA查询语言JPQL

在EJB持久化中,JPQL是一种类似于SQL的查询语言,可以通过其提供的各种查询关键字实现多种不同的查询操作。JPQL支持多表关联查询,分页查询,子查询等功能,如下所示:

@Stateless
public class UserService{
    @PersistenceContext(unitName = "user-unit")
    private EntityManager entityManager;
    public List<User> findByAge(int minAge,int maxAge){
        return entityManager.createQuery("SELECT u FROM User u WHERE u.age>=:minAge AND u.age<=:maxAge",User.class)
                .setParameter("minAge",minAge)
                .setParameter("maxAge",maxAge)
                .getResultList();
    }
    //其他查询方法...
}
总结

EJB持久化即使用EJB技术实现通过JPA的ORM映射,提供的EntityManager接口与JPQL查询语言等方式对数据库进行持久化操作。它可以通过注解来定义实体类对象,使用EntityManager进行数据库操作,并且可以通过JPQL等方式实现复杂的数据查询。