關於執行效率的問題,附原始碼,請大家給點意見
新使用者註冊的時候,得先判斷是否存在這個使用者名稱。那麼有如下的程式碼(我隨手寫的,方法名,類名寫錯之類的暫不考慮)
在業務邏輯類裡,呼叫DAO類,先後開啟並關閉2次session,這樣的程式碼雖然簡潔明瞭,但會降低程式執行的效率,當然,把邏輯程式碼寫在DAO裡,讓一個session去做驗證和插入兩件事,顯然不是一個好方法,因為邏輯經常要變動的,有沒有什麼好的方法可以解決呢?
servlet類--RegServlet.java
public class RegServlet extends HttpServlet{
public doPost(HttpSerlevtRequest request,HttpServletResponse response){
String username = request.getParameter("username");
String pwd = request.getParameter("pwd");
User user = new User(username,pwd);
if(UserManager.addNew(user)){
reponse.sendreciderict("success.html");
}else{
reponse.sendreciderict("error.html");
}
}
}
//業務邏輯處理類
class UserManager{
public static boolean addNew(User user){
//先進行有沒有這個使用者的存在的判斷,第一次操作開啟並關閉session
User temp = UserDAO.loadUserByName(user.getName());
if(temp!=null){
return false;
}
//再進行插入操作,第二次操作開啟並關閉session
return UserDAO.save();
}
}
//持久層類
class UserDAO{
//為簡單,假設username就是主鍵,透過主鍵查詢
public static UserDAO loadUserByName(String username){
Session session = null;
Transaction tx =null;
User temp = null;
try{
session = HibernateUtil.createSession();
tx = session.beginTransaction();
temp = (User)session.load(username);
tx.commit();
}catch(Exception e){
if(tx!=null){
tx.rollback();
}
}finally{
HibernateUtil.closeSession();
return temp ;
}
}
//持久化儲存物件
public static boolean save(User user){
Session session = null;
Transaction tx =null;
boolean r= false;
try{
session = HibernateUtil.createSession();
tx = session.beginTransaction();
session.save(user);
tx.commit();
r = true;
}catch(Exception e){
if(tx!=null){
tx.rollback();
}
}finally{
HibernateUtil.closeSession();
return r;
}
}
}
在業務邏輯類裡,呼叫DAO類,先後開啟並關閉2次session,這樣的程式碼雖然簡潔明瞭,但會降低程式執行的效率,當然,把邏輯程式碼寫在DAO裡,讓一個session去做驗證和插入兩件事,顯然不是一個好方法,因為邏輯經常要變動的,有沒有什麼好的方法可以解決呢?
servlet類--RegServlet.java
public class RegServlet extends HttpServlet{
public doPost(HttpSerlevtRequest request,HttpServletResponse response){
String username = request.getParameter("username");
String pwd = request.getParameter("pwd");
User user = new User(username,pwd);
if(UserManager.addNew(user)){
reponse.sendreciderict("success.html");
}else{
reponse.sendreciderict("error.html");
}
}
}
//業務邏輯處理類
class UserManager{
public static boolean addNew(User user){
//先進行有沒有這個使用者的存在的判斷,第一次操作開啟並關閉session
User temp = UserDAO.loadUserByName(user.getName());
if(temp!=null){
return false;
}
//再進行插入操作,第二次操作開啟並關閉session
return UserDAO.save();
}
}
//持久層類
class UserDAO{
//為簡單,假設username就是主鍵,透過主鍵查詢
public static UserDAO loadUserByName(String username){
Session session = null;
Transaction tx =null;
User temp = null;
try{
session = HibernateUtil.createSession();
tx = session.beginTransaction();
temp = (User)session.load(username);
tx.commit();
}catch(Exception e){
if(tx!=null){
tx.rollback();
}
}finally{
HibernateUtil.closeSession();
return temp ;
}
}
//持久化儲存物件
public static boolean save(User user){
Session session = null;
Transaction tx =null;
boolean r= false;
try{
session = HibernateUtil.createSession();
tx = session.beginTransaction();
session.save(user);
tx.commit();
r = true;
}catch(Exception e){
if(tx!=null){
tx.rollback();
}
}finally{
HibernateUtil.closeSession();
return r;
}
}
}
相關文章
- 關於學習:Java實用系統開發指南,請大家給點意見Java
- 關於repaint()問題,大家請指點AI
- 請教大家關於java效能的問題Java
- 請大家給些建議和意見,關於動態內容,靜態釋出。
- 開發中使用JavaMail遇到的問題,請前輩門給點意見!JavaAI
- 關於執行緒使用中的幾個疑問,請教大家!執行緒
- 請教一個關於執行緒的問題執行緒
- 請教一個關於NIO執行方式的問題
- 請教一個關於執行平臺的問題
- 請教關於執行緒的結束問題,急!!!執行緒
- 關於的Eclipse3.0.1執行問題請教Eclipse
- 關於執行緒的問題,清高手指點執行緒
- 關於學習效率問題,一點點心得
- 請問關於本書原始碼……原始碼
- 關於原始碼問題。原始碼
- 關於執行緒的問題...執行緒
- 關於jdon原始碼的問題原始碼
- 關於程式碼如何執行的五個問題
- 遇到一個關於session id的問題,向大家請教!Session
- 請教大俠。關於多執行緒同步問題執行緒
- 關於DIP原則中介面的放置問題,請大家指點一下。
- 關於petstore的執行問題,謝謝~
- 關於連線bean中可能發生多執行緒的問題請教,歡迎大家一起討論Bean執行緒
- 關於defer執行順序問題
- 關於第2章執行問題
- 關於資料快取的機制,請大家指點!!快取
- 請大家幫忙,關於儲存過程分頁的問題...謝謝儲存過程
- 關於ERP,中臺和低程式碼,我的幾點意見
- 關於js執行緒問題的解讀JS執行緒
- 關於mysql執行效率優化注意事項及要點MySql優化
- jivejdon執行的問題請教
- 請教一個涉及到多執行緒的關於單例的問題執行緒單例
- 嗨,想在模式上簡單些,卻弄巧成拙,請進給點意見。模式
- 丁奇:關於 AliSQL 開源大家關心的問題SQL
- 丁奇:關於AliSQL開源大家關心的問題SQL
- 小小問題―關於java多執行緒Java執行緒
- 請教個問題執行 httprunner 遇到的問題HTTP
- 關於單點登入的若干問題,請高手指教