1. DBConnectionTest1
public class DBConnectionTest {
public static void main(String[] args) throws Exception {
// 스키마의 이름(springbasic)이 다른 경우 알맞게 변경해야 함
String DB_URL = "jdbc:mysql://localhost:3306?useUnicode=true&characterEncoding=utf8";
// DB의 userid와 pwd를 알맞게 변경해야 함
String DB_USER = "root";
String DB_PASSWORD = "4862";
Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD); // 데이터베이스의 연결을 얻는다.
Statement stmt = conn.createStatement(); // Statement를 생성한다.
String query = "SELECT now()"; // 시스템의 현재 날짜시간을 출력하는 쿼리(query)
ResultSet rs = stmt.executeQuery(query); // query를 실행한 결과를 rs에 담는다.
// 실행결과가 담긴 rs에서 한 줄씩 읽어서 출력
while (rs.next()) {
String curDate = rs.getString(1); // 읽어온 행의 첫번째 컬럼의 값을 String으로 읽어서 curDate에 저장
System.out.println(curDate); // 2022-01-11 13:53:00.0
}
} // main()
}
- No suitable driver found 에러가 나올때... JDBC Driver가 필요
- 가장 최신버전을 받아주었다.
- pom.xml에 넣고 리로드 해주면...
- ResultSet은 2차원 형태로 테이블을 가져온다.
- JDBC API : Java DB Connection(연결) -> Spring JDBC
- pom.xml에 추가해주고, 스프링 버전과 일치하게 맞춰준다
public class DBConnectionTest2 {
@Test
public void jdbcConnectionTest() throws Exception {
// // 스키마의 이름(springbasic)이 다른 경우 알맞게 변경
// String DB_URL = "jdbc:mysql://localhost:3306/springbasic?useUnicode=true&characterEncoding=utf8";
//
// // DB의 userid와 pwd를 알맞게 변경
// String DB_USER = "asdf";
// String DB_PASSWORD = "1234";
// String DB_DRIVER = "com.mysql.jdbc.Driver";
//
// DriverManagerDataSource ds = new DriverManagerDataSource();
// ds.setDriverClassName(DB_DRIVER);
// ds.setUrl(DB_URL);
// ds.setUsername(DB_USER);
// ds.setPassword(DB_PASSWORD);
ApplicationContext ac = new GenericXmlApplicationContext("file:src/main/webapp/WEB-INF/spring/**/root-context.xml");
DataSource ds = ac.getBean(DataSource.class);
Connection conn = ds.getConnection(); // 데이터베이스의 연결을 얻는다.
System.out.println("conn = " + conn);
assertTrue(conn != null);
}
}
- @Test 애너테이션이 안된다면... Junit을 받아주자
- root-context.xml에 코드를 추가
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/springbasic?useUnicode=true&characterEncoding=utf8"></property>
<property name="username" value="asdf"></property>
<property name="password" value="1234"></property>
</bean>
</beans>
- url과 username, password를 잘 바꿔주면...
- Test 성공 이라고 나온다 위에 빨간 글씨는 jdbc.Driver가 deprecated 되었음을 알려주는거라 신경쓰지말자
- assertTrue : 괄호 안의 조건식이 ture면, 테스트 성공, 아니면 실패
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"file:src/main/webapp/WEB-INF/root-context.xml"})
public class DBConnectionTest3 {
@Autowired
DataSource ds;
@Test
public void jdbcConnectionTest() throws Exception {
Connection conn = ds.getConnection(); // 데이터베이스의 연결을 얻는다.
System.out.println("conn = " + conn);
assertTrue(conn!=null);
}
}
- 빨간 줄이 나와서 안나오게 고치려고 했으나 오히려 빨간줄일때 컴파일이 성공했다...
- @Test가 안된다면 pom.xml에서 <scope>test</scope>를 삭제해보자
- 파일경로와 @Autowired는 빨간줄이 나와도 당황하지 말자...
- Test 성공이라고 나온다.
- SpringJUnit4ClassRunner.class가 자동으로 ApplicationContext를 만들어준다.
- 메서드 내에서 반복적으로 AC를 생성하는 것보다 성능향상이된다.
- JUnit 버젼은 4.12 이상이어야한다.
- 데이터베이스 연결성공, 인텔리제이가 제공하는 데이터베이스 연결기능을 사용해보자
- 인텔리제이 오른쪽에 DB를 선택
- 아이디와 비밀번호를 넣어주고
- Download missing driver files가 나오는데 Download를 눌러주면된다.
- Test Connetion까지 마치면 OK
- Schema를 생성하고 Table을 생성해주었다.
use spring;
create table user_Info(
id VARCHAR(30) primary key,
pwd VARCHAR(50),
name VARCHAR(30),
email VARCHAR(30),
birth DATE,
sns VARCHAR(30),
reg_date datetime
);
- 만들어진 테이블을 보면...
select * from user_Info;
- insert가 없어서 아무것도 없는 모습
- 트렌잭션이 Auto로 되어있는데 쿼리문을 실행할때마다 자동으로 commit이 된다.
- Manual로 바꿔주면 커밋버튼과 롤백버튼이 생긴다.
- Query Console을 누르면 SQL콘솔창이 열린다.
- *에 마우스를 가져가보면 노란 전구가 나오는데 저기서 Expand column list를 눌러주면...
- user_Info에 집어넣은 컬럼들이 자동으로 나온다.
- Insert문 자동 생성
insert into user_info (id, pwd, name, email, birth, sns, reg_date)
values ('asdf2', '1234', 'smith', 'aaa@aaa.com', '2021-01-01', 'facebook', now());
- insert를 해주면...
- 데이터베이스에 저장이된 모습
'Spring DI, AOP' 카테고리의 다른 글
14. DAO의 작성과 적용(1) - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.02.26 |
---|---|
13. Spring으로 DB다루기/TDD - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.02.26 |
11. 데이터 모델링이란 - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.02.25 |
10. AOP의 원리와 용어 - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.02.24 |
9. 외부 설정 사용하기 - 패스트캠퍼스 백엔드 부트캠프 3기 (2) | 2025.02.24 |