Java web development 10 (draft)
자바 웹 개발 시작하기
(10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)
2012. 1. 18
벌써 2년도 넘은 자료지만
그래도 필요하신분이 있을지 몰라서...
(지금보니 2년사이 많은것을 배운것 같네요 ㅎㅎ)
사실 마지막 주차는 발표자료 마무리가 부족하다.
그 당시 뭔가 급한일이 있어서;;; (일꺼라 추측)
지금와서 문서에 손을 대기는 좀 그래서 부족하지만 수정없이 배포한다.
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
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
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. 더 생각해볼 문제
▪ 왜 개발을 하나?!
▪ 그림은 왜 그리나?!
▪ 소설은 왜 쓰나?!
▪ 작곡은 왜 하나?!
▪ 창조적인 작업? 창조?!
▪ 왜 하는 것일까?!
!
▪ 왜 사나? 그냥, 재미로?!
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
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 설계)