[SPRING] JdbcDaoSupport는 무엇을 위해 사용됩니까?
SPRINGJdbcDaoSupport는 무엇을 위해 사용됩니까?
Spring에서는 데이터베이스에 삽입 할 때 JdbcDaoSupport를 사용할 수 있는지 여부를 결정할 수 있습니다. 내 질문은, 그것을 사용하는 장점은 무엇이며 어떤 상황에서 사용해야 하는가?
해결법
-
==============================
1.이 답변에 따르면 :
이 답변에 따르면 :
JdbcDaoSupport, NamedParameterJdbcDaoSupport, SimpleJdbcDaoSupport는 불필요하며 정신적 인 먼지입니다. 데이터 소스 나 템플릿을 삽입해야하기 때문에 코드 줄을 저장하지 않습니다.
내가 추천하는 것은 - 데이터 소스마다 XML / 클래스 구성에서 템플릿을 만들고 템플릿으로 재사용 / 삽입하는 것은 문서에 따라 스레드로부터 안전합니다.
Once configured, a JdbcTemplate instance is threadsafe. You may want multiple JdbcTemplate instances if your application accesses multiple databases, which requires multiple DataSources, and subsequently multiple differently configured JdbcTemplates.
applicationContext.xml 비교 :
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate"> <constructor-arg ref="dataSource"/> </bean>
및 YourDaoImpl.java :
public class YourDaoImpl implements YourDao { @Autowired private NamedParameterJdbcTemplate jdbcTemplate; @Override public int tableExists(String table) { String sql = "select count(*) from all_tables" + " where table_name = :tbl"; return jdbcTemplate.queryForObject( sql, new MapSqlParameterSource("tbl", table), Integer.class); } }
JdbcDaoSupport :
public class YourDaoImpl extends NamedParameterJdbcDaoSupport implements YourDao { @Autowired public void setDs(DataSource dataSource) { setDataSource(dataSource); } @Override public int tableExists(String table) { String sql = "select count(*) from all_tables" + " where table_name = :tbl"; return getNamedParameterJdbcTemplate() .queryForObject( sql, new MapSqlParameterSource("tbl", table), Integer.class); } }
UPDATE JdbcTemplate / NamedParameterJdbcTemplate의 무국적 (그리고 쓰래드 안전성)에 대한 공식 진술은 여기 https://jira.springsource.org/browse/SPR-11478
-
==============================
2.첫 번째는 API가이 클래스를 편의 클래스 ( "지원")로 지정한다는 것을 알려줍니다. JdbcDaoSupport가 지원하는 것으로, 일명 템플릿 클래스 (템플릿 패턴 참조)가 DAO 클래스에 삽입하는 데 사용되는 싱글 톤을 제공하지만 jdbc에 대한 DAO 디자인의 기본 구현을 제공합니다.
첫 번째는 API가이 클래스를 편의 클래스 ( "지원")로 지정한다는 것을 알려줍니다. JdbcDaoSupport가 지원하는 것으로, 일명 템플릿 클래스 (템플릿 패턴 참조)가 DAO 클래스에 삽입하는 데 사용되는 싱글 톤을 제공하지만 jdbc에 대한 DAO 디자인의 기본 구현을 제공합니다.
내 경험상 DAO를 * 지원 클래스에 연결할 이유를 찾지 못했습니다. 대신 특정 jdbcTemplate 빈을 작성하고이를 상속에 대한 컴포지션을 선호하는 내 DAO 클래스에 주입합니다. 일반적으로 객체 지향적 인 좋은 방법입니다.
Spring 문서에서 "이 클래스에서 상속할지 여부를 선택할 수 있습니다 .JdbcDaoSupport 클래스는 편의상 제공됩니다."
Spring 상태에서 JdbcDaoSupport는 편의상 제공됩니다. 템플릿 구현 중 하나를 사용하는 것보다 장점에 대해서는 말하지 않습니다.
from https://stackoverflow.com/questions/21519940/what-is-jdbcdaosupport-used-for by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 웹 소켓에서 주제를 구독하는 모든 사용자를 찾는 방법 (0) | 2019.01.11 |
---|---|
[SPRING] JSON을 REST API에 게시 (0) | 2019.01.11 |
[SPRING] Weblogic에 스프링 부트 응용 프로그램 배포 (0) | 2019.01.11 |
[SPRING] 왜 트랜잭션은 RuntimeException에서 롤백하지만 SQLException은 그렇지 않다. (0) | 2019.01.11 |
[SPRING] 스프링 빈 정의의 우선 순위는 무엇입니까? (0) | 2019.01.11 |