본문 바로가기

Dev.BackEnd

(66)
#SLiPP Spring boot, JPA 강의 - 반복주기 3 이 포스팅은 다음 강의를 바탕으로 작성되었습니다.>> SLiPP 자바 웹 애플리케이션 개발 >>반복주기3내용1. H2 데이터베이스 연동하기 2. 데이터베이스 조작하여 값 추가하기 3. HTML, URL Refactoring 4. 개인정보 수정 기능 구현하기 1. H2 데이터베이스를 사용하여 프로젝트에 데이터베이스 사용! H2 데이터베이스는 JAVA로 작성된 RDBMS이다. spring-boot jpa 를 이용한다. JPA에 대한 설명은 다음 포스팅을 참고하길 바란다. >> ORM에 대한 포스팅 >> H2 데이터베이스는 별도의 설치가 필요하지 않다. 데이터베이스 실습을 위해 mysql을 설치해본 사람이라면 데이터베이스를 별도의 설치과정 없이 사용할 수 있다는 장점이 얼마나 큰 것인지를 알 수 있을 것이다...
#SLiPP Spring Boot, JPA 강의 - 반복주기 2 이 포스팅은 다음 강의를 바탕으로 작성되었습니다.>> SLiPP 자바 웹 애플리케이션 개발 >>반복주기2 학습내용 동적인 HTML 웹 페이지 개발할 수 있다. Spring MVC의 Model, View, Controller 에 대한 이해를 한다. + 강의 상 약간의 오타! form.html에서 E-mail을 입력받을 수 있는 input 태그를 추가하면서 로 해줘야 한다! 지난 번 강의와 html이 약간 차이가 난다. 이러한 부분이 신경쓰인다면 강의 github에 가서 clone 으로 내려받은 다음 이번 반복주기를 들어가자. 강의들을 때는 몰랐는데, 혼자 복습 과정 중 '삽질'했던 부분강의를 들을 때는 ‘음, 당연하지, 그렇지.' 하면서 쉽다고 느껴졌던 부분이 혼자 새하얀 에디터에서 부터 시작하려니 막막한..
#SLiPP Spring Boot, JPA 강의 - 반복주기 1 이 포스팅은 다음 강의를 바탕으로 작성되었습니다.>> SLiPP 자바 웹 애플리케이션 개발 >> 반복주기 1Spring boot에 대해서초기 스프링은 구성에 필요한 XML 코드가 많았다. 이를 극복하기 위한 수 많은 노력들이 있었다. 그러나 스프링 고유의 복잡한 구성에서 벗어나지 못했다. 모든 구성 작업은 개발 저항으로 타나난다. 애플리케이션 로직 작성 대신 구성 작업에 쓰는 시간은 모두 낭비다. 스프링 기능 구성에 신경을 쓰게 되면 비즈니스 로직을 설계하는데 방해가 되기 때문이다. 스프링은 많은 일을 대신 처리하지만, 개발자가 해야 할 부분도 함께 늘어나는 것이다. 게다가 어떤 라이브러리를 프로젝트 비륻에 포함해야 하는지 결정하는 일은 까다롭다. 의존성 관리는 중요한 문제지만, 또 다른 저항이 된다. ..
[JAVA] 15. Thread ( 스레드 ) 쓰레드 실행 중인 프로그램 을 프로세스라 한다. 프로세스 내부에 둘 이상의 쓰레드가 존재할 수 있다. 어떤 프로세스든 간에 쓰레드가 하나 이상 수행된다. 아무런 쓰레드를 생성하지 않아도 JVM을 관리하기 위한 여러 쓰레드가 존재한다. 왜 쓰레드라는 것을 만들었을까. 하나의 작업을 동시에 수행하려고 할 때 여러 개의 프로세스를 띄워서 실행하려면 각각 메모리를 할당해 주어야만 한다. 그에 반해, 쓰레드를 하나 추가하면 더 적은 메모리를 점유하게 된다. 어떤 작업을 할 때 단일 쓰레드로 실행하는 것보다는 다중 쓰레드로 실행하는 것이 더 시간이 적게 걸린다. 자바에서는 쓰레드도 하나의 인스턴스로 정의한다. 쓰레드는 쓰레드만의 main메소드를 지닌다. 단 이름은 main이 아니라 run이다. 쓰레드를 생성하는 방..
#미니 MVC FrameWork 작동원리 정리 First, 웹 애플리케이션의 실행WAS가 실행되면 서블릿 컨테이너( Tomcat )가 '메소드' 를 호출한다.이 메소드는 ContextLoaderListener.java 에 있는 contextInitialized(event) 메소드이다.실행이라는 event를 인자로 받아 실행되는 것이다.ContextLoaderListener 클래스는 ServletContextListener라는 인터페이스를 구현하고 있다.WAS의 실행을 Listen하고 있는 것이다. contextInitialized(event) 메소드의 역할이 메소드는 ServletContext 저장소에서 propertiespath를 꺼내온다.그리고 이 propertiespath를 이용하여 ApplicationContext 클래스를 생성한다.이 App..
#미니 MVC FrameWork 만들기 네번째 단계, 의존성 주입 자동화 미니 MVC Framework 만들기 네번째 단계,프로퍼티와 어노테이션을 활용한 의존성 주입 자동화. 문제점 착안, 지금까지, 각 요청에 따른 페이지 컨트롤러를 생성하고, DAO객체를 주입하는 과정을 하드코딩을 통해 해결했다. 그 결과 ContextLoaderListener 클래스가 매우 지저분해졌다. 이를 해결하기 위해 프로퍼티 파일과 어노테이션을 이용하여, 객체를 생성하고 의존성을 주입하는 부분을 자동화할 것이다. 해결방안,프로퍼티 파일에 설정된 객체와 어노테이션을 통해 설정된 객체를 준비하는 일을 할 ApplicationContext라는 클래스를 만든다. 이 클래스는 ContextLoaderListener에 의해 호출된다. 구체화,ContextLoaderListener> 웹 애플리케이션이 실행되면서..
#미니 MVC FrameWork 만들기 세번째 단계, 프런트 컨트롤러 자동화 미니 MVC Framework 만들기 세번째 단계,리플랙션 API를 이용하여 프런트 컨트롤러를 자동화 하자. 문제점 착안, 프런트 컨트롤러에서 VO 객체를 생성하는 부분이 상당히 지저분하다. 각 요청에 따른 Member 객체를 생성해야하기 때문이다. 나중에 요청이 개수가 더 많아질 경우에, 그에 맞는 VO를 또 생성하는 코드를 작성하는 것은 유지보수성을 떨어뜨린다. 해결방안,DataBinding을 이용하자. getBinder라는 메소드를 선언하는 DataBinding Interface를 만들고, 각각의 페이지 컨트롤러들이 DataBinding Interface를 구현한다. 페이지 컨트롤러는 이 getBinder라는 메소드를 통해 프런트 컨트롤러에게 요청에 필요한 DataName과 DataType을 전달한..
#미니 MVC FrameWork 만들기 두번째 단계, DAO 조작 미니 MVC Framework 만들기 두번째 단계,MemberDao Interface를 통한 다형성 핸들링,Dao를 외부로부터 주입받아 의존성을 주입하자. 문제점 착안,현재까지는 MemberDao를 ContextLoaderListener에서 생성하여 ServletContext에 보관한 다음에, 각각의 서블릿에서 꺼내 사용하였다. 이렇게 되면 각각의 서블릿에서 중복되는 코드가 발생하며 유지보수성이 떨어지게 된다. 그리고 MemberDao 클래스에 작성된 쿼리문들은 Mysql기반으로 작성되어 있다.만약에, 서비스를 구축하고 있는 데이터베이스의 종류가 변경된다면,쿼리문 뿐만 아니라, MemberDao에 관련된 코드들을 모두 수정해야하는 상황이 발생한다. 해결방안,각각의 페이지 컨트롤러에는 MemberDao를 ..