通过Java / jersey REST资源访问mySQL DB

时间:2012-03-22 14:45:25

标签: java mysql rest jdbc jersey

我是否将数据源查找放在资源的构造函数中,还是应该在每次我想使用数据库时发生?或者在一个不同的班级一起?这些是我正在谈论的两条线,我不知道应该在哪里移动它们:

initContext = new InitialContext();
dataSource = (DataSource)initContext.lookup("java:comp/env/jdbc/dbName");

我可以使用哪些其他方法从GET方法中分离数据库工作?这是我的代码,所以你可以在一个方法中看到它,这是我想要改变的:

@GET
@Produces(MediaType.TEXT_XML)
            public List<Item> getItemsBrowser(){

                DataSource dataSource = null;
                java.sql.Connection connection;
                java.sql.Statement statement;

                List<Item> items = new ArrayList<Item>();


                javax.naming.Context initContext;
                try {
                    initContext = new InitialContext();
                    dataSource = (DataSource)initContext.lookup("java:comp/env/jdbc/dbName");
                } catch (NamingException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                ResultSet resultSet = null;

                try {
                    connection = dataSource.getConnection();
                    statement = connection.createStatement();

                    String query = "SELECT * FROM ITEMS";

                    resultSet = statement.executeQuery(query);

                    // Fetch each row from the result set
                    while (resultSet.next()) {
                      String a = resultSet.getString("itemID");

                      String b = resultSet.getString("itemDescription");

                      //Assuming you have a user object
                      Item item = new Item(a, b);

                      items.add(item);
                    }


                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }


                return items;
            }

任何建议都是值得的,谢谢。

1 个答案:

答案 0 :(得分:0)

也许你应该有一些ItemDAO(数据访问对象),它将使用一些Item从数据源中检索所需的Connection Pool。然后这两行将在DAO初始化。