สำหรับข้อตกลงในการเขียนโปรแกรม มีดังนี้นะครับ
standard
code
·
การตั้งชื่อ package
com.ais.itmas.modulename
com.ais.itmas.modulename.spring.hibernate.persistance
com.ais.itmas.modulename.spring.hibernate.persistance.dao com.ais.itmas.modulename.spring.hibernate.persistance.iface
com.ais.itmas.modulename.spring.hibernate.persistance.service
·
file
config WEB-IMF ให้ใช้ร่วมกัน แต่ comment ของแต่ละคนไว้ใน
block comment ของตัวเอง
< !- - Start sansal45 -->
Config
< !- - End sansal45 -->
·
comment
ที่ method ด้วยว่า method สำหรับทำอะไร สำหรับ eclipse เลื่อน cursor ไปที่ method จากนั้นกด shift + alt + j มันจะสร้าง java doc ให้ จากนั้นก็เขียนคำอธิบายไว้ที่ข้างบนบรรทัดแรก
· สร้าง jsp ใน folder
pages > ชื่อแต่ละ node เช่น node
workflow จะสร้าง jsp ใน pages >
workflow
framework
& Structure
Font
End
1.
JQuery
validator
2.
Dialog
=> Extjs + Jtip
3.
JMesa
4.
Controller
spring sent ajax
by JQuery
5.
DWR
ใช้กับ combo box (load component ที่ไม่สามารถ
load เข้า cache และเป็น component
ที่มีความเกี่ยวเนื่องกัน เช่น จังหวัดกับอำเภอ)
6.
แสดงข้อมูล edit ให้ไป query ข้อมูลใน
controller ใส่ใน model แล้วใช้ $
แสดงใน jsp
7.
value
ของ button จะจัดเก็บไว้ใน properties
file (ยังไม่สรุปการเรียกใช้)
Back
End
1.
มี persistence, DAO, VO, Service โดยที่ให้ persistence เป็นตัว map กับ xml ของ hibernate
ที่ config กับ database และใช้ VO สำหรับเรียกแสดงผลหลักการตั้งชื่อ เช่น
-
table
ชื่อ USER_DETAIL
-
persistence = UserDetail
-
DAO
= UserDetailDAO
-
VO
= UserDetailVO
-
Service
= UserDetailService
แต่ในกรณีที่มีการ join กันของ database
ให้สร้าง class ด้วย SP+ชื่อscreen
เช่น
-
หน้า Screen ชื่อ IM_DETAIL เป็นการ join ของ USER_DETAIL USER_FUNCTION
-
VO
= SPImDetailVO
-
DAO
= SPImDetailDAO
-
Service
= SPImDetailService
2.
ถ้า VO extends bean เวลาส่งค่ามาให้ cast bean เป็น VO เช่น
UserDetailVO userDetailVO = (UserDetailVO) userDetail;
3.
ใช้ Hibernate ทั้งหมด กรณีมีการ join หลาย table ให้ใช้ JDBC ใน hibernate
callback แต่ต้อง ปิด/เปิด connection เอง
4.
มี param ไว้ส่งค่าให้กับ tableFactory ของ JMesa
*
BeanUtil.copypropery ใช้ในกรณี copy ข้อมูลจาก
bean ใส่ VO (ชื่อ property
name เหมือนกัน)
Error
มี 3 ส่วน
-
font
จะใช้ JQuery extjs ใช้วิธี include
page โดยไม่ต้อง เก็บใน base
-
ส่วน action ให้ไปอ่าน error code
-
error
ที่จับไม่ได้ ให้เป็น error page ไป
- Error
code ที่จะแสดงให้แสดงที่ส่วนบนของ page โดยใช้
JQuery
-
รองรับ error ภาษาไทยด้วย
-
แยก js ของแต่ละหน้า ในกรณีปกติ แต่ถ้าหากมีปัญหาเรื่องภาษาไทยให้ใช้วิธีการ include
jsp ที่เขียนเฉพาะ js ไว้เข้ามา (encodeURIComponent
ใช้ใน JMesa)
-
SA จะระบุให้ใน spec ว่าแต่ละ page มีรายละเอียดอย่างไร ปุ่มที่ disable, dialog , process bar
Form
การ forward
ให้เข้า
controller ทุกตัวไม่ใช้ dwr
1.
ใช้ Ajax form (เรียก controller
โดยไม่ต้อง refresh หน้า)
2.
ส่วนที่แสดง JMesa ให้ เรียกที่ controller ปกติ
จาก
main page
(business) ส่งค่าให้ node ย่อยๆ โดยส่งเป็น url
ใน dwr ข้ามไปเลย
** ใ นแต่ละ method ให้ทำการ set ค่า ทุกๆ object ที่ไม่ใช้แล้วให้เป็น null ด้วยซึ่งจะครอบด้วย try{}catch()
แ ละ finally
เ ช่น
try{
StringBuilder sb = new StringBuilder(50);
....
} catch(RuntimeException re){
} finaly{
sb = null;
}
การติดต่อกับ Datatase
จะใช้ Hibernate เป็นหลักและเราจะใช้ Hibernate Synchronizer ในการ generate ไฟล์และ generate คลาส
แต่มีสุดที่่สำคัญอยู่อย่างหนึ่งคือ field ที่มี data type เ ป็น date ปกติแล้ว Hibernate Synchronizer จะ generate โดยใช้ java.util.Date ให้ทำการเปลี่ยนเป็น java.util.Calendar แทน
และที่สำคัญอีกก็คือ เราจะใช้ Hibernate ควบคู่กับ Jdbc โดยผ่าน HibernateCallback ของ Spring เพื่อทำการเขียน query ที่มีความซับซ้อนมากๆ เพื่อความสะดวกในการใช้งาน
ตัวอย่าง การใช้ callback เพื่อเขียน hibernate ตรงๆ
getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Criteria criteria = session.createCriteria(getReferenceClass());
return criteria.list();
}
});