JSF数据库连接Managedbean或POJO

时间:2016-04-09 16:51:16

标签: java database jsf jdbc

我正在开发一个小型JSF项目,我使用的是DB。 我正在和DAO一起工作。我不确定我是否做得对,因为我之前从未使用过JSF。

我的DAO是具有注释@RequestScoped的托管人 我的DB连接器是POJO。

我的问题是,我的数据库连接器可以是POJO还是需要成为Managedbean?

1 个答案:

答案 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();
        } 

}

}