2015-01-08 24 views
0

我在春天很新,我有以下疑問。在Web應用程序我有一個映射數據庫表中的下列實體類:我可以使用Spring將注有@Entity的模型類的實例注入到控制器中嗎?

@Entity 
@Table(name = "KM_PROJECT_INFO") 
public class KM_ProjectInfo implements Serializable { 

    @Id 
    @GeneratedValue 
    private Long idProjectInfo; 

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

    @Column(name = "technology") 
    private String technology; 

    @ManyToOne 
    @JoinColumn(name = "idCountry") 
    private KMCountry country; 

    @Column(name = "power") 
    private long power; 

    @Column(name = "cod") 
    private String cod; 

    @ManyToOne 
    @JoinColumn(name = "idProjectInfoStatus") 
    private KM_ProjectInfoStatus status; 

    @Column(name = "folderTech") 
    private long folderTech; 

    @Column(name = "folderProject") 
    private long folderProject; 

    // GETTER & SETTER 
} 

在視圖中存在,用戶可以插入前面的實體類的字段的值的形式。當用戶點擊這個表單的提交按鈕時,它會執行一個控制器的動作(在特定情況下,它是一個Struts 2動作控制器,但我認爲這並不重要)。

在此操作中,我必須檢索用戶插入到表單字段中的值,並使用這些值設置前一個實體類的匹配字段,然後我必須使用Hibernate將其存儲在數據庫中。

所以我的疑問是:以前的實體類使用@Entity註釋進行註釋。我可以簡單地將它注入我的控制器嗎?我可以注入一個以@Entity註釋的課程實例嗎?

TNX

+0

如果您正在瀏覽mvc模式,那麼它可能會打破該模式。 –

回答

1

你可以做到這一點」,不會因爲@Entity自動發生並不標誌着一類是一個Spring bean。您可以將其設爲Spring bean,但Spring框架將接管管理實體對象的生命週期,該對象應該是JPA框架的獨佔角色。以合理的方式開展這項工作將是一場可怕的鬥爭。

幸運的是,從你所描述的你不需要這樣做,只需創建你的實體的實例,用表單參數填充它並將對象傳遞給你的服務或DAO。

0

你只需要使用簡單的Java對象創建,以創建對象:

KM_ProjectInfo obj = new KM_ProjectInfo(); 

然後用setter方法來設置屬性,做數據庫操作。你不需要使用spring bean創建。

0

你不需要將它作爲spring bean注入到控制器中。

  • 只需創建一個實體實例。
  • 根據表單參數設置實體字段。
  • 堅持數據庫中的實體。
相關問題