SlideShare a Scribd company logo
자바 웹 개발 시작하기

(10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

2012. 1. 18

DEVELOPMENT #2

이덕곤
돌아보며
▪ 우리가 목표했던 것은 얼마나 달성되었나요?!
▪ 자바를 사용한 웹 개발 기본학습"
▪ 스프링 중심, 실무 중심으로 기획!
▪ 2011년 마지막 주에 실전 프로젝트로 마무리 -> 삑!!

▪ 비 서버사이드 개발 인력의 서버사이드 이해"
▪ 개발의 심화학습을 혼자 진행 할 수 있도록!
▪ 현재 스타플 개발에 사용되고 있는 환경과 프레임워크 등을

이해하여 개발 능력 향상!

▪ 9주차까지 한번도 빠짐없이 수업이 진행!!!
▪ 그 동안 열심히 참여해 주셔서 감사합니다!!!
함께 공부한 것들(1)
▪ 웹 개발 시작!
▪ 자바 웹 개발 환경 설정 (너무 간단해서 놀라버린…)!
▪ Java, Model1, Model2, web.xml, Servlet, JSP!
▪ 게시판 커뮤니티 만들기 (웹 개발의 시작과 끝 : 게시판)!
!

▪ 인터넷이란? (통신, 네트워크)!
▪ 서버와 클라이언트, 요청에서 응답까지(GET -> 200)!
▪ TCP/IP, OSI 7 Layer, LAN, UDP, 이더넷, 허브, 라우터!
▪ 프로토콜(규약) : HTTP, DNS, Telnet, E-Mail, FTP…
함께 공부한 것들(2)
▪ 스프링 프레임워크 (EJB는 왜 몰락했나?)!
▪ DI(IoC), AOP, 경량, POJO (그럴싸함의 중요함)!

!

▪ 자바로 구현해보는 웹 관련 기술!
▪ MVC (사용자는 변덕쟁이다. 자기가 뭘 원하는지도 모른다.

분리하여 개발한다. 모든 것은 변하기 때문에…)!

▪ 데이터베이스, JPA, 하이버네이트, SQL (CRUD)!
▪ RESTful, 쿠키와 세션, 로그인!
▪ 유효성검사, 국제화, 예외처리, 단위테스트!
▪ RSS뷰, 명세서… 기타 등등
마지막 시간
▪ 라이브러리 업데이트!
▪ 스프링 3.0.6 -> 3.1.0, 하이버네이트 3.6.8 -> 4.0.1!

▪ JPA로의 이동!
▪ EJB3에 포함된 표준(335)기술!
▪ 표준을 사용, 포장을 줄이며 의존성을 줄여나가기!

▪ 게시판 페이지 나누기!
▪ 지금까지 우리가 한 것 돌아보기!
▪ 웹과 우리는? 나아가야 할 방향 생각해보기
Spring Framework 3.1
▪ 주요 변경 사항 (조쉬 롱 : 아래 마지막 링크 참고)!
▪ 포괄적인 자바 기반 애플리케이션 구성 !
▪ 신규 캐시 추상화 !
▪ 운영 환경 지원, 빈 정의 프로파일과 계층형 프로퍼티 출처 관리 !
▪ 하이버네이트 4 지원 !
▪ 자바 7 fork/join과 JDBC 4.1 지원 !

▪ 참고 페이지!
▪ http://static.springsource.org/spring/docs/3.1.x/changelog.txt!
▪ http://blog.outsider.ne.kr/732!
▪ http://www.ksug.org/144
hibernate 4.0
▪ 주요 변경 사항 (아래 링크 참고)!
▪ 많은 변경사항이 있음 (DB도 너무 공부할 것이 많음)!
▪ 멀티 테넌트(Multi-Tenant : 다중역할) 지원!
▪

단일 코드셋, 애플리케이션과 데이터의 파티셔닝, 공통의 애플리케이션 서비스, 코드 수정 없는 커스터마이징!

▪ ServiceRegistry 도입, SessionFactory 정리, i18n 등!

▪ 참고 페이지!
▪ http://relation.to/Bloggers/HibernateCore40IsFinal!
▪ https://community.jboss.org/wiki/HibernateCoreMigrationGuide40!
▪ http://jowon.blogspot.com/2010/05/saas-multi-tenancy.html
라이브러리 변경하기
▪ 스프링과 하이버네이트 라이브러리를 최신화!
▪ 다운로드!
▪ http://www.springsource.org/spring-framework!
▪ http://www.hibernate.org/downloads
스프링 환경설정
▪ HandlerAdapter 변경!
▪ org.springframework.web.servlet.mvc.annotation.Anno
tationMethodHandlerAdapter 에서

org.springframework.web.servlet.mvc.method.annotati
on.RequestMappingHandlerAdapter 로 변화!

▪ <mvc:annotation-driven> 기능 확장!
▪ 그리고 버그 (새로운 것을 받아드리기 어려운 이유)!

!

▪ http://millky.com/home/byuri/10000643
하이버네이트 환경설정

새로운 설정

이전 설정
스프링의 하이버네이트 4.0 지원
▪ EntityBeanFinderFactoryBean가 필요 없다!
▪ annotatedClasses!
▪ 지금까지 Entity를 스캔해주던 유틸리티!
▪ LocalContainerEntityManagerFactoryBean의

packagesToScan을 사용할 수 있음!

▪ HibernateTemplate이 없어졌다!
▪ 스프링 3.1에는 하이버네이트 4.0을 위한

template, factory 같은 지원 클래스가 없다!
▪ 자바 표준인 JPA(2.0) 구현한 EntityManager 사용
JPA(Java Persistence API)
▪ EJB2.0의 Entity Bean이 너무 무거워서(의존도등)

Hibernate같은 ORM기술이 널리 활용되자

JSR-220(Enterprise JavaBeans 3.0)을 들고나옴!
▪ EJB3.0에 포함된 자바 표준으로 하이버네이트도

EntityManager를 통하여 JPA의 구현체가 됨!
▪ 참고!
▪ http://ko.wikipedia.org/wiki/JPA!
▪ http://www.oracle.com/technetwork/articles/javaee/jpa-137156.html!
▪ http://blog.naver.com/chocolleto/30087402615!
▪ http://www.javajigi.net/pages/viewpage.action?pageId=5924
JPA로 개발하기
▪ EntityManager, CriteriaBuilder, CriteriaQuery!
▪ JPA 2.0 표준으로 개발 : 의존성이 줄어듬!
▪ 스프링 말고 다른 프레임워크를 사용해야 한다면?

EntityManager

HibernateTemplate
페이지 나누기
▪ 우선 총 글 수를 가지고 온다!
▪ criteriaQuery.select(criteriaBuilder.count(criteriaQuery.from(Board.class)));!
▪ Long count = entityManager.createQuery(criteriaQuery).getSingleResult();!

▪ public PageNavigator

(int nowPage, int totalRow, int pageSize, int navSize)!
▪ 전체 페이지 수 = 총 글 수 / 페이지 사이즈!

▪ startRow번 게시물 부터 pageSize만큼 가지고옴!
▪ entityManager.createQuery(criteriaQuery)

.setFirstResult(startRow).setMaxResults(pageSize);!
▪

http://eunicon.tistory.com/81!

▪

http://code.google.com/p/doitframe/source/browse/trunk/doit-framework/src/doit/framework/util/PageNavigator.java
/WEB-INF/tags/pagingTag.tag
<%@ tag language="java" body-content="empty" pageEncoding="UTF-8"%>!
<%@ attribute name="pagingAttribute" rtexprvalue="true" required="true"
type="java.lang.Object"%>!
<c:if test="${pagingAttribute.hasPrevPage}">!
<a href="${_URL}?page=${pagingAttribute.blockStartPage - 1}">◀</a>!
</c:if>!
<c:forEach var="page" begin="${pagingAttribute.blockStartPage}" end="$
{pagingAttribute.blockEndPage}">!
<c:if test="${page == pagingAttribute.nowPage}">!
<a style="font-weight: bold;" href="${_URL}?page=${page}">${page}</a>!
</c:if>!
<c:if test="${page != pagingAttribute.nowPage}">!
<a href="${_URL}?page=${page}">${page}</a>!
</c:if>!
</c:forEach>
여기서 마무리…
▪ 기본적인 커뮤니티를 완성했습니다!
▪ 아직 많은 부분 부족하지만…!
▪ 이제 자바 웹 개발의 기본적인 이해가 되셨나요?
그리고 시작하기 : 스타플 5는?
▪ 최신기술 도입으로 성능과 개발효율 향상"
▪ 기타 도입 고민해야 할 기술도 많다 (O-Auth, NoSQL)

!
개발 : Eclipse 3.7.1!
(SVN : 버전관리, Log4j : 로그)!

5.5.XX

!MySQL Connector For Java 5.1.XX
!
! !
3.0 DAO!
!
(모델 부분)
! !
Spring MVC : WEB!
! !
(컨트롤 부분)
!
! POJO Bean : Domain, Service!
! ! (비즈니스 부분)
JSP 2.2(JSTL, EL)!
!
(뷰 부분)
!
!
Tomcat 7.0.XX (Servlet 3.0) !
Java SE 7 update X!
Java EE 6!
위콘, 스타플과 오픈소스
▪ 2007년 시작 스타플 초기부터 개발에 사용!
▪ 스프링 프레임워크!
▪ 최초 2.0으로 개발 시작!
▪ 2.5를 거치고(어노테이션) 현재 3.0(RESTful) 사용 중!
▪ 스타플5에서는 3.1로 업데이트 예정!

!

▪ 잘 사용하는 것도 개발자에게는 즐거운 일이다.!
▪ 모든 것은 사람이 한 일. 감사합니다. 한마디
지금까지 우리가 한 것
▪ 자바라는 기술의 극히 일부분 ▶!
▪ 웹이란 생태계의 일부분"
!
▪ 앞으로 공부해야 할 부분이

너무 많지만…

그 모든 기술이 필요한지도 생각해 봐야 함
이제 겨우 시작…
▪ 뭔가 많이 했지만…!
▪ 이제 단지

자바로 웹을 개발할 수 있는

오만가지 방법 중 한가지를

배우셨을 뿐 입니다.!
▪ 개발도 아니고 웹도 아닌

단지 웹 개발이란 곳에서도

사실 우리는 아직

알고 있는 것이 없습니다.
더 생각해볼 문제
▪ 왜 개발을 하나?!
▪ 그림은 왜 그리나?!
▪ 소설은 왜 쓰나?!
▪ 작곡은 왜 하나?!

▪ 창조적인 작업? 창조?!
▪ 왜 하는 것일까?!
!

▪ 왜 사나? 그냥, 재미로?!
노스페이스
▪ 교복 메이커 중 하나!
▪ 영원무역!
▪ '노스페이스'의 주문자상표부착(OEM) 제조업체!
▪ 자체 브랜드로 같은 품질 판매!

▪ 고어텍스 좋긴 하지만…!
!

▪ 소비, 권력, 보상심리!
▪ 노스페이스 계급표
우리가 살아가는데 필요한 것?
▪ 밥!
▪ 에어컨!

▪ 침대!

삶은? =

▪ 최신형 스마트폰!

▪ 노스페이스 점퍼!

▪ 돈!!
!

▪ 생각? 추억? 기억… : 기억의 중요성 (내 기억의 확장)
컴퓨터
▪ 그 도구로의 시작!
▪ 만지면 반응한다!
▪ 계산기에서 시작!
▪ 사람을 보조하기 위해!
▪ 사람과 컴퓨터의 다른 점은?!
!
!

▪ 직감, 이성, 판단, 자존
Ghost in the Shell (1995)

"바트, 잊지 말아줘 네가 넷트(NET)에 접속할 때, 나는 반드시 네 곁에 있어"
자기 자신을 찾아가는 길
▪ 당신의 기억에 내가 없다면 나는 누구인가?!
▪ 나는 누구인가? 나는 왜 살아가나? 목적은 있나?!
!

▪ 자아를 찾아가기 (단기, 중기, 장기목적)!
▪ 자존감 : 거울에 비친 모습 그대로를 인정 장점을 찾아서 존중하기!
▪ 자존심 : 자존감의 여부와 상관 없이 타인에게 지기를 싫어하는 마음

타인을 이기는 것으로 스스로를 존중!
▪ 자만심 : 있는 그대로 평가하지 못하고 스스로 과대평가 하거나, 계획만 가지고 있는 상
태를 현실과 착각하여 떠벌리고 다니는 행동 또는 마음!

!

▪ 인간 : 생존 > 사회화 > 즐기기
혼자 하면 재미 없어요~
▪ 온라인 영향력!
▪ 또 다른 과시의 수단!
▪ 연결 되고 싶어한다!
▪ 세상에 나 혼자라면?!
▪ 강아지와의 교감!
▪ 반응에 민감함
▪ 휴대폰, 휴대, 좋은것 빠른업글!
▪ 사이클이 빠른 이유!
▪ 과시, 소모품!
▪ 집은 들고 다닐 수 없다
네트워크의 중요성
▪ 인간이란? 사람은?!
▪ 소통, Dunbar's number!
▪ 인문, 사회, 공학, 미학적 접근!
▪ 참고 문서 : 20111012_반년만의 이야기.pdf!
!

▪ 목사님 말씀!
▪ 하느님이 보시기에 참 아름다웠다
서비스
▪ 자아를 찾게 만들어주는?!
!

▪ 타겟이 사용자가 아니다!
▪ Target -> 사용자!
▪ For -> contumer!

!

▪ 누구를 위하여 종을 울리나!
▪ 헤밍웨이(노인과 바다)
핵심은 어디에?
▪ 엘지의 LCD + 삼성의 메모리 + …

= 아이폰!
▪ 핵심은 IOS 라는 말도 있지만…!
▪ IOS도 베이스는 유닉스!
▪ 그리고 여러 유틸리티들!

!

▪ 소프트웨어가 핵심?!
!

▪ 결론은! 플랫폼, UX
플랫폼(Platform) = 멍석
▪ 그 자체가 최종 결과물이 아니라 Service나

S/W가 만들어지는 재료나 환경을 제공하는 것
기술을 넘어서기
▪ 이미 기술은 풍부!
!

▪ 시장의 형성!
▪ 아름다움으로 승부하기
▪ 표준!
▪ 업계표준!
▪ 수많은 표준!
▪ 수많은 도구
▪ 은총알은 없다!
▪ 바퀴를 다시 만들 필요는 없다!
▪ 누군가는 이 문제를 겪었습니다.!
▪ 창조력, 아름답더라!
▪ 왜 오픈소스를 만드나?!
▪ 공유와 참여
▪ 오픈API!
▪ 매쉬업!
▪ 참여 개방!
▪ 클라우드!
▪ 빅 데이터!
▪ 대용량 분석
더 공부해야 할 사항
▪ 설정도 @으로!
▪ Maven!
▪ UML!
▪ NoSQL!
▪ 하둡, 맵 리듀스!
▪ 반복반복반복 : 의도된
다음에 다시 만나요!
▪ 명세서 발표회!
▪ 작품 발표회
잊지 말아야 할 것
▪ "The power of the web is in its universality.

Access by everyone regardless of disability is

an essential aspect." 

- Tim Berners-Lee!
!

▪ "웹(WWW)의 힘은 보편성에 있다.

불리한 조건에 관계없이 누구나 접근하는 것은

웹의 필수적인 측면이다.“

- 팀 버너스 리 (인터넷의 아버지: URL, HTTP, HTML 설계)
수고하셨습니다.
▪ 마지막!
▪ 새로운 시작!
!

▪ 우리도 통해야 합니다.!
▪ 스타플로 통해야 합니다.!
!

▪ 플렛폼이 되는 그날까지…!
▪ 위콘 파이팅!
뒷풀이 장소
▪ 장소!
▪ 약도
자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)


More Related Content

What's hot (20)

PPTX
Saving Time By Testing With Jest
Ben McCormick
 
PDF
Angular 2 observables
Geoffrey Filippi
 
PDF
Why and How to Use Virtual DOM
Daiwei Lu
 
PDF
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Edureka!
 
PDF
TypeScript - An Introduction
NexThoughts Technologies
 
PPTX
Write microservice in golang
Bo-Yi Wu
 
PPTX
Spring boot
sdeeg
 
PPTX
Spring boot Introduction
Jeevesh Pandey
 
PPTX
Top 10 RxJs Operators in Angular
Jalpesh Vadgama
 
PPTX
Spring boot - an introduction
Jonathan Holloway
 
PPTX
Full stack devlopment using django main ppt
SudhanshuVijay3
 
PPTX
CSharp Presentation
Vishwa Mohan
 
PDF
RxJS Operators - Real World Use Cases (FULL VERSION)
Tracy Lee
 
PPTX
Introduction to React JS
Arnold Asllani
 
PPTX
ReactJS presentation.pptx
DivyanshGupta922023
 
PDF
TypeScript Introduction
Dmitry Sheiko
 
PPTX
Spring boot
Gyanendra Yadav
 
PDF
Angular
Lilia Sfaxi
 
PPTX
Angular Data Binding
Jennifer Estrada
 
PPTX
Spring data jpa
Jeevesh Pandey
 
Saving Time By Testing With Jest
Ben McCormick
 
Angular 2 observables
Geoffrey Filippi
 
Why and How to Use Virtual DOM
Daiwei Lu
 
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Edureka!
 
TypeScript - An Introduction
NexThoughts Technologies
 
Write microservice in golang
Bo-Yi Wu
 
Spring boot
sdeeg
 
Spring boot Introduction
Jeevesh Pandey
 
Top 10 RxJs Operators in Angular
Jalpesh Vadgama
 
Spring boot - an introduction
Jonathan Holloway
 
Full stack devlopment using django main ppt
SudhanshuVijay3
 
CSharp Presentation
Vishwa Mohan
 
RxJS Operators - Real World Use Cases (FULL VERSION)
Tracy Lee
 
Introduction to React JS
Arnold Asllani
 
ReactJS presentation.pptx
DivyanshGupta922023
 
TypeScript Introduction
Dmitry Sheiko
 
Spring boot
Gyanendra Yadav
 
Angular
Lilia Sfaxi
 
Angular Data Binding
Jennifer Estrada
 
Spring data jpa
Jeevesh Pandey
 

Viewers also liked (20)

PDF
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
DK Lee
 
PDF
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
DK Lee
 
PDF
자바 웹 개발 시작하기 : 계획
DK Lee
 
PDF
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
DK Lee
 
PDF
Starpl 20111012 스타플5를_만들기_시작하며
DK Lee
 
PDF
20141229 dklee docker
DK Lee
 
PDF
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
DK Lee
 
PDF
자바 웹 개발 시작하기 (7주차 : 국제화, 확인검증, 예외처리)
DK Lee
 
PDF
자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)
DK Lee
 
PDF
자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)
DK Lee
 
PDF
자바 웹 개발 시작하기 (9주차 : 프로젝트 구현 – 추가적인 뷰)
DK Lee
 
PDF
자바 웹 개발 시작하기 (4주차 : MVC)
DK Lee
 
PDF
20131217 html5
DK Lee
 
PPTX
SpringMVC 전체 흐름 알아보기
Myung Woon Oh
 
PPSX
spring data jpa 간단한 튜토리얼
라한사 아
 
PPSX
스프링 프레임워크로 블로그 개발하기
라한사 아
 
PDF
8주 dom & event basic
지수 윤
 
PDF
7주 JavaScript Part2
지수 윤
 
PDF
4주 CSS Layout
지수 윤
 
PPTX
Database design
Joshua Yoon
 
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
DK Lee
 
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
DK Lee
 
자바 웹 개발 시작하기 : 계획
DK Lee
 
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
DK Lee
 
Starpl 20111012 스타플5를_만들기_시작하며
DK Lee
 
20141229 dklee docker
DK Lee
 
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
DK Lee
 
자바 웹 개발 시작하기 (7주차 : 국제화, 확인검증, 예외처리)
DK Lee
 
자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)
DK Lee
 
자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)
DK Lee
 
자바 웹 개발 시작하기 (9주차 : 프로젝트 구현 – 추가적인 뷰)
DK Lee
 
자바 웹 개발 시작하기 (4주차 : MVC)
DK Lee
 
20131217 html5
DK Lee
 
SpringMVC 전체 흐름 알아보기
Myung Woon Oh
 
spring data jpa 간단한 튜토리얼
라한사 아
 
스프링 프레임워크로 블로그 개발하기
라한사 아
 
8주 dom & event basic
지수 윤
 
7주 JavaScript Part2
지수 윤
 
4주 CSS Layout
지수 윤
 
Database design
Joshua Yoon
 
Ad

Similar to 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)
 (20)

PPTX
회사에서 새로운 기술_적용하기
Dexter Jung
 
PPTX
기술적 변화를 이끌어가기
Jaewoo Ahn
 
PDF
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
SangIn Choung
 
PPTX
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
중선 곽
 
PDF
예비 개발자를 위한 소프트웨어 세상 이야기
SU BO KIM
 
PPTX
Node.js 를 이용한 문서화 실전 사례 20130618
광명 우
 
PPTX
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
Terry Cho
 
PDF
훌륭한 개발자로 성장하기
Changyol BAEK
 
PPTX
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용
Terry Cho
 
PDF
OSS개발자 포럼 캠프
Hakbeom Hwang
 
PDF
비 개발자를 위한 웹 개발 기초
Gihyo Joshua Jang
 
PDF
2020년 7월 4일 개발 이야기 정리
Jay Park
 
PDF
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
Soojin Ro
 
PDF
Web devmobile 8회열린세미나
Pumsuk Cho
 
PDF
웹 2.0 기술 소개 (2006)
Channy Yun
 
PDF
예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스
시은 김
 
PDF
서버학개론(백엔드 서버 개발자를 위한)
SU BO KIM
 
PDF
웹개발자가 알아야할 기술
jaypi Ko
 
PDF
[D2]pinpoint 개발기
NAVER D2
 
PPTX
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
Terry Cho
 
회사에서 새로운 기술_적용하기
Dexter Jung
 
기술적 변화를 이끌어가기
Jaewoo Ahn
 
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
SangIn Choung
 
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
중선 곽
 
예비 개발자를 위한 소프트웨어 세상 이야기
SU BO KIM
 
Node.js 를 이용한 문서화 실전 사례 20130618
광명 우
 
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
Terry Cho
 
훌륭한 개발자로 성장하기
Changyol BAEK
 
14회 jco 컨퍼런스 조대협의 소프트웨어 개발 배포용
Terry Cho
 
OSS개발자 포럼 캠프
Hakbeom Hwang
 
비 개발자를 위한 웹 개발 기초
Gihyo Joshua Jang
 
2020년 7월 4일 개발 이야기 정리
Jay Park
 
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
Soojin Ro
 
Web devmobile 8회열린세미나
Pumsuk Cho
 
웹 2.0 기술 소개 (2006)
Channy Yun
 
예비 개발자를 위한 웹서비스 개발 방법론 특강 - 폴리텍대학교 강서캠퍼스
시은 김
 
서버학개론(백엔드 서버 개발자를 위한)
SU BO KIM
 
웹개발자가 알아야할 기술
jaypi Ko
 
[D2]pinpoint 개발기
NAVER D2
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
Terry Cho
 
Ad

자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)


  • 1. 자바 웹 개발 시작하기
 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)
 2012. 1. 18 DEVELOPMENT #2 이덕곤
  • 2. 돌아보며 ▪ 우리가 목표했던 것은 얼마나 달성되었나요?! ▪ 자바를 사용한 웹 개발 기본학습" ▪ 스프링 중심, 실무 중심으로 기획! ▪ 2011년 마지막 주에 실전 프로젝트로 마무리 -> 삑!! ▪ 비 서버사이드 개발 인력의 서버사이드 이해" ▪ 개발의 심화학습을 혼자 진행 할 수 있도록! ▪ 현재 스타플 개발에 사용되고 있는 환경과 프레임워크 등을
 이해하여 개발 능력 향상! ▪ 9주차까지 한번도 빠짐없이 수업이 진행!!! ▪ 그 동안 열심히 참여해 주셔서 감사합니다!!!
  • 3. 함께 공부한 것들(1) ▪ 웹 개발 시작! ▪ 자바 웹 개발 환경 설정 (너무 간단해서 놀라버린…)! ▪ Java, Model1, Model2, web.xml, Servlet, JSP! ▪ 게시판 커뮤니티 만들기 (웹 개발의 시작과 끝 : 게시판)! ! ▪ 인터넷이란? (통신, 네트워크)! ▪ 서버와 클라이언트, 요청에서 응답까지(GET -> 200)! ▪ TCP/IP, OSI 7 Layer, LAN, UDP, 이더넷, 허브, 라우터! ▪ 프로토콜(규약) : HTTP, DNS, Telnet, E-Mail, FTP…
  • 4. 함께 공부한 것들(2) ▪ 스프링 프레임워크 (EJB는 왜 몰락했나?)! ▪ DI(IoC), AOP, 경량, POJO (그럴싸함의 중요함)! ! ▪ 자바로 구현해보는 웹 관련 기술! ▪ MVC (사용자는 변덕쟁이다. 자기가 뭘 원하는지도 모른다.
 분리하여 개발한다. 모든 것은 변하기 때문에…)! ▪ 데이터베이스, JPA, 하이버네이트, SQL (CRUD)! ▪ RESTful, 쿠키와 세션, 로그인! ▪ 유효성검사, 국제화, 예외처리, 단위테스트! ▪ RSS뷰, 명세서… 기타 등등
  • 5. 마지막 시간 ▪ 라이브러리 업데이트! ▪ 스프링 3.0.6 -> 3.1.0, 하이버네이트 3.6.8 -> 4.0.1! ▪ JPA로의 이동! ▪ EJB3에 포함된 표준(335)기술! ▪ 표준을 사용, 포장을 줄이며 의존성을 줄여나가기! ▪ 게시판 페이지 나누기! ▪ 지금까지 우리가 한 것 돌아보기! ▪ 웹과 우리는? 나아가야 할 방향 생각해보기
  • 6. Spring Framework 3.1 ▪ 주요 변경 사항 (조쉬 롱 : 아래 마지막 링크 참고)! ▪ 포괄적인 자바 기반 애플리케이션 구성 ! ▪ 신규 캐시 추상화 ! ▪ 운영 환경 지원, 빈 정의 프로파일과 계층형 프로퍼티 출처 관리 ! ▪ 하이버네이트 4 지원 ! ▪ 자바 7 fork/join과 JDBC 4.1 지원 ! ▪ 참고 페이지! ▪ http://static.springsource.org/spring/docs/3.1.x/changelog.txt! ▪ http://blog.outsider.ne.kr/732! ▪ http://www.ksug.org/144
  • 7. hibernate 4.0 ▪ 주요 변경 사항 (아래 링크 참고)! ▪ 많은 변경사항이 있음 (DB도 너무 공부할 것이 많음)! ▪ 멀티 테넌트(Multi-Tenant : 다중역할) 지원! ▪ 단일 코드셋, 애플리케이션과 데이터의 파티셔닝, 공통의 애플리케이션 서비스, 코드 수정 없는 커스터마이징! ▪ ServiceRegistry 도입, SessionFactory 정리, i18n 등! ▪ 참고 페이지! ▪ http://relation.to/Bloggers/HibernateCore40IsFinal! ▪ https://community.jboss.org/wiki/HibernateCoreMigrationGuide40! ▪ http://jowon.blogspot.com/2010/05/saas-multi-tenancy.html
  • 8. 라이브러리 변경하기 ▪ 스프링과 하이버네이트 라이브러리를 최신화! ▪ 다운로드! ▪ http://www.springsource.org/spring-framework! ▪ http://www.hibernate.org/downloads
  • 9. 스프링 환경설정 ▪ HandlerAdapter 변경! ▪ org.springframework.web.servlet.mvc.annotation.Anno tationMethodHandlerAdapter 에서
 org.springframework.web.servlet.mvc.method.annotati on.RequestMappingHandlerAdapter 로 변화! ▪ <mvc:annotation-driven> 기능 확장! ▪ 그리고 버그 (새로운 것을 받아드리기 어려운 이유)! ! ▪ http://millky.com/home/byuri/10000643
  • 11. 스프링의 하이버네이트 4.0 지원 ▪ EntityBeanFinderFactoryBean가 필요 없다! ▪ annotatedClasses! ▪ 지금까지 Entity를 스캔해주던 유틸리티! ▪ LocalContainerEntityManagerFactoryBean의
 packagesToScan을 사용할 수 있음! ▪ HibernateTemplate이 없어졌다! ▪ 스프링 3.1에는 하이버네이트 4.0을 위한
 template, factory 같은 지원 클래스가 없다! ▪ 자바 표준인 JPA(2.0) 구현한 EntityManager 사용
  • 12. JPA(Java Persistence API) ▪ EJB2.0의 Entity Bean이 너무 무거워서(의존도등)
 Hibernate같은 ORM기술이 널리 활용되자
 JSR-220(Enterprise JavaBeans 3.0)을 들고나옴! ▪ EJB3.0에 포함된 자바 표준으로 하이버네이트도
 EntityManager를 통하여 JPA의 구현체가 됨! ▪ 참고! ▪ http://ko.wikipedia.org/wiki/JPA! ▪ http://www.oracle.com/technetwork/articles/javaee/jpa-137156.html! ▪ http://blog.naver.com/chocolleto/30087402615! ▪ http://www.javajigi.net/pages/viewpage.action?pageId=5924
  • 13. JPA로 개발하기 ▪ EntityManager, CriteriaBuilder, CriteriaQuery! ▪ JPA 2.0 표준으로 개발 : 의존성이 줄어듬! ▪ 스프링 말고 다른 프레임워크를 사용해야 한다면? EntityManager HibernateTemplate
  • 14. 페이지 나누기 ▪ 우선 총 글 수를 가지고 온다! ▪ criteriaQuery.select(criteriaBuilder.count(criteriaQuery.from(Board.class)));! ▪ Long count = entityManager.createQuery(criteriaQuery).getSingleResult();! ▪ public PageNavigator
 (int nowPage, int totalRow, int pageSize, int navSize)! ▪ 전체 페이지 수 = 총 글 수 / 페이지 사이즈! ▪ startRow번 게시물 부터 pageSize만큼 가지고옴! ▪ entityManager.createQuery(criteriaQuery)
 .setFirstResult(startRow).setMaxResults(pageSize);! ▪ http://eunicon.tistory.com/81! ▪ http://code.google.com/p/doitframe/source/browse/trunk/doit-framework/src/doit/framework/util/PageNavigator.java
  • 15. /WEB-INF/tags/pagingTag.tag <%@ tag language="java" body-content="empty" pageEncoding="UTF-8"%>! <%@ attribute name="pagingAttribute" rtexprvalue="true" required="true" type="java.lang.Object"%>! <c:if test="${pagingAttribute.hasPrevPage}">! <a href="${_URL}?page=${pagingAttribute.blockStartPage - 1}">◀</a>! </c:if>! <c:forEach var="page" begin="${pagingAttribute.blockStartPage}" end="$ {pagingAttribute.blockEndPage}">! <c:if test="${page == pagingAttribute.nowPage}">! <a style="font-weight: bold;" href="${_URL}?page=${page}">${page}</a>! </c:if>! <c:if test="${page != pagingAttribute.nowPage}">! <a href="${_URL}?page=${page}">${page}</a>! </c:if>! </c:forEach>
  • 16. 여기서 마무리… ▪ 기본적인 커뮤니티를 완성했습니다! ▪ 아직 많은 부분 부족하지만…! ▪ 이제 자바 웹 개발의 기본적인 이해가 되셨나요?
  • 17. 그리고 시작하기 : 스타플 5는? ▪ 최신기술 도입으로 성능과 개발효율 향상" ▪ 기타 도입 고민해야 할 기술도 많다 (O-Auth, NoSQL) ! 개발 : Eclipse 3.7.1! (SVN : 버전관리, Log4j : 로그)! 5.5.XX !MySQL Connector For Java 5.1.XX ! ! ! 3.0 DAO! ! (모델 부분) ! ! Spring MVC : WEB! ! ! (컨트롤 부분) ! ! POJO Bean : Domain, Service! ! ! (비즈니스 부분) JSP 2.2(JSTL, EL)! ! (뷰 부분) ! ! Tomcat 7.0.XX (Servlet 3.0) ! Java SE 7 update X! Java EE 6!
  • 18. 위콘, 스타플과 오픈소스 ▪ 2007년 시작 스타플 초기부터 개발에 사용! ▪ 스프링 프레임워크! ▪ 최초 2.0으로 개발 시작! ▪ 2.5를 거치고(어노테이션) 현재 3.0(RESTful) 사용 중! ▪ 스타플5에서는 3.1로 업데이트 예정! ! ▪ 잘 사용하는 것도 개발자에게는 즐거운 일이다.! ▪ 모든 것은 사람이 한 일. 감사합니다. 한마디
  • 19. 지금까지 우리가 한 것 ▪ 자바라는 기술의 극히 일부분 ▶! ▪ 웹이란 생태계의 일부분" ! ▪ 앞으로 공부해야 할 부분이
 너무 많지만…
 그 모든 기술이 필요한지도 생각해 봐야 함
  • 20. 이제 겨우 시작… ▪ 뭔가 많이 했지만…! ▪ 이제 단지
 자바로 웹을 개발할 수 있는
 오만가지 방법 중 한가지를
 배우셨을 뿐 입니다.! ▪ 개발도 아니고 웹도 아닌
 단지 웹 개발이란 곳에서도
 사실 우리는 아직
 알고 있는 것이 없습니다.
  • 21. 더 생각해볼 문제 ▪ 왜 개발을 하나?! ▪ 그림은 왜 그리나?! ▪ 소설은 왜 쓰나?! ▪ 작곡은 왜 하나?! ▪ 창조적인 작업? 창조?! ▪ 왜 하는 것일까?! ! ▪ 왜 사나? 그냥, 재미로?!
  • 22. 노스페이스 ▪ 교복 메이커 중 하나! ▪ 영원무역! ▪ '노스페이스'의 주문자상표부착(OEM) 제조업체! ▪ 자체 브랜드로 같은 품질 판매! ▪ 고어텍스 좋긴 하지만…! ! ▪ 소비, 권력, 보상심리! ▪ 노스페이스 계급표
  • 23. 우리가 살아가는데 필요한 것? ▪ 밥! ▪ 에어컨! ▪ 침대! 삶은? = ▪ 최신형 스마트폰! ▪ 노스페이스 점퍼! ▪ 돈!! ! ▪ 생각? 추억? 기억… : 기억의 중요성 (내 기억의 확장)
  • 24. 컴퓨터 ▪ 그 도구로의 시작! ▪ 만지면 반응한다! ▪ 계산기에서 시작! ▪ 사람을 보조하기 위해! ▪ 사람과 컴퓨터의 다른 점은?! ! ! ▪ 직감, 이성, 판단, 자존
  • 25. Ghost in the Shell (1995) "바트, 잊지 말아줘 네가 넷트(NET)에 접속할 때, 나는 반드시 네 곁에 있어"
  • 26. 자기 자신을 찾아가는 길 ▪ 당신의 기억에 내가 없다면 나는 누구인가?! ▪ 나는 누구인가? 나는 왜 살아가나? 목적은 있나?! ! ▪ 자아를 찾아가기 (단기, 중기, 장기목적)! ▪ 자존감 : 거울에 비친 모습 그대로를 인정 장점을 찾아서 존중하기! ▪ 자존심 : 자존감의 여부와 상관 없이 타인에게 지기를 싫어하는 마음
 타인을 이기는 것으로 스스로를 존중! ▪ 자만심 : 있는 그대로 평가하지 못하고 스스로 과대평가 하거나, 계획만 가지고 있는 상 태를 현실과 착각하여 떠벌리고 다니는 행동 또는 마음! ! ▪ 인간 : 생존 > 사회화 > 즐기기
  • 27. 혼자 하면 재미 없어요~ ▪ 온라인 영향력! ▪ 또 다른 과시의 수단! ▪ 연결 되고 싶어한다! ▪ 세상에 나 혼자라면?! ▪ 강아지와의 교감! ▪ 반응에 민감함
  • 28. ▪ 휴대폰, 휴대, 좋은것 빠른업글! ▪ 사이클이 빠른 이유! ▪ 과시, 소모품! ▪ 집은 들고 다닐 수 없다
  • 29. 네트워크의 중요성 ▪ 인간이란? 사람은?! ▪ 소통, Dunbar's number! ▪ 인문, 사회, 공학, 미학적 접근! ▪ 참고 문서 : 20111012_반년만의 이야기.pdf! ! ▪ 목사님 말씀! ▪ 하느님이 보시기에 참 아름다웠다
  • 30. 서비스 ▪ 자아를 찾게 만들어주는?! ! ▪ 타겟이 사용자가 아니다! ▪ Target -> 사용자! ▪ For -> contumer! ! ▪ 누구를 위하여 종을 울리나! ▪ 헤밍웨이(노인과 바다)
  • 31. 핵심은 어디에? ▪ 엘지의 LCD + 삼성의 메모리 + …
 = 아이폰! ▪ 핵심은 IOS 라는 말도 있지만…! ▪ IOS도 베이스는 유닉스! ▪ 그리고 여러 유틸리티들! ! ▪ 소프트웨어가 핵심?! ! ▪ 결론은! 플랫폼, UX
  • 32. 플랫폼(Platform) = 멍석 ▪ 그 자체가 최종 결과물이 아니라 Service나
 S/W가 만들어지는 재료나 환경을 제공하는 것
  • 33. 기술을 넘어서기 ▪ 이미 기술은 풍부! ! ▪ 시장의 형성! ▪ 아름다움으로 승부하기
  • 34. ▪ 표준! ▪ 업계표준! ▪ 수많은 표준! ▪ 수많은 도구
  • 35. ▪ 은총알은 없다! ▪ 바퀴를 다시 만들 필요는 없다! ▪ 누군가는 이 문제를 겪었습니다.! ▪ 창조력, 아름답더라! ▪ 왜 오픈소스를 만드나?! ▪ 공유와 참여
  • 36. ▪ 오픈API! ▪ 매쉬업! ▪ 참여 개방! ▪ 클라우드! ▪ 빅 데이터! ▪ 대용량 분석
  • 37. 더 공부해야 할 사항 ▪ 설정도 @으로! ▪ Maven! ▪ UML! ▪ NoSQL! ▪ 하둡, 맵 리듀스! ▪ 반복반복반복 : 의도된
  • 38. 다음에 다시 만나요! ▪ 명세서 발표회! ▪ 작품 발표회
  • 39. 잊지 말아야 할 것 ▪ "The power of the web is in its universality.
 Access by everyone regardless of disability is
 an essential aspect." 
 - Tim Berners-Lee! ! ▪ "웹(WWW)의 힘은 보편성에 있다.
 불리한 조건에 관계없이 누구나 접근하는 것은
 웹의 필수적인 측면이다.“
 - 팀 버너스 리 (인터넷의 아버지: URL, HTTP, HTML 설계)
  • 40. 수고하셨습니다. ▪ 마지막! ▪ 새로운 시작! ! ▪ 우리도 통해야 합니다.! ▪ 스타플로 통해야 합니다.! ! ▪ 플렛폼이 되는 그날까지…! ▪ 위콘 파이팅!