예제 순서
- spring_web_jdbc
- spring_web_jdbc_hw
오늘 공부 한 것
- pom 수정(디펜던시 추가)
- properties 수정
- maven update project
- 인코딩 필터(한글처리)
- home페이지에서 a태그를 통해 부서정보보기 url을 DeptController로 전달
ㅇ DeptControler를 거쳐 list 페이지로 이동
- list 페이지에서는 부서의 목록을 전체 나열
- deptdto 패키지 및 클래스 새성
ㅇ lombok 라이브러리 추가
@Data // 기본 생성자까지만 생성됨
@AllArgsConstructor // 매개변수 있는 생성자
@NoArgsConstructor // 기본 생성자
public class DeptDTO {
int deptno;
String dname;
String loc;
}
- dao 패키지 생성 및 클래스 생성
ㅇ dao 클래스 @Repository 지정
ㅇ DataSource 객체를 사용해서 DB접속 설정 정보를 넘겨 받을 것임
ㅁ @Autowired를 사용하여 자동 의존 주입
ㅇ 채워줘 이거는 필수는 아니야???
참조값이 없어도 되는 객체라면
@Autowired(required = false)
ㅇ db 연결정보를 xml에 추가
@Repository
public class OracleDAO {
@Autowired
DataSource dataSource;
Connection conn;
public List<DeptDTO> selectAll() {
try {
// 예외처리를 하도록 설계
conn = dataSource.getConnection();
System.out.println("conn :" + conn);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
- dataSource 객체를 사용해서 Connection 객체 쉽게 구현 가능
ㅇ spring이 알기 위해서 dao클래스 @repository : console dao객체 출력되는 것 확인
ㅁ namespace bean설정이 beans:bean 설정되어 있어서 기존설정과 다름
ㅁ bean 스키마에 dataSource 객체로 전달 할 dataSource를 설정
ㅁ 라이브러리 톰캣 추가 왜?
<beans:bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource">
<beans:property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></beans:property>
<beans:property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></beans:property>
<beans:property name="username" value="scott"></beans:property>
<beans:property name="password" value="tiger"></beans:property>
</beans:bean>
}
- CLUD 기능 구현
ㅇ DeptController에 OracleDao를 선언하고 의존 자동 주입(setter 사용)
ㅇ 전체 데이터 조회
ㅁ 매개변수 생성자에 데이터를 담아 전체 데이터를 출력
@RequestMapping("/deptList")
public String list(Model model) {
System.out.println("dao :" + dao);
model.addAttribute("msg", "목록보기");
model.addAttribute("list", dao.selectAll());
return "list";
}
}
ㅇ 데이터 1건 입력
ㅁ write url을 컨트롤러로 전달하여 get과 post로 분기점을 나눔
ㅁ get : write양식 페이지 post : form으로부터 전달받은 데이터를 테이블에 입력
ㅁ post시 파라미터를 modelAttribut로 전달 받음
ㅁ 전달받은 값을 테이블에 입력 후 redirect를 해서 list페이지로 돌아감
ㅁ logger info를 통해 다양한 정보를 console로 출력
ㅇ 데이터 1건 수정
ㅁ list페이지에서 dname 클릭시 a태그를 사용하여 부서번호를 detail url로
컨트롤러에 전달
ㅁ 데이터를 1건 조회
파라미터를 전달되지 않았을 때 기본값을 지정
ㅇ 데이터 1건 조회
ㅇ 데이터 1건 수정
ㅇ 데이터 1건 삭제
- db에 전달하는 값이 유사 해서 템플릿형태를 씀
- 정형화된 코드
- bean 추가
<beans:bean id="jdbc" class="org.springframework.jdbc.core.JdbcTemplate">
<beans:property name="dataSource" ref="dataSource"></beans:property>
</beans:bean>
- 안 받아지면 spring jdbc 추가 안해서 그럼
- dao에 datasource 객체를 사용 안 할 것
- jdbcTemplate jdbcTemplate 쓸 것 setter로 의존성 부여
// 자바 7버젼하고 8버젼하고 양식이 다름
// 자동의존 주입을 @setter를 쉽게 할 수 있다.
@Setter(onMethod = @__({@Autowired}))
JdbcTemplate jdbcTemplate;
jdbcTemplate.query(문장, 데이터를 매핑 해줄 매퍼)
- springjdbctemplate를 사용하여 clud 구현
- 익명 인터페이스
- 필터가 POST로 가는 한글을 인지가능하게 UTF-8로 변경해줌
빈에서 속성을 가지고 멤버
- db에 접근하여 기능 수행 후 자원 반납 할 것
ㅇ finally를 사용하여 실행 할 것
- 로거의 레벨 4가지
ㅇ sysout 사용 안 해도 console에 출력 다양한 정보를 볼 수 있음
- 커넥션풀링시 오류 나는 이유 : 커넥션 풀 데이터베이스에 미리 연결해놓는 것
ㅇ 잘 되다가 에러나는 이유? db 서버가 받아줄 한계를 넘어서서 그럼
ㅇ 개인당 잡는 커넥션풀의 수때문에 그럼.
- lombok 매개변수 생성자 지정하면 반대로 기본 생성자가 빠지니
기본 생성자까지 지정해줘야 된다.
- return 후 코드가 있으면 un ..?????
복습 할 것
tip.
용어
'자바 풀스택 교육 > Spring' 카테고리의 다른 글
Spring 교육정리 14일차 (0) | 2020.02.24 |
---|---|
Spring 교육정리 13일차 (0) | 2020.02.21 |
Spring 교육정리 11일차 (0) | 2020.02.19 |
Spring 교육정리 9일차 (0) | 2020.02.18 |
Spring 교육정리 8일차 (0) | 2020.02.17 |