2016-04-09 22 views
1

DB kullandığım küçük bir JSF Project üzerinde çalışıyorum. DAO'larla çalışıyorum. Doğru yapıp yapmadığımdan emin değilim çünkü daha önce hiç JSF kullanmamıştım.JSF Veritabanı bağlantısı Managedbean veya POJO

DAO'larim Ek Açıklama ile Yönetilenler'tir @RequestScoped DB konektörüm POJO'dur.

Soruma göre, DB bağlayıcım bir POJO olabilir mi, yoksa Managedbean mı olmalı? aşağıdaki gibi

cevap

1

Bir bağlantı hizmeti sınıfı olabilir: Aşağıdaki eklemeniz gerekir sizin web.xml olarak

public class ConnectionDB { 

    private Context initContext; 

    private static Context webContext; 

    private static DataSource dataSource = null; 

    private ConnectionDB() { 
     try { 
      initContext = new InitialContext(); 

      webContext = (Context) initContext.lookup("java:/comp/env"); 

      dataSource = (DataSource) webContext.lookup("name_ds"); 
     } catch (NamingException e) { 
      e.printStackTrace(); 
     } 
    } 

    public static DataSource getDS() { 

     if (dataSource == null) { 
      new ConnectionDB(); 
     } 

     return dataSource; 

    } 

} 

(bu örnek zaten bir veri kaynağı uygulama sunucusu kurulum var varsayar):

<resource-ref> 

    <res-ref-name>name_ds</res-ref-name> 

    <res-type>javax.sql.DataSource</res-type> 

    <res-auth>Container</res-auth> 
</resource-ref> 

@ManagedBean olarak sahip olmadığına dikkat edin. aşağıdaki gibi

Sonra siz, diğer hizmet sınıflarında bağlantınızı başlatmak için o sınıfı kullanabilirsiniz:

public class Test{ 

    private Connection conn; 

    private PreparedStatement prstmt; 

    private ResultSet rs; 

    public void testMethod() { 

try { 
      conn = ConnectionDB.getDS().getConnection(); 

      //create your sql, result sets and prepare statements 

} 
catch (SQLException e) { 
      e.printStackTrace(); 
     } 

} 

}