重新测试deepseek Jakarta EE 10编程能力

听说deepseek做了一个小更新,我重新测试了一下Jakarta EE 10编程能力;有点进步,遗漏的功能比以前少了。

采用Jakarta EE 10 编写员工信息表维护表,包括员工查询与搜索、员工列表、新增员工、删除员工,修改员工,要求用户界面主要采用JAVA SERVER FACE,如果用户界面采用JAVA SERVER FACE实现不了,增加JS完成实现不了的功能,业务逻辑采用EJB,数据库访问采用JPA. 员工信息表包含 员工编号,姓名,部门,手机号码。

下面是一个完整的Jakarta EE 10员工信息管理系统实现方案,严格遵循您的要求:JSF作为主要UI框架、EJB处理业务逻辑、JPA进行数据访问,并在需要时使用JavaScript增强功能。

解决方案架构

复制

下载

src
├── main
│   ├── java
│   │   └── com
│   │       └── example
│   │           ├── ejb
│   │           │   └── EmployeeService.java       # EJB服务
│   │           ├── entity
│   │           │   └── Employee.java              # JPA实体
│   │           ├── managed
│   │           │   └── EmployeeBean.java          # JSF托管Bean
│   │           └── util
│   │               └── JsfUtil.java               # JSF工具类
│   ├── resources
│   │   └── META-INF
│   │       └── persistence.xml                    # JPA配置
│   └── webapp
│       ├── WEB-INF
│       │   └── templates
│       │       └── template.xhtml                 # 页面模板
│       ├── employee
│       │   ├── list.xhtml                         # 员工列表
│       │   ├── edit.xhtml                         # 编辑页面
│       │   └── search.xhtml                       # 搜索页面
│       └── resources
│           └── js
│               └── main.js                        # JavaScript增强

1. JPA实体类 (Employee.java)

java

复制

下载

package com.example.entity;

import jakarta.persistence.*;
import java.io.Serializable;

@Entity
@Table(name = "employee")
@NamedQuery(name = "Employee.findAll", query = "SELECT e FROM Employee e")
public class Employee implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "emp_number", unique = true, nullable = false)
    private String employeeNumber;

    @Column(nullable = false)
    private String name;

    private String department;

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

    // 省略getter/setter
}

2. EJB服务层 (EmployeeService.java)

java

复制

下载

package com.example.ejb;

import com.example.entity.Employee;
import jakarta.ejb.Stateless;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.persistence.TypedQuery;
import java.util.List;

@Stateless
public class EmployeeService {

    @PersistenceContext(unitName = "employeePU")
    private EntityManager em;

    public void create(Employee employee) {
        em.persist(employee);
    }

    public void update(Employee employee) {
        em.merge(employee);
    }

    public void delete(Long id) {
        Employee emp = em.find(Employee.class, id);
        if (emp != null) {
            em.remove(emp);
        }
    }

    public List<Employee> findAll() {
        return em.createNamedQuery("Employee.findAll", Employee.class).getResultList();
    }

    public List<Employee> search(String keyword) {
        String jpql = "SELECT e FROM Employee e WHERE " +
                      "LOWER(e.name) LIKE :keyword OR " +
                      "LOWER(e.department) LIKE :keyword OR " +
                      "e.phoneNumber LIKE :keyword OR " +
                      "e.employeeNumber LIKE :keyword";
        
        return em.createQuery(jpql, Employee.class)
                .setParameter("keyword", "%" + keyword.toLowerCase() + "%")
                .getResultList();
    }

    public Em
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值