본문 바로가기

반응형

분류 전체보기

(65)
FirstSpringBoard#4-1] 마이바티스(Mybatis)와 스프링 프레임워크(Spring FrameWork) 연동 안녕하세요. 이제 드디어 스프링 설정을 하게되었습니다. 포스팅 제목이 FirstSpringBoard인데 여태 진행 사항을 보면서 "스프링도 자바 코딩과 다를게 없잖아?"라고 의구심이 드셨을 수도 있어요. 이제 부터 본격적으로 스프링을 이용해서 프로젝트를 구현해나갈 겁니다. 우선 우리가 사용할 기능은 DI(Dependenxy Injection)입니다. 우리말로는 의존성 주입이라고 해요. BoardDAO에서 SqlSession이나 ServiceBoardImpl에서 BoardDAO의 객체를 생성해서 사용해 주잖아요. BoardDAO boardDAO = new BoardDAO() 이런 식으로요. 스프링 의존성 주입을 사용하면 new 키워드를 사용한 객체 생성없이 스프링에서 객체를 생성해서 변수에 주입을 해줍니다..
FirstSpringBoard#3-4] Service 인터페이스 구현 & 테스트 코드 수정 안녕하세요.저번 시간에 DAO를 직접 호출하는 방법보다 Service인터페이스와 구현 클래스를 이용해서 간접적으로 DB연동 메소드를 호출하는 것이 기능의 변경과 확장에서 더 유용하고 스프링의 AOP 기능을 적용하는 것이 더 좋다고 설명했었죠.그리고 클래스 다이어그램을 보여드리면서 직접 구현해보는 것을 추천해드렸어요.아마 타이핑하기 귀찮다고 느끼셨을 수도 있어요.이번시간에는 IDE의 기능을 적극 활용해서 인터페이스를 만들어서 변경사항을 반영할게요.IDE에서는 변수와 클래스의 자동완성기능을 제공합니다. 그리고 자바빈 규약에 맞게 getter와 setter 등을 만드는 기능도 지원하죠.이런 방법을 적극활용해서 오타와 타이핑하는 시간을 줄일 수 있습니다. 1. 우선 BoardDAO.java 파일을 열어주세요.그..
FirstSpringBoard#3-3] 수정, 삭제, 특정 게시물 조회 기능 구현 & Service 인터페이스 구현 안녕하세요. 오늘은 나머지 기능을 구현할게요.그리고 현재 테스트코드에서 DAO를 호출해서 비즈니스 로직을 처리하고 있습니다. 그러나 DAO를 바로 호출해서 비즈니스 로직을 처리하는 것은 기능의 확장이나 변화에 대해서 유연하게 대처하지 못하고 나중에 스프링의 AOP 기능을 적용하는데 문제가 있습니다. 그렇기 때문에 DAO를 추상화한 Service Interface를 만들고 Interface를 구현한 ServiceImpl 클래스를 만들어서 이 클래스에서 DAO를 호출하도록 할 것입니다. 과정은 이전과 동일해요. 1. Mapper.xml에 mapper 추가 2. mapper interface에 대응하는 메소드 추가3. DAO에서 DB연동 코드 추가4. 테스트 코드 작성 위와 같은 순서대로 진행됩니다. 나머지 ..
FirstSpringBoard#3-2] 프로젝트 과정 설명 & 비즈니스로직 구현하기(게시물 등록 하기) 아래 그림은 여태까지 진행한 프로젝트의 순서를 간단히 정리한 것입니다. 1. 프로젝트 계획-ERD는 데이터베이스 테이블에 관한 명세입니다. 테이블에 관한 정보과 테이블들간의 관계에 관한 정보가 담겨있어요. 프로젝트에 앞서서 필요한 데이터베이스 테이블를 설계한다고 생각하면 됩니다.-Mockup은 내가 구현할 애플리케이션의 UI를 설계하는 것입니다. 설계하면서 웹페이지 컴포넌트들의 동작들에 대해서 생각할 수 있고실제 비즈니스 로직 구성에 대해서 생각해 볼 수 있어요.-UML은 폭넓은 개념인데 대표적으로 시퀸스 다이어그램이나 클래스 다이어그램을 예로 들 수 있어요. 프로젝트 구성에서 객체들의 관계나 비즈니스 로직에서 객체들의 동작이 어떻게 되는지 정해진 형식으로 보여줍니다. 2. 프로젝트 생성입니다.-디렉토리..
FirstSpringBoard#3-1] 비즈니스로직 구현하기(전체 글 조회) 이번 포스팅에서는 이전시간에 설정한 것들을 바탕으로 비즈니스 로직을 구현해보겠습니다. Domain 객체를 만들고, Mapper.xml 파일을 설정하고 테스트 코드를 작성하면서 DAO 클래스를 만들어볼게요. 우선 비즈니스 로직 구현을 위해서 웹어플리케이션의 기능을 알아봐야합니다. 아래 화면을 보면 우리가 필요한 기능들을 알 수 있어요. -전체 글 조회 -특정 글 조회 -수정 -삭제 -글쓰기 각각 기능 수행에 필요한 쿼리문들도 떠오를 것입니다. -전체 글 조회(slect *from tablename) -특정 글 조회(select *from tablename where id = #{id}) -수정 (update tablename set column1 = #{...}, column2 = #{....}) -삭제 ..
FirstSpringBoard#2]마이바티스와 연동하기 안녕하세요. 오늘은 마이바티스와 연동해서 SqlSession 객체를 생성하는 시간입니다. 아마 여러분들은 JDBC나 JDBCTemplate를 주로 이용하셨을 겁니다. 마이바티스는 SQL Mapper입니다. 쉽게 말해서 객체의 필드, 원시 타입을 SQL과 연결해주는 거에요.Jdbc를 사용할때 prepareStatement.set(1, name)나 rs.getString("name")과 같이 SQL에 넣어줄 파라미터나 DB에서 반환받는 값을 개발자가 직접 설정했었는데.SQL Mapper는 이 작업을 자동으로 해줍니다. 그리고 마이바티스는 sql문과 DB연동 정보를 자바코드와 분리시켜주는 역할을 합니다.여태까지 SQL문을 String type으로 소스코드 안에서 선언해줬었는데. 이제는 그럴 필요가 없습니다. ..
FirstSpringBoard#1-2] 메이븐 의존성 추가 안녕하세요. 저번 포스팅에서는 STS의 인코딩 방식 설정과 프로젝트 생성까지 했습니다.이번에는 메이븐으로 프로젝트 구성에 필요한 라이브러리를 추가할게요.우리 프로젝트에서는 Mybatis라는 DB연동 프레임워크(persistence framework)를 사용할것입니다.spring에서 Mybatis를 연동하기 위한 라이브러리를 추가할 것이고 테스트 코드 작성을 위한 설정도 할거에요. 1. 우리가 생성한 프로젝트를 보면 pom.xml이라는 파일이 있습니다.이 파일에서 메이븐 의존성을 추가합니다. 2. pom.xml 파일을 클릭하면 아래와 같은 화면이 보이는데요.밑의 탭들이 보입니다. Dependencise는 메이븐에서 추가한 라이브러리들을 쉽게 관리할 수 있는 창입니다.그 옆의 Dependency Hierar..
FirstSpringBoard#1-1]프로젝트 생성 안녕하세요. 오늘은 기본적인 프로젝트 생성부터 Maven 의존성 설정까지 다뤄보겠습니다.JSP 파일에서 html 화면 렌더링(view), request/response 처리(controller), DB와의 연동(Model)까지 한꺼번에 처리하다가Model2방식으로 어플리케이션을 3가지 기능으로 분리해서 프로젝트를 구성하고 의존성 관리를 메이븐으로 하게 되었을때 높아진 가독성과 유지보수성, 무엇보다 라이브러리 추가 방식 간결화로 엄청 신선한 느낌을 받았었어요.특히 mysql-connector같은 경우에는 jar파일을 WEB-INF 폴더 밑의 lib 폴더에 넣는걸 항상 깜빡하고 뒤늦게 추가하고는 했죠.하지만 Maven을 프로젝트에 도입한 생산성도 크지만 프로젝트 구성에 애를 먹는 경우도 꽤 많았어요.이 프로..

반응형