• Чем больше пользуетесь при разработке приложения под андроид - эмулятором или реальным телефоном?

    @code_batya
    На самом деле, делай как хочешь. И да, на смартфоне удобнее, и я всегда тестирую приложения на нем. Можно запускать встроенную в Android Studio виртуальную машину, но она сжирает OVERдофига системных ресурсов(сижу на Ubuntu 18.04). А так, все зависит от твоих предпочтений: нравится вживую - бери смартфон, не нравится - VM. Но опять же, смартфон накладывает некоторые ограничения: версия Android, root/no root и тд. Но я обычно ограничиваюсь телефоном.
    Ответ написан
    Комментировать
  • Зачем нужен @Id в Entity?

    @code_batya
    1)Может, в JPA?
    2)Рассмотрим вот такой пример:
    @Entity
    @Table(name="users")
    public class UsersDataSet {
        @Id
        @GeneratedValue(strategy=GenerationType.IDENTITY)
        long user_id;
        //...
    }


    Значит, поле id соответствующее базе данных будет связано с полем user_id в твоем классе.
    Ответ написан
  • Как сохранять данные из html страницы в приложении Android?

    @code_batya
    ORM+JPA+Hibernate+DAO.
    Соединяемся с базой, затем шлем ей запрос, потом обрабатываем ответ.
    Реализуем класс, хранящий элемент в бд как объект:
    @Entity
    @Table(name = "univer")//название таблицы в бд
    public class UniverDataSet {
        @Column(name="course")//название колонки в базе
        private String course;
        @Column(name="group")
        private String group;
    
        public UniverDataSet(String group, String course) {
            this.course = course;
            this.group = group;
        }
        //...getters
    }


    Как делается запрос к бд:
    public class UniverDAO {
        private Executor executor;
        //...
        public String getTimeTable(long id) throws SQLException {
            PreparedStatement stmt = executor.execQuery(
                    "select * from users where id = '" + id + "'",
                    resultSet -> {
                            resultSet.next();
                            return resultSet.getString(1);
                    }
            );
        }
    }
    
    class Executor {
        UsersDAO dao;
        //...
    
        public <T> T execQuery(String query, ResultHandler<T> handler) throws SQLException {
            PreparedStatement stmt = connection.preparedStatement(query);
            ResultSet resultSet = stmt.execute();
            T value = handler.handle(resultSet);
            resultSet.close();
            stmt.close();
            return value;
        }
    }
    
    interface ResultHandler {
        void handle(ResultSet resultSet) throws SQLException;
    }


    ResultHandler создан для того, чтобы была возможность закрыть ресурс resultSet внутри метода Executor.execQuery()
    Ответ написан
    Комментировать