Developer Note/국비과정 수업내용 정리&저장 83

24년 11월 14일

스프링에서의 트랜잭션스프링에서도 SQL 을 배울 때 처럼 CRUD 를 사용할 때 예외가 발생한다면 중간에 있는 코드가 실행되지 않게 하는 트랜잭션 처리를 해주어야 하는데 이 때 여러가지 기술들을 사용하게 된다.알아보자.스프링 트랜잭션 의존성 추가 org.springframework spring-tx ${org.springframework-version} 의존성 추가할 때 버전 맞추는법 : ${org.springframework-version}이 부분에서 기존 버전을 지우고 안에 ${org.springframework-version} 을 써주면 동적으로 스프링의 버전과 일치시켜준다.스프링 설정을 할 때보면 버전을 맞추는게 있고 따로 있는게 있는데, 이런거는 기본적으로 알아놔야 한다고함..

24년 11월 13일

myBatis우선 마이바티스 의존성을 Maven Repository에서 받아서 pom.xml 에 의존 추가해야한다. org.mybatis mybatis 3.5.16 org.mybatis mybatis-spring 2.0.7  pom.xml 파일에 의존성 추가 (maven reposiroty)MyBatis에서 SQL 구문은 SqlSession을 통해 실행되며 쓰레드마다 별도의 SqlSession 인스턴스를 가집니다.(SqlSession 인스턴스는 쓰레드간 공유되지 않습니다.) SqlSession의 생명주기는 client 요청시 생성되고 역할을 수행한 뒤 소멸합니다. (SqlSessionFactory는 싱글턴 형태로 단 한개만 생성되며 어플리케이션이 실행되고 있는 동..

24년 11월 12일

오늘도 스프링 정진중.. 코드를 일일히 치는건 줄었지만 그 대신 각 어노테이션들의 기능을 알아야 제대로 사용할 수 있기 때문에 외워야 할 게 많다.그리고 의존을 추가하면 항상 Maven Update 버튼을 눌러주자 !Data Validation (데이터 유효성 검사)WebDataBinder간단히 보면 유효성감사를 수행하는 클래스.주로 Form 데이터를 처리하고 모델 객체에 바인딩하는데 사용한다.스프링의 바인더는 기본적으로 String 형태로 받은 다음 자기가 알아서 형변환을 해서 처리해서 돌려줌여기서 사용하는 어노테이션들을 알아보자 !InitBinder해당 Controller로 들어오는 요청에 대해추가적인 설정을 하고 싶을 때 사용할 수 있다.또한 모든 요청 전에전역적으로 적용되는 초기화 작업 수행할 때..

24년 11월 11일

스프링 시작lombok : 자동으로 getter , setter , toString 등 다양한 코드를 자동완성 시켜주는 라이브러리@Data //getter,setter , toString 을 자동완성 시켜준다@Builder //빌더 패턴을 적용시켜준다@NoArgsConstructor //기본 생성자 자동생성@AllArgsConstructor //매개변수 생성자 자동생성public class PersonDto { private String name; private int age; private String addr;여기서 빌더패턴이란 , 매개변수 생성자는 순서에 맞게 무조건 객체를 만들어야 하는데 이게 나중에 코드가 많아지면 순서가 헷갈릴수도 있고 몇개를 안써서 오버로딩을 해야할 때도 있는데 빌더패턴..

24년 11월 08일

이제부터 슬슬 스프링을 배우기 위한 단계로 진입한다.이때까지 간간히 유데미에서 스프링 강의를 보았지만 그 당시에는 이해가 하나도 안됐었는데 ,확실히 여기서 자바코드로 MVC패턴에 대해서 이해를 하고 나니 확실히 조금씩 이해가 가기 시작한다.FRAMEWORK란작업에 필요한 여러가지 것들을 따로 직접 구할 필요없이 FRAME내에서 가져와서 쓸수있도록 제공하는 틀FRAMEWORK / LIBRARY / API 차이- 능동/수동 UTILITY POSITION 개발자POSITIONFRAMEWORK능동제작을 의뢰조건 제공LIBRARY수동직접 도구를 사용하서 제작직접 사용API능동프로그램간(or 시스템-프로그램 간) 연결통신API는 크게 두 가지 방식으로 나뉩니다:REST API: HTTP 프로토콜을 사용하며, 대부분..

24년 11월 06일

Enum 이란 ? (열거형 클래스)미리 정의된 상수들의 특별한 집합enum (enumeration number) : 즉 상수들을 열거한 것이 enum이다.enum에 열거된 상수들은 추가적인 객체 생성 없이 외부에서 사용이 가능하다.그리고 상수들 앞에 아무런 자료형이 붙지 않지만 기본적으로 public static final 이다.기본적으로 final 인 상수이기 때문에 모두 대문자로 적는것을 원칙으로 한다.사용이유 :가독성증가. 코드가 단순해진다.컴파일 시 데이터 타입 및 유효성 체크를 할 수 있다.허용 가능한 값 제한가능수정 시 변경 범위가 최소화 된다.사용 함수ordinal : 열개 객체의 순번(0부터 시작)을 리턴name() : 열거 객체의 문자열을 리턴values() : 모든 열거 객체들을 배열로..

24년 11월 7일

mvc 흐름 :topHeader 에서 로그인 버튼을 누른다→ 누르면 이건 get 방식으로 controller 에 요청을 보냄.→ controller 에서 get 방식으로 endPoint 를 받아 특정 SubController 로 보내서 기능을 수행하게 한다.→특정 컨트롤러에서 메서드가 get 방식이라면 로그인 페이지로 포워딩을 한다. (여기서 약간 헷갈림. 이 단계에서는 아무 정보도 없는데 포워딩할 필요가 있나 ? )→ 로그인 페이지에서 post 방식으로 데이터를 다시 보낸다.→보낸 데이터를 컨트롤러에서 파라미터로 받는다. (여기서 파라미터는 name 같은 데이터들임)→ 파라미터를 받아서 특정 작업들을 수행한다. service , dao 같은 데이터에 접근을 하는 기능을 수행시킴.→ 기능이 수행되고 나면..

24년 11월 5일

오전동기 비동기 ?비동기 처리로 하는 작업.ajax ? axios ? 를 사용해서 하는 비동기 작업 처리. AJAX  란둘 다 라이브러리는 아니고 AJAX 란 Asynchronous JavaScript and XML의 약자로자바스크립트와 xml 을 이용한 비동기적 정보 교환 기법이다.요새는 xml보다는 json을 주로 사용한다고 함.동기 , 비동기란 ?동기직렬적 방식으로 태스크를 수행하는 방식이다.요청을 보낸 후 응답을 받아야 다음 동작이 이루어지는 방식이다.어떠한 태스크를 처리할 동안 나머지 태스크는 대기한다.실제 성능이 저하되는건 아니지만 , 시스템의 전체적인 효율이 저하된다.비동기병렬적 방식으로 태스크를 수행하는 방식요청의 응답 수락 여부와는 상관없이 다음 태스크가 동작하는 방식이다. 예)a 태스크..

24년 11월 4일

학원에서 다 처리하지 못한 문제들을 집에와서 풀어보고 있는 중이다.. 해결해야 될 점을 몇가지 보자면 1. 도서 조회 페이지에서 전체로 특정 키워드 조회했을 때 문자열 포함한 검색결과 나와야하는데 안나옴2. 조회에서 bookCode 눌렀을 때 add페이지에서 빈 칸안에 책 정보가 적혀있는 read 페이지로 포워딩 처리 되어야 하는데 안됨3. 수정페이지까지는 갔는데 수정하기 버튼 눌렀을 때 예외가 뜸4. Exception 발생..java.lang.NumberFormatException: update 페이지5. 로그인페이지에서 로그인 누르면 index로 가게해야함. 한번 해결해보도록 하자.집에와서 해보는 풀이지금 join페이지에서 회원가입을 진행하면 error가 떠서 해결하는중이다. try { //Met..

24년 11월 1일

오늘은 MVC패턴으로 실제 웹사이트 만드는 작업중.CRUD 기능을 포함하고 있고 , Servlet 과 jsp 를 나누어서 작업한다. 이클립스 dynamic web project 생성해서 사용.webapp 폴더에 resources 라는 공통적으로 사용할 header 나 footer같은 jsp 파일들 작성.css나 js 같은 공통적으로 적용할 css 나 개별 페이지에 적용할 파일들도 이곳에 저장.webapp 폴더안에서 개발자 외에 타인이 접근할 수 없게 jsp 파일은 WEB-INF 폴더 안에 생성한다.lib 폴더안은 각종 라이브러리를 넣는다.안에서 세세하게 user,book 사용자별 나누고 , 같은 폴더 안 페이지별로 나눈다.header나 footer 같은 jsp 파일 불러올때는 include태그를 사용한다..