2016-02-16 17 views
0

我有一個PostgreSQL數據庫以下TableStructure這應該是數據庫後端的Web應用程序我:

init_db.sql 春季啓動與JDBC:嵌套的對象建模

CREATE TABLE article (
    id integer NOT NULL, 
    name character varying NOT NULL, 
    type_id integer NOT NULL 
); 
CREATE TABLE article_type (
    id integer NOT NULL, 
    type_desc character varying NOT NULL 
); 
ALTER TABLE ONLY article 
ADD CONSTRAINT 
    article_type_id_fkey FOREIGN KEY (type_id) REFERENCES article_type(id); 

基本訪問這個工程(通過在application.properties中定義的DataSource對象並讓Spring Boot處理其餘部分)。我現在在理解如何在Spring Boot中訪問/建模這個問題方面遇到困難。目前我的模型類是這樣的:

ArticleType.java

public class ArticleType { 
    private Integer id; 
    private String name; 

    // Getters and Setters 
} 



Article.java

public class Article { 
    private Integer id; 
    private String name; 
    private String desc; 
    private ArticleType article_type; 

    // Getters and Setters 
} 

this例如,我正在建造這些類:

ArticleTypeRepository.java

@Repository 
public class ArticleTypeRepository { 

    @Autowired 
    protected JdbcTemplate jdbc; 

    public ArticleType getArticleType(int id) { 
     return jdbc.queryForObject("SELECT * FROM article.article_type WHERE id=?", articleTypeMapper, id); 
    } 

    private static final RowMapper<ArticleType> articleTypeMapper = new RowMapper<ArticleType>() { 
     public ArticleType mapRow(ResultSet rs, int rowNum) throws SQLException { 
      ArticleType articletype = new ArticleType(); 
      articletype.setId(rs.getInt("id")); 
      articletype.setName(rs.getString("type_desc")); 
      return articletype; 
     } 
    }; 

,併爲下列文件我的問題是:

ArticleRepository.java

@Repository 
public class ArticleRepository { 

    @Autowired 
    protected JdbcTemplate jdbc; 

    public Article getArticle(int id) { 
     return jdbc.queryForObject("SELECT * FROM article.article WHERE id=?", articleMapper, id); 
    } 

    private static final RowMapper<Article> articleMapper = new RowMapper<Article>() { 
     public Article mapRow(ResultSet rs, int rowNum) throws SQLException {   
      Article article = new Article(); 
      article.setId(rs.getInt("id")); 
      article.setName(rs.getString("name")); 
      // The following line is the one in question 
      // ArticleType at = getArticleType(Integer.parseInt(rs.getString("type_id"))); 
      article.setArticle_type(at); 
      article.setDesc(rs.getString("description")); 
      return article; 
     } 
    }; 

什麼是在這裏拿到ArticleType的最佳實踐文章?無論如何,這是不錯的做法來檢索這些對象?或者我應該在文章對象中使用一個純String對象並用視圖或其他東西來查詢它?我通過互聯網查看了「Spring Boot JDBC嵌套對象Java訪問建模」和類似的內容,但是找不到任何關於這個特定問題的真正提示或教程,這讓我想知道我是否在做一些概念上完全錯誤的事情。任何提示讚賞這裏(指南,文件的瀏覽,範式如何做到這一點正確等)

+0

爲什麼不使用Spring Data JPA? –

+0

Spring Data JPA是Spring Boot中的標準方法 –

+0

通過創建一個返回所需內容的查詢。編寫一個連接兩個表的select語句。 –

回答

0

我會加倍後M. Deinum的答案,因爲它讓我滾,直到我切換到休眠/ JPA:

通過創建一個返回所需內容的查詢。編寫一個連接兩個表的select 語句。