詳細(xì)概述Hibernate Struts區(qū)別
Hibernate還是比較常用的,于是我研究了一下Hibernate struts的關(guān)系,在這里拿出來和大家分享一下,希望對(duì)大家有用。
Hibernate struts是當(dāng)前市面上幾個(gè)***的開源的庫之一。它們很有效率,是程序員在開發(fā)Java企業(yè)應(yīng)用,挑選幾個(gè)競爭的庫的***。雖然它們經(jīng)常被一起應(yīng)用,但是Hibernate的設(shè)計(jì)目標(biāo)并不是和Struts一起使用,而Struts在Hibernate誕生好多年之前就發(fā)布了。為了讓它們?cè)谝黄鸸ぷ鳎匀挥泻芏嗵魬?zhàn)。這篇文章點(diǎn)明了Hibernate Struts之間的一些鴻溝,尤其關(guān)系到面向?qū)ο蠼7矫妗N恼乱裁枋隽巳绾卧趦烧唛g搭起橋梁,給出了一個(gè)基于擴(kuò)展Struts的解決方案。所有的基于Hibernate Struts構(gòu)建的Web應(yīng)用都能從這個(gè)通用的擴(kuò)展中獲益。
在Hibernate in Action(Manning,2004十月)這本書里,作者Christian Bauer和Gavin King揭示了面向?qū)ο笫澜绲哪P秃完P(guān)系數(shù)據(jù)模型,兩個(gè)世界的范例是不一致的。Hibernate非常成功地在存儲(chǔ)層(persistence Layer)將兩者粘合在一起。但是領(lǐng)域模型(domain model)(也就是Model-View-Controller的model layer)和HTML頁面(MVC的View Layer)仍然存在不一致。在這篇文章中,我們將檢查這種不一致,并且探索解決的方案。
讓我們先看一個(gè)經(jīng)典的parent-child關(guān)系例子(看下面的代碼):product和category.Category類定義了一個(gè)類型為long的標(biāo)示符id和一個(gè)類型為String的屬性name.Product類也有一個(gè)類型為long的標(biāo)示符id和一個(gè)類型為Category的屬性category,表示了多對(duì)一的關(guān)系(也就是說很多product可以屬于一個(gè)Category)
- /**
- * @hibernate.class table="CATEGORY"
- */
- public class Category {
- private Long id;
- private String name;
- /**
- * @hibernate.id generator-class="native" column="CATEGORY_ID"
- */
- public Long getId() {
- return id;
- }
- public void setId(Long id) {
- this.id = id;
- }
- /**
- * @hibernate.property column="NAME"
- */
- public String getName() {
- return name;
- }
- public void setName(Long name) {
- this.name = name;
- }
- }
- /**
- * @hibernate.class table="PRODUCT"
- */
- public class Product {
- private Long id;
- private Category category;
- /**
- * @hibernate.id generator-class="native" column="PRODUCT_ID"
- */
- public Long getId() {
- return id;
- }
- public void setId(Long id) {
- this.id = id;
- }
- /**
- * @hibernate.many-to-one
【編輯推薦】