2012-01-22 6 views
2

첫 번째 Spring 프로젝트에서 mysql 데이터베이스에 연결하려고하는데 정말 간단한 것을 간과하는 것처럼 보입니다.DataBase 풀링 - Spring3 MVC에 Mysql 데이터베이스에 연결하기

나는이 bean을 내 application-context.xml 파일에 주석으로 처리했습니다!

<bean id="dataSource" 
     class="org.springframework.jdbc.datasource.DriverManagerDataSource" 
     p:driverClassName="${jdbc.driverClassName}" 
     p:url="${jdbc.url}" 
     p:username="${jdbc.username}" 
     p:password="${jdbc.password}" /> 

나는 여기에서 무엇을해야합니까,이 바보 같은 소리를하려고하지만, JDBC와 또는 스프링의 JdbcTemplate을 사용하여 MySQL 데이터베이스에 연결하는 클래스를 생성하기 위해 알고?

위의 빈에서 속성을 채우는 방법에 대해 혼란스러워합니다. 이처럼 수퍼 클래스에서 수행 한 다음 내 하위 클래스를 확장합니다.

import org.springframework.jdbc.datasource.DriverManagerDataSource; 

public class JdbcDao { 
    protected DriverManagerDataSource dataSource = new DriverManagerDataSource(); 
    JdbcDao(){ 
     dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 
     dataSource.setUrl("jdbc:mysql://localhost/db_name"); 
     dataSource.setUsername("bcash"); 
     dataSource.setPassword("");   
    }  
} 

나는 더 정보를 원하시면 JdbcTemplate Best Practices을 참조

많은 감사

+0

정교하게 말하십시오 – user866190

답변

1

을 그래서 어떤 도움이 진정으로 apprecated되어 혼란 스러워요.

Nutshell : 아니요, DAO는 new을 통해 새 데이터 소스를 만들지 않습니다. 그것은 Spring을 사용하는 목적을 무효화시킵니다. 구현은 직접 인스턴스화하지 않고 주입해야합니다. 약 :

또한 대략 당신의 봄 설정에서 다음
public class TheDaoImpl implements TheDao { 

    private JdbcTemplate jdbcTemplate; 

    public void setDataSource(DataSource dataSource) { 
     this.jdbcTemplate = new JdbcTemplate(dataSource); 
    } 

    // JDBC-backed implementations of TheDao follow... 
} 

(주석을 사용하지 않는 경우) :

<bean id="theDao" class="com.bar.plugh.TheDaoImpl" p:dataSource-ref="dataSource" /> 

(이것은 세터를 사용하여, 당신은 또한 주석을 사용하고 XML 설정을 건너 뛸 수 있습니다.)

JdbcTemplate을 기본 클래스로 사용하여 더 많은 에너지를 절약 할 수 있습니다.

Data access with JDBC 참조 문서 (JDBC를 사용하는 경우) 또는 ORM 선택 항목을 직접 처리하는 해당 섹션으로 이동하는 것이 좋습니다.

+0

답변을 주셔서 감사합니다. 데이브가 데이터 소스를 어떻게 구성합니까? context-xml 파일에 값을 입력하여 완료 했습니까? – user866190

+0

@ user866190 예, PropertyPlaceholderConfigurator를 사용할 것으로 예상되는 것처럼 보입니다. –

2

응용 프로그램 서버로 Tomcat을 사용하는 경우 다음과 같이 할 수 있습니다.

(응용 프로그램에서 반대) 서버의의 context.xml 파일에 사용자 이름/암호를 사용하여 연결을 정의 : 다음

<Resource name="jdbc/resourceNameToUse" 
      auth="Container" 
      type="javax.sql.DataSource" 
      username="<UserName>" 
      password="<Password>" 
      driverName="com.mysql.jdbc.Driver" 
      url="jdbc:mysql://localhost:3306/db_name" 
      maxActive="100" 
      maxIdle="5" 
      validationQuery="Select 1" 
      useCompression="true" /> 

을 당신이 봄을 구성 할 때 당신은 조회 데이터 소스를 만들려면 사용하여 JNDI 위에 정의 된 리소스 :

:이 시점에서

<bean id="targetDataSource" 
     class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" 
       value="java:comp/env/jdbc/resourceNameToUse"/> 
    </bean> 
    <bean id="dataSource" 
     class="org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy"> 
    <property name="targetDataSource"> 
     <ref local="targetDataSource"/> 
    </property> 
    </bean> 

당신은 당신의 데이터 소스를 참조하는 스프링 빈으로 당신의 JdbcTemplate의 인스턴스를 만들 수 있습니다

스프링 3을 사용하는 경우 DAO의 JdbcTemplate을 @AutoWired으로 간단히 표시 할 수 있으며 Spring은 변수 이름을 정의한 bean의 ID와 일치시키고 JdbcTemplate을 삽입합니다. Spring 3을 사용하지 않는다면, DAO 빈을 정의 할 때 JdbcTemplate을 삽입하면됩니다.

public class MyDao { 
    @AutoWired 
    private JdbcTemplate jdbcTemplate; 
} 
관련 문제