我正在开发一个小型JSF项目,我使用的是DB。 我正在和DAO一起工作。我不确定我是否做得对,因为我之前从未使用过JSF。
我的DAO是具有注释@RequestScoped
的托管人
我的DB连接器是POJO。
我的问题是,我的数据库连接器可以是POJO还是需要成为Managedbean?
答案 0 :(得分:1)
您可以拥有如下连接服务类:(此示例假设您已在应用程序服务器中设置了数据源)
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;
}
}
在您的web.xml中,您需要添加以下内容:
<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。
然后,您可以使用该类在其他服务类中启动连接,如下所示:
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();
}
}
}