我有一個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訪問建模」和類似的內容,但是找不到任何關於這個特定問題的真正提示或教程,這讓我想知道我是否在做一些概念上完全錯誤的事情。任何提示讚賞這裏(指南,文件的瀏覽,範式如何做到這一點正確等)
爲什麼不使用Spring Data JPA? –
Spring Data JPA是Spring Boot中的標準方法 –
通過創建一個返回所需內容的查詢。編寫一個連接兩個表的select語句。 –