freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

論文-用hibernate和spring開發(fā)持久層-資料下載頁

2025-01-13 18:05本頁面
  

【正文】 user * * @ name=GetUsersNotInAGroup * query=select user from User user where is null * * @ name=UsersBySalaryGreaterThan * query=from User user inner join info where ?1 * * @ name=UsersBySalaryBetween * query=from User user join info where between ?1 AND ?2 * * @ name=UsersByLastNameLike * query=from User user join info where like ?1 * * @ name=GetEmailsOfUsers * query=select from Group g join as user where = ?1 * */public class User { .上述代碼定義了幾個(gè)預(yù)定義查詢。預(yù)定義查詢 是存儲在 *. 文件中的查詢。在清單 5 中,可以看到如何執(zhí)行預(yù)定義查詢。清單 5. 使用預(yù)定義查詢Listing 5. Using named queries[] /** 查詢返回String的示例。 */ public String[] getUserEmailsInGroup(String groupName){ List List = getHibernateTemplate().findByNamedQuery(GetEmailsOfUsers)。 return (String []) (new String[()])。 } /** 查詢返回一個(gè)Users的list示例。 * @return A list of s of all of the users in the authentication system. */ public List getUsers(){ return getHibernateTemplate().findByNamedQuery(AllUsers)。 } /** 通過一個(gè)單一參數(shù)查詢的示例。 * @return A list of UserValue objects. */ public List getUsersBySalary(float salary){ return getHibernateTemplate() .findByNamedQuery(UsersBySalaryGreaterThan, new Float(salary))。 }/**通過一個(gè)多個(gè)參數(shù)查詢的示例。 * @return A list of UserValue objects. */ public List getUsersBySalaryRange(float start, float stop){ return getHibernateTemplate() .findByNamedQuery(UsersBySalaryBetween, new Object[] {new Float(start), new Float(stop)})。 }查詢進(jìn)行時(shí),可以在持久層中加上最后一層:使用 Spring 的事務(wù)管理。用 Spring 管理事務(wù)Spring 可以聲明式地管理事務(wù)。例如, 方法當(dāng)前不是在單個(gè)事務(wù)中執(zhí)行的。因此,組中的每一個(gè)用戶都插入到自己的事務(wù)中,如清單 6 所示。清單 6. 添加一組用戶Listing 6. Adding a group of users[]public void addGroup(Group group) { getHibernateTemplate().save(group)。}[]public void testAddGroupOfUsers(){ Group group = new Group()。 for (int index=0。 index 10。 index++){ User user = new User()。 (rick+index+@ )。 (foobar)。 (user)。 } (testGroup)。 (group)。 assertNotNull(())。 Group group2 = (testGroup)。 assertEquals(testGroup,())。 assertEquals(10, ().size())。 String = ((User)().get(0)).getEmail()。 assertEquals(rick0@, )。}不建議使用上述解決方案,因?yàn)槊恳粋€(gè) User 都要在自己的事務(wù)中插入到數(shù)據(jù)庫中。如果出現(xiàn)問題,那么只能添加部分用戶。如果希望保留 ACID 屬性(即保證所有都發(fā)生或者所有都不發(fā)生),可以通過程序進(jìn)行事務(wù)管理,但是它很快就會變得一團(tuán)糟了。相反,應(yīng)使用 Spring 的 AOP 來支持聲明式的事務(wù),如清單 7 所示。清單 7. 聲明式管理事務(wù)Listing 7. Managing transactions declaratively[]! Pass the session factory to our UserDAO bean id=userDAOTarget class= property name=sessionFactoryref local=sessionFactory//property /bean bean id=transactionManager class= property name=sessionFactoryref bean=sessionFactory//property /bean bean id=userDAO class= property name=transactionManagerref local=transactionManager//property property name=targetref local=userDAOTarget//property property name=transactionAttributes props prop key=addGroupPROPAGATION_REQUIRED/prop /props /property /bean注意在準(zhǔn)備清單 7 的代碼時(shí),我重新改寫了 UserDAO 并提取了其接口。這個(gè)接口現(xiàn)在是 UserDAO,它的實(shí)現(xiàn)類是 UserDAOImpl。這樣清單 7 中的事務(wù)代碼就使用了帶有事務(wù)屬性 (PROPAGATION_REQUIRED) 的 () 方法。現(xiàn)在只要底層數(shù)據(jù)庫支持,就可以在一個(gè)事務(wù)中添加所有用戶。結(jié)束語在本文中,介紹了如何使用 Hibernate 和 Spring 實(shí)現(xiàn)一個(gè)事務(wù)持久層。Hibernate 是一種先進(jìn)的 OR 映射工具,而 Spring 是一個(gè) AOP 框架和 IOC 容器。這兩種技術(shù)的綜合使用,使得開發(fā)人員可以編寫媲美數(shù)據(jù)庫廠商的代碼,它可以在 J2EE 容器中運(yùn)行,也可以單獨(dú)運(yùn)行。參考文獻(xiàn) [1]Spring reference: [2]Hibernate reference: 注:[1]、[2] 文獻(xiàn)都是這兩個(gè)框架的官方參考資料。作者聯(lián)系方式:02787886226胡昌龍 籍貫武漢市 電話:13006300369郵政編號:430074 單位:中國地質(zhì)大學(xué)信息工程學(xué)院 通信地址:flykage@作者簡介:胡昌龍 1977年出生 男 湖北人 研究生 研究方向?yàn)椋夯诨ヂ?lián)網(wǎng)的MIS及電子商務(wù) 易 燕 1980年出生 女 湖北人 研究生 研究方向?yàn)椋夯诨ヂ?lián)網(wǎng)的MIS及電子商務(wù)
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1