Еще один вопрос Spring + Hibernate + JPA - PullRequest
0 голосов
/ 14 января 2010

Я все еще пытаюсь изменить приложение Spring для использования Hibernate с JPA для работы с базами данных. Ну, как видно из предыдущего поста мне нужен файл persistence.xml. Однако мне нужно внести изменения в мой текущий класс DAO?

public class JdbcProductDao extends Dao implements ProductDao {
    /** Logger for this class and subclasses */
    protected final Log logger = LogFactory.getLog(getClass());

    public List<Product> getProductList() {
        logger.info("Getting products!");
        List<Product> products = getSimpleJdbcTemplate().query(
                "select id, description, price from products", 
                new ProductMapper());
        return products;
    }

    public void saveProduct(Product prod) {
        logger.info("Saving product: " + prod.getDescription());
        int count = getSimpleJdbcTemplate().update(
            "update products set description = :description, price = :price where id = :id",
            new MapSqlParameterSource().addValue("description", prod.getDescription())
                .addValue("price", prod.getPrice())
                .addValue("id", prod.getId()));
        logger.info("Rows affected: " + count);
    }

    private static class ProductMapper implements ParameterizedRowMapper<Product> {

        public Product mapRow(ResultSet rs, int rowNum) throws SQLException {
            Product prod = new Product();
            prod.setId(rs.getInt("id"));
            prod.setDescription(rs.getString("description"));
            prod.setPrice(new Double(rs.getDouble("price")));
            return prod;
        }

    }

}

Также мой Product.Java ниже

public class Product implements Serializable {
    private int id;
    private String description;
    private Double price;

    public void setId(int i) {
        id = i;
    }

    public int getId() {
        return id;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Double getPrice() {
        return price;
    }

    public void setPrice(Double price) {
        this.price = price;
    }

    public String toString() {
        StringBuffer buffer = new StringBuffer();
        buffer.append("Description: " + description + ";");
        buffer.append("Price: " + price);
        return buffer.toString();
    }
}

Полагаю, мой вопрос будет Как изменится мой текущий класс после использования Hibernate + JPA с Entity Manager

Ответы [ 2 ]

0 голосов
/ 14 января 2010

Более того, я предлагаю вам прочитать эту статью: Общий DAO с Hibernate и Spring AOP , прежде чем принять решение о своем дизайне.

0 голосов
/ 14 января 2010

Вы проверили раздел 12.6. JPA из Глава 12. Доступ к данным объектно-реляционного отображения (ORM) в официальной документации? Все, что вам нужно знать, обсуждается там.

Если это опция, вы должны расширить базовый класс JpaDaoSupport, он предоставляет удобные методы, такие как get/setEntityManagerFactory и getJpaTemplate(), которые будут использоваться подклассами. Если нет, то введите EntityManagerFactory и введите его для создания JpaTemplate. См. Раздел 12.6.2. JpaTemplate и JpaDaoSupport для более подробной информации об этом.

Также взгляните на Начало работы с JPA весной 2.0 , чтобы получить более полный пример (пост блога немного устарел, но не устарел), который покажет вам, как переписать методы ваш DAO.

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