Доступ к базе данных mySQL через ресурс REST Java / jersey - PullRequest
2 голосов
/ 22 марта 2012

Я помещаю поиск источника данных в конструктор ресурса, или это должно происходить каждый раз, когда я хочу использовать базу данных?Или в другом классе все вместе?Это две строки, о которых я говорю, и я не знаю, куда мне их переместить:

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 голосов
/ 30 марта 2012

Может быть, у вас должен быть какой-то ItemDAO (объект доступа к данным), который извлечет требуемый Item из источника данных, используя некоторое Connection Pool. И тогда эти две строки будут в DAO инициализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...