首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java EE 5 平台持久化開發實戰:NetBeans 5.5 + EJB 3 + JSF 快速入門

     編輯:Java 相關知識

開發環境準備

  • NetBeans 5.5
  • Sun Java System Application Server 9 (GlassFish 前身)
  • JDK 5.0

專案建立步驟

  1. File → New Project → Web → Web Application
  2. 專案名:ZooApp
  3. Server:Sun Java System Application Server
  4. J2EE Version:Java EE 5
  5. 勾選 JavaServer Faces 框架支援

持久化單元配置

右鍵專案 → New → Persistence → Persistence Unit

  • Provider:TopLink (預設)
  • Data Source:jdbc/sample (內建 Java DB)
  • Transaction Type:JTA (勾選 Java Transaction API)
  • Table Generation Strategy:Create (部署時自動建表)

實體 Bean 開發

Animal 實體

@Entity
public class Animal implements Serializable {
    @Id @GeneratedValue
    private Long id;
    
    @Column(name="animalName")  // 自定義欄位名
    private String name;
    private String kind;
    private String weight;
    
    @ManyToOne
    private Pavilion pavilion;  // 多對一關聯
    
    // Getter/Setter (透過 Refactor → Encapsulate Fields 自動產生)
}

Pavilion 實體

@Entity
public class Pavilion implements Serializable {
    @Id @GeneratedValue
    private Long id;
    
    @Column(name="pavilionName")
    private String name;
    private String address;
    
    @OneToMany(mappedBy="pavilion")  // 一對多雙向關聯
    private Collection<Animal> animals;
    
    // equals/hashCode 必須正確實作 (JSF 下拉選單需求)
    public int hashCode() { return id != null ? id.hashCode() : 0; }
    public boolean equals(Object obj) {
        if (!(obj instanceof Pavilion)) return false;
        Pavilion other = (Pavilion) obj;
        return id != null && id.equals(other.id);
    }
}

JSF 頁面自動生成

  1. 右鍵專案 → New → JSF Pages from Entity Classes
  2. 選擇 Add All 包含兩個實體
  3. Package:entity (生成 Managed Bean、Converter、Controller)
  4. Finish → 自動生成 CRUD 頁面 (List.xhtml, Edit.xhtml, Create.xhtml)

關鍵技術細節解析

技術點說明
@Column(name="...")覆寫預設欄位命名策略 (屬性名 → 欄位名)
@ManyToOne / @OneToMany雙向關聯必須指定 mappedBy 指向擁有端
Table Generation: Create僅適用開發階段,生產環境改用 Update 或手動 DDL
TopLink ProviderGlassFish 內建 JPA 實作,後續版本改為 EclipseLink
jdbc/sampleApplication Server 內建 Java DB (Derby) 連線池

執行與驗證

# 1. 啟動資料庫
Tools → Java DB Database → Start Java DB Server

# 2. 執行專案
右鍵專案 → Run Project

# 3. 瀏覽器自動開啟
https://localhost:8080/ZooApp/  → 顯示 Animal/Pavilion 管理介面

生成功能驗證清單

  • [ ] Animal 列表頁:分頁、排序、刪除確認
  • [ ] 新增 Animal:下拉選單選 Pavilion、欄位驗證
  • [ ] 編輯 Animal:預載資料、關聯更新
  • [ ] Pavilion CRUD:獨立管理、級聯刪除保護
  • [ ] 關聯導航:從 Pavilion 進入 Animal 列表

常見問題排查

問題原因解決
部署失敗:Table already existsTable Generation: Create 重複部署清除資料庫或改用 Update 策略
下拉選單顯示 Object@hashPavilion 缺少 toString()/equals/hashCode實作 equals/hashCode 基於 ID
LazyInitializationExceptionJSF 頁面存取 LAZY 關聯但 Session 已關閉使用 <f:view> 延長 Session 或 EAGER 載入
資料庫鎖死Derby 單一連線池並發衝突調整連線池大小、使用獨立資料庫

進階擴充方向

  1. 驗證框架整合:Bean Validation (JSR 303) + Hibernate Validator
  2. 安全性:JAAS / Spring Security 整合角色權限控制
  3. AJAX 增強:ICEfaces / PrimeFaces 元件庫替換標準 JSF
  4. 報表匯出:JasperReports / Apache POI 整合
  5. 單元測試:Embedded EJB Container (EJB 3.1) 測試業務邏輯

透過 NetBeans 強大的代碼生成與視覺化工具,配合 Java EE 5 標準規格 (EJB 3, JPA, JSF),開發者可在數分鐘內建立功能完整的企業級 CRUD 應用原型,大幅縮短開發週期。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved