진취적 삶
8.5 MemberDao 테스트하기 본문
public class MainForMemberDao {
private static MemberDao memberDao;
public static void main(String[] args) throws WrongIdPasswordException {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AppCtx.class);
memberDao = ctx.getBean(MemberDao.class);
selectAll();
updateMember();
insertMember();
}
private static void selectAll() {
System.out.println("----------seletAll");
int total = memberDao.count();
System.out.println("전체 데이터 "+total);
//collection 인지 List 인지 확인
List<Member> members = memberDao.selectAll();
for (Member m :members) {
System.out.println(m.getId()+":"+m.getEmail()+":"+m.getName());
}
}
private static void updateMember() throws WrongIdPasswordException {
System.out.println("----------updateMember");
Member member = memberDao.selectByEmail("hp0724@naver.com");
String oldPw = member.getPassword();
String newPw = Double.toHexString(Math.random());
member.changePassword(oldPw, newPw);
memberDao.update(member);
System.out.println("암호 변경 " + oldPw +" > " + newPw);
}
private static DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMddHHmmss");
private static void insertMember() {
System.out.println("----------insertMember");
String prefix = formatter.format(LocalDateTime.now());
Member member = new Member(prefix+"@test.com", prefix, prefix,LocalDateTime.now());
memberDao.insert(member);
System.out.println(member.getId()+"데이터 추가");
}
}
8.5.1 익셉션 발생
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
Caused by: javax.net.ssl.SSLException: Received fatal alert: protocol_version
at sun.security.ssl.Alerts.getSSLException(Unknown Source)
at sun.security.ssl.Alerts.getSSLException(Unknown Source)
at sun.security.ssl.SSLSocketImpl.recvAlert(Unknown Source)
at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:188)
... 35 more
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
버젼 호환이 안되서 발생하는 에러 였음
public DataSource dataSource(){
DataSource ds = new DataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost/spring5fs?characterEncoding=utf8&serverTimezone=UTC");
ds.setUsername("root");
ds.setPassword("jj91927024!");
ds.setInitialSize(5);
ds.setMaxActive(20);
ds.setMaxIdle(10);
ds.setTestWhileIdle(true);
ds.setMinEvictableIdleTimeMillis(1000*60*3); //3분
ds.setTimeBetweenEvictionRunsMillis(1000*10);
return ds;
}
timeZone 추가
'스프링 5 프로그래밍 입문 > 8.DB 연동' 카테고리의 다른 글
8.3 DataSource 설정 (0) | 2023.09.11 |
---|---|
8.4 JdbcTemplate 을 이용한 쿼리 실행 (0) | 2023.09.11 |
8.6 스프링의 익셉션 변환 처리 (0) | 2023.09.11 |
8.7 트랜잭션 처리 (0) | 2023.09.11 |
8.8 전체 기능 연동한 코드 실행 (0) | 2023.09.11 |