관리 메뉴

진취적 삶

8.5 MemberDao 테스트하기 본문

스프링 5 프로그래밍 입문/8.DB 연동

8.5 MemberDao 테스트하기

hp0724 2023. 9. 11. 08:58
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

bookmark

<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 추가