คำถามติดแท็ก dao

3
ชั้นบริการควรตรวจจับข้อยกเว้น dao ทั้งหมดและตัดเป็นข้อยกเว้นบริการหรือไม่
ฉันมีเว็บแอพ Spring สามชั้น: dao, บริการและผู้ควบคุม คอนโทรลเลอร์ไม่เคยเรียก dao โดยตรงมันทำผ่านเลเยอร์บริการ ตอนนี้เวลาส่วนใหญ่หากมีข้อยกเว้น dao (รันไทม์) ที่ไม่ได้จัดการมันจะถูกจับโดย JSP แสดงข้อความข้อผิดพลาดให้กับผู้ใช้ ชั้นบริการควรตรวจจับข้อยกเว้น dao ทั้งหมดและตัดเป็นข้อยกเว้นบริการหรือไม่ try { daoInstance.someDaoMethod(); } catch(DataAccessException dae) { throw new ServiceException("message", dae); } สมมติว่า ServiceException นั้นเป็น runtime เช่นกัน มีความแตกต่างใด ๆ เพียงแค่โยน DataAccessException แทนที่จะเป็น ServiceException หรือไม่ ฉันแค่คิดว่าเลเยอร์การนำเสนอไม่ควรทราบเกี่ยวกับข้อยกเว้นการเข้าถึงข้อมูล แต่ฉันไม่เห็นจุดที่จับข้อยกเว้นที่ไม่สามารถกู้คืนได้เพื่อห่อไว้

3
ใน MVC ควรเรียก DAO จาก Controller หรือ Model
ฉันได้เห็นข้อโต้แย้งต่าง ๆ กับ DAO ที่ถูกเรียกจากคอนโทรลเลอร์คลาสโดยตรงและ DAO จากคลาส Model สิ่งประดิษฐ์ฉันรู้สึกว่าถ้าเราติดตาม MVC pattern ตัวควบคุมไม่ควรควบคู่กับ DAO แต่เป็น Model class ควรเรียกใช้ DAO จากภายในและผู้ควบคุมควรเรียกใช้คลาสโมเดลเพราะเราสามารถแยกคลาสโมเดลออกจากเว็บแอปพลิเคชันและแสดงฟังก์ชันการทำงานสำหรับวิธีต่างๆเช่นบริการ REST เพื่อใช้คลาสโมเดลของเรา หากเราเขียนการร้องขอ DAO ในคอนโทรลเลอร์จะไม่สามารถใช้บริการ REST เพื่อนำฟังก์ชันการทำงานกลับมาใช้ใหม่ได้ใช่ไหม ฉันได้สรุปแนวทางทั้งสองด้านล่าง วิธีการ # 1 public class CustomerController extends HttpServlet { proctected void doPost(....) { Customer customer = new Customer("xxxxx","23",1); new CustomerDAO().save(customer); } } วิธีการ …

3
DAO ควรเป็นแบบเดี่ยวหรือไม่?
ฉันกำลังพัฒนา RESTful API และฉันคิดว่ามันสะดวกที่จะใช้ DAO สำหรับทรัพยากรของฉันเพราะแม้ว่าฉันจะใช้หน่วยความจำเพื่อเก็บไว้ แต่ฉันไม่ต้องการปิดประตูให้ใครก็ตามที่ใช้ห้องสมุดของฉันถ้าพวกเขาตัดสินใจที่จะใช้ การใช้ฐานข้อมูลสำหรับ DAO คำถามของฉันคือว่า DAO ควรเป็นซิงเกิลตันหรือไม่ หากไม่ใช่บริการจะมีตัวอย่างของ DAO และจะมีลักษณะเช่นนี้: @Path("eventscheduler") public class EventSchedulerService { private IEventSchedulerDao dao = new EventSchedulerDao(); // in case a different implementation is to be used public void setEventSchedulerDao(IEventSchedulerDao dao) { this.dao = dao; } @Path("{uniqueName}") @GET @Produces(MediaType.APPLICATION_JSON) public Tournament …

3
วิธีการจัดการ 2 DAO วิธีในการทำธุรกรรมเดียว?
ในการสัมภาษณ์มีคนถามฉัน: เราจะจัดการวิธีการทำธุรกรรม / dao 2 วิธีในการทำธุรกรรมเดียวได้อย่างไร ความสามารถที่ต้องการ: หากทุกคนล้มเหลวเราจำเป็นต้องย้อนกลับทั้งสองวิธี ทั้งสองวิธีสามารถเรียกแยกแนบกับธุรกรรมเดียว การจัดการควรอยู่ในชั้น DAO ไม่ใช่ในชั้นบริการ ฉันคิดว่า: คำถามเกี่ยวข้องกับการจัดการธุรกรรมในฤดูใบไม้ผลิ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.