国产探花免费观看_亚洲丰满少妇自慰呻吟_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">   





發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 邵武市| 社会| 山阳县| 运城市| 平原县| 朝阳县| 株洲县| 江津市| 九龙坡区| 普定县| 兴仁县| 天峻县| 铅山县| 清河县| 石河子市| 江川县| 九寨沟县| 土默特左旗| 望城县| 太康县| 平利县| 灵寿县| 苏州市| 浦东新区| 灌阳县| 寿宁县| 永和县| 依兰县| 武安市| 滨海县| 托克逊县| 抚顺市| 福泉市| 辽阳市| 河南省| 长沙县| 廊坊市| 加查县| 沐川县| 四子王旗| 玛纳斯县|