예제 순서

- 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

+ Recent posts