国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

讓Spring幫助你在MVC層解決JPA的緩遲加載問題

2019-11-18 15:37:02
字體:
來源:轉載
供稿:網友
【引自大峽-華山論劍的博客】作為EJB3.0的一部分,JPA是一個好東西。其簡單的配置方式及強大的默認配置支持,使其可以輕松自由的存在于輕量與重量之間,假如現在您的javaEE項目,不管是選擇輕量級構架還是重量級構架,假如持久層不選擇使用JPA,而是用一些ORM框架(如Hibernate、TopLink)的專用API,那么在將來的某一天一定會為這個選擇而說出至尊寶那句“假如上天再給我一個機會…”的至理名言。

下面是一個簡單的Entity,是對一個CMS系統中,關于樹狀信息目錄實體類的定義,包括了一些具體的映射的配置信息。

@Entity

public class NewsDir ...{

@Id

@GeneratedValue(strategy = GenerationType.TABLE)

PRivate Long id;// 主鍵

@Column(unique = true, nullable = false, length = 16)

private String sn;// 目錄編號

private String title; // 目錄名稱

@OneToMany(mappedBy = "parent", cascade = javax.persistence.CascadeType.REMOVE)

private List children = new java.util.ArrayList();// 下級目錄

@ManyToOne

private NewsDir parent;// 父級目錄

}

當然,跟任何其它優秀的技術一樣,JPA也不是完美的,在使用的過程中難免都會出這樣那樣的問題,這就需要我們程序員具有格物致知的本領,在應用中靈活應付這些問題。

這里例舉一個緩遲加載的問題,以上面的新聞目錄Entity為例。對于parnet與children這個一對多的雙向關聯,為了提高系統效率,children默認使用的是緩遲加載的方式。在一些輕量級的構架中,由于脫離了J2EE容器及事務支持,經常會出現Entity脫離了Persitence Context,變成了detach或EntityManager關閉,導致一些我們預想中的一些功能無法正常運行。

最常見的就是在使用MVC框架的時候,在表示層無法加載需要緩遲加載的數據。比如,在一個基于EasyJWeb的mvc應用中,action中的方法如下:

public Page doList(WebForm form, Module module) ...{

NewsDirQueryObject ndqo = new NewsDirQueryObject();

form.toPo(ndqo);

ndqo.setDel(true);

ipageList pageList = service.queryDirsByConditions(ndqo);

CommUtilForTeaec.saveIPageList2WebForm(pageList, form);

form.addResult("dirPath", this.getDirPath(form));

return module.findPage("list");

}

模板文件中有如下內容:

#foreach($info in ${dir.children})

目錄名稱:${info.title}

#end

關于業務邏輯層Bean的配置:




eXPression="execution(* com.easyjf.cms.service.*.*(..))" />

            pointcut-ref="CmsManage" />           


transaction-manager="transactionManager">



                read-only="true" />

                read-only="true" />








class="com.easyjf.cms.service.impl.CmsManageServiceImpl">   





發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 胶南市| 龙井市| 澜沧| 泾源县| 湖南省| 高密市| 棋牌| 西昌市| 封丘县| 松原市| 英山县| 株洲市| 太仓市| 东光县| 都江堰市| 遂川县| 石屏县| 渑池县| 汉源县| 石屏县| 南平市| 千阳县| 卫辉市| 江油市| 辛集市| 绩溪县| 松滋市| 临汾市| 四平市| 隆安县| 务川| 双柏县| 光山县| 山东省| 沅江市| 柏乡县| 舞阳县| 宁陵县| 新河县| 宁德市| 黄陵县|