import javax.persistence.EntityManager;

本文介绍了一个为 Oracle Magazine 2014 年 3/4 月刊 REST 文章准备的示例源代码。该示例使用 EJB 单例会话 Bean 作为 REST 服务的 POJO Bean 的会话外观。提供了对 Employees 和 Departments 实体的操作,包括持久化、合并、查找及删除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package oramag.sample.one.two.fourteen.restejb;


import java.util.List;


import javax.annotation.Resource;


import javax.ejb.SessionContext;
import javax.ejb.Singleton;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;


import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;


import oramag.sample.one.two.fourteen.restejb.model.Departments;
import oramag.sample.one.two.fourteen.restejb.model.Employees;


/**
 * Rest sample source for JDeveloper 12c REST article in Oracle Magazine Mar/Apr 2014
 *
 * EJB session facade referenced from the POJO bean exposed as a REST Services. The EJB bean is
 * configured as a Singleton.
 *
 * @author Frank Nimphius 2014
 */


@Singleton (name = "OraMagSessionBean", mappedName = "OraMagSessionBean")
public class OraMagSessionBean implements OraMagSessionBeanLocal {
    @Resource
    SessionContext sessionContext;
    
    @PersistenceContext(unitName = "Model")
    private EntityManager em;


    public OraMagSessionBean() {
    }


    public <T> T persistEntity(T entity) {
        em.persist(entity);
        return entity;
    }


    public <T> T mergeEntity(T entity) {
        return em.merge(entity);
    }


    public Employees persistEmployees(Employees employees) {
        em.persist(employees);
        return employees;
    }


    public Employees mergeEmployees(Employees employees) {
        return em.merge(employees);
    }
    
    public Employees findEmployeeById(Integer employeeId){
        return (Employees) em.find(Employees.class,employeeId);
    }


    public void removeEmployees(Employees employees) {
        employees = em.find(Employees.class, employees.getEmployeeId());
        em.remove(employees);
    }


    /** <code>select o from Employees o</code> */
    @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
    public List<Employees> getEmployeesFindAll() {
        return em.createNamedQuery("Employees.findAll", Employees.class).getResultList();
    }


    public Departments persistDepartments(Departments departments) {
        em.persist(departments);
        return departments;
    }


    public Departments mergeDepartments(Departments departments) {
        return em.merge(departments);
    }


    public void removeDepartments(Departments departments) {
        departments = em.find(Departments.class, departments.getDepartmentId());
        em.remove(departments);
    }


    /** <code>select o from Departments o</code> */
    @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
    public List<Departments> getDepartmentsFindAll() {
        return em.createNamedQuery("Departments.findAll", Departments.class).getResultList();
    }
    
    public Departments findDepartmentById(Integer departmentId){
        return (Departments) em.find(Departments.class,departmentId);
    }
}
以下是一个使用 Quarkus 和 Hibernate ORM 的示例,演示如何在固定数据源上使用 EntityManager 执行只读 HQL 查询: 首先,创建一个 Entity 类来映射数据库中的表: ```java @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "name") private String name; @Column(name = "email") private String email; // getters and setters } ``` 接下来,在应用程序中创建一个 REST 资源类,定义一个 GET 端点,该端点使用 EntityManager 执行只读 HQL 查询: ```java @Path("/users") @Produces(MediaType.APPLICATION_JSON) public class UserResource { @PersistenceContext(unitName = "myUnit") EntityManager em; @GET @Path("/search") public List<User> searchUsers(@QueryParam("name") String name) { TypedQuery<User> query = em.createQuery("SELECT u FROM User u WHERE u.name = :name", User.class); query.setParameter("name", name); return query.getResultList(); } } ``` 在这个示例中,我们注入了一个名为 `myUnit` 的 EntityManager,该管理器的数据源已经在应用程序配置中进行了配置。然后,在 `searchUsers` 方法中,我们使用 `createQuery` 方法创建了一个只读的 TypedQuery 对象,该对象执行了一个简单的 HQL 查询,它查找具有给定名称的所有用户。 最后,我们将查询参数设置为 `name` 并返回结果列表。 请注意,由于我们没有使用事务,因此 EntityManager 会自动创建和释放数据库连接。 希望这个示例可以帮助你开始使用 Quarkus 和 Hibernate ORM 在固定数据源上执行只读 HQL 查询。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值