听说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

最低0.47元/天 解锁文章
4915

被折叠的 条评论
为什么被折叠?



