日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JBoss 4.2.x Spring 3 JPA Hibernate教程第2部分

發布時間:2023/12/3 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JBoss 4.2.x Spring 3 JPA Hibernate教程第2部分 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們將繼續有關Spring 3 , Hibernate , JPA和JBoss 4.2.x – 4.3集成的教程 。

最后一步是創建一個Spring服務,以向最終用戶公開功能。 我們必須創建一個接口類和相關的實現類。 首先是接口類:

package com.mycomp.myproject.services;import com.mycomp.myproject.dto.EmployeeDTO;public interface ExampleService {public EmployeeDTO findEmployee(long employeeId);public void saveEmployee(long employeeId, String name, String surname, String jobDescription) throws Exception;public void updateEmployee(long employeeId, String name, String surname, String jobDescription) throws Exception;public void saveOrUpdateEmployee(long employeeId, String name, String surname, String jobDescription) throws Exception;public void deleteEmployee(long employeeId) throws Exception;}

如您所見,這是一個經典的Java接口類。 我們將在EmployeeDTO對象上實現創建,檢索,更新,刪除(CRUD)函數。

以下是指定接口的實現類。

package com.mycomp.myproject.services.impl;import javax.annotation.PostConstruct; import javax.annotation.PreDestroy;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional;import com.mycomp.myproject.dao.EmployeeDAO; import com.mycomp.myproject.dto.EmployeeDTO; import com.mycomp.myproject.services.ExampleService;@Service("exampleService") public class ExampleServiceImpl implements ExampleService {@Autowiredprivate EmployeeDAO employeeDAO;@PostConstructpublic void init() throws Exception {}@PreDestroypublic void destroy() {}public EmployeeDTO findEmployee(long employeeId) {return employeeDAO.findById(employeeId);}@Transactional(propagation=Propagation.REQUIRED, rollbackFor=Exception.class)public void saveEmployee(long employeeId, String name, String surname, String jobDescription) throws Exception {EmployeeDTO employeeDTO = employeeDAO.findById(employeeId);if(employeeDTO == null) {employeeDTO = new EmployeeDTO(employeeId, name,surname, jobDescription);employeeDAO.persist(employeeDTO);}}@Transactional(propagation=Propagation.REQUIRED, rollbackFor=Exception.class)public void updateEmployee(long employeeId, String name, String surname, String jobDescription) throws Exception {EmployeeDTO employeeDTO = employeeDAO.findById(employeeId);if(employeeDTO != null) {employeeDTO.setEmployeeName(name);employeeDTO.setEmployeeSurname(surname);employeeDTO.setJob(jobDescription);}}@Transactional(propagation=Propagation.REQUIRED, rollbackFor=Exception.class)public void deleteEmployee(long employeeId) throws Exception {EmployeeDTO employeeDTO = employeeDAO.findById(employeeId);if(employeeDTO != null)employeeDAO.remove(employeeDTO);}@Transactional(propagation=Propagation.REQUIRED, rollbackFor=Exception.class)public void saveOrUpdateEmployee(long employeeId, String name, String surname, String jobDescription) throws Exception {EmployeeDTO employeeDTO = new EmployeeDTO(employeeId, name,surname, jobDescription);employeeDAO.merge(employeeDTO);}}

這里要注意的事情:

  • 我們使用@Service (“ exampleService”)構造型注釋,以便聲明該類以名稱“ exampleService”表示Spring服務。 Spring容器將在啟動時實例化所有服務。
  • 我們使用@Autowire批注將DAO類的實例注入“ exampleService”。 為了正確地實例化服務, Spring容器必須首先解析服務中所有可能的引用,因此實例化DAO類并將實例注入到“ exampleService”的適當字段–“ employeeDAO”字段。 如果您想知道,依賴項注入是根據類型(類)完成的,如果不滿足則是根據名稱完成的,這意味著如果我們定義了多個相同類型(類)的服務,則注入的服務將是名稱相同的服務作為指定字段。
  • 我們使用Java批注@PostConstruct@PreDestroy來聲明在初始化(完成所有依賴項注入)和服務的先前銷毀后Spring容器將調用的方法。
  • 對于需要對數據庫執行更新操作的所有方法(INSERT,UPDATE,DELETE),我們使用@Transactional批注
  • 我們不要在對數據庫執行檢索(FIND)操作的方法上使用@Transactional批注(包含延遲初始化的引用的對象除外-請參見下文),和/或不執行數據庫操作。 那是因為每次您調用一個注解為事務性的方法時, Spring容器都會涉及到調用JPA的實體管理器以及結果平臺的事務管理器,從而定義了將要應用的事務行為,特別是引入了明顯的性能損失。適用于低延遲/高吞吐量的應用程序。
  • 對于對包含延遲初始化的引用的對象執行檢索(FIND)操作的方法,應使用@Transactional批注,指定“ NESTED ”傳播類型,以使Spring可以為整個方法調用保持Hibernate會話打開
  • 事務處理行為僅應用于對服務的客戶端調用。 事務行為不適用于內部操作調用。 例如,如果客戶端調用未注釋為事務性的操作,而后者的實現將對同一服務的另一個操作的調用引入了注釋為事務性的調用,則對于合并的操作,將不會應用任何事務行為。
  • 最終用戶應始終通過定義的界面訪問服務

那確實是一個很大的教程!

希望你喜歡它。

賈斯汀

翻譯自: https://www.javacodegeeks.com/2010/05/jboss-42x-spring-3-jpa-hibernate_21.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的JBoss 4.2.x Spring 3 JPA Hibernate教程第2部分的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。