Web Programming 18

ORM, JPA, Hibernate 이란 ?

안녕하세요 그간 작업 중이던 개발 작업을 마치고 요즘 JPA와 SpringBoot를 함께 사용하는 공부를 하고 있습니다 그 와중에 ORM 이란 말을 듣게 되었고 궁금해서 알아보고 JPA와 ORM을 포스팅으로 간단하게 정리해보고자 합니다 ORM ( Object-Relational Mapping ) 관계형 데이터베이스(Relational Database)의 데이터와 객체(Object)를 변환 및 연결(Mapping)하여 관리하는 기술 연결된 가상 객체 데이터베이스(Virtual Object Database)를 프로그래밍 언어 내에서 사용해서 실제 데이터베이스를 관리하는 기술 = 객체를 통한 데이터베이스 관리 기술 장점 개발자가 직접 SQL문을 작성하지 않아도 연관관계(Mapping)를 바탕으로 자동으로 SQ..

자주쓰는 어노테이션

스프링 부트를 배우는 중에 모르는 어노테이션들이 상당해서 자주 쓰는 어노테이션만 따로 정리를 해봅니다 @SpringBootApplication 이 친구는 @SpringBootConfiguration + @EnableAutoConfiguration + @ComponentScan 인 복한 접인 친구입니다 간단하게 생각하시면 그냥 스프링 부트의 main method를 표시해준다 라고만 생각해보 사용하는데 지장이 없을 것 같습니다 구체적으로는 component를 스캔해서 bean을 생성하고 (@ComponentScan) 스프링부트 설정을 로드하며 (@SpringBootConfiguration) 자동 환경 설정을 수행하는 어노테이션입니다 (@EnableAutoConfiguration) 출처 : http://dve..

Genric

요즘 스프링 부트 2로 개발 공부를 하던 중에 이해가 안 가는 코드가 있어서 검색을 해보았고 어느 정도 이해한 내용을 정리해보기로 했습니다. List List 코딩을 하다가 이런 문법을 자주 보셨을 겁니다 저는 'List는 크기가 없는 배열이구나!'라고 인식하고 있었고 대충 어림짐작으로 안의 내용은 타입을 지정해주는 것이고 ? 는 지정되지 않은 타입을 바인딩할 때 사용한다고 생각하고 사용해왔습니다 실제로 이렇게만 알고 있어도 List를 사용하는 데는 지장이 없었습니다 그런데! 오늘 이 코드를 보고는 생각이 바뀌었습니다 1 2 @Select(strategy = SelectType.COLLECT) R selectAll(final UserCriteria criteria, final SelectOptions o..

Model 1 , Model 2, MVC

한동안 프로젝트가 많아서 포스팅을 못했내요 아직 스프링 프레임워크를 다루는데 서툴러서 한번더 스프링을 복습하고 있습니다 Model 1 2000년대 초까지 자바 기반 웹 어플리케이션 개발에 사용된 아키텍처 입니다 Model 1 아키텍처는 위의 구조와 같이 JSP 파일이 뷰+컨트롤러를 동시에 구성하고 모델은 JavaBean 이 구성하는 형태를 가지고 있습니다 하나의 JSP 파일에서 뷰+컨트롤러 모두를 구성하기에 코드는 복잡해지고 유지보수는 힘들어지는 단점이 존재 합니다 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 ..

Javascript 를 이용한 모바일 화면회전 서치

이번 프로젝트는 반응형 웹을 제작하였지만 급하게 진행되는 바람에 모바일 가로형을 생각하지 않고 진행이 되었고 뒤늦게 가로모드를 차라리 못쓰게 해달라는 요청을하셔서 이를 반영했습니다. 1. 디바이스의 회전을 막는다. - 이는 어플리케이션으로 제작하여 권한을 얻지 못하는한 모바일 브라우저에서는 불가능한 기능입니다. 2. 가로방향 회전을 감지해 반대방향으로 회전시킨다. - 구글링해서 찾았던 처음의 방법입니다. (관련 API 가 존재하는듯 하지만 지원하지 않는 브라우저가 많습니다.) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 $(window).bind('orientationchange resize', function(event..

캐시 갱신하기

오랫만에 포스팅합니다. 그간 프로젝트가 막바지라 너무 바빳내요 ... 시간날때 밀린것들 한번 기록해봐야 겠내요. 이번 프로젝트를 진행하면서 굉장히 짜증이 났던건 클라이언트가 요구한 사항을 반영해줬는데도 클라이언트는 반영이 안됬다고 하고 캐시를 매번 지우라고 말하는게 굉장히 번거로웠습니다. 그러던 찰나에 고수분께서 캐시를 갱신하는 방법을 알려주셨습니다. js 파일이나 css 를 변경할경우 이들은 캐시에 저장되어 있어서 반영이 안되는 경우가 다반사입니다. 저희가 개발을 할 때에는 캐시를 비우면서 작업하면 되지만 클라이언트 측은 신경을 쓰지 않아야 하는것이 옳은것 같습니다. 캐시는 일종의 버퍼 입니다. 매번 페이지에 접속할 때마다 파일을 로드하는것이 아닌 캐시에 저장되어 있는 파일은 새로 받지 않고 캐시에서 ..

Web Programming/PHP 2019.08.22

의존성 관리

Spring의 의존성 관리 방법에 대해 이야기해 보겠습니다. Spring은 IoC ( 제어의 역행 )을 지원하여 객체의 생성과 의존관계를 컨테이너가 자동으로 관리합니다. 이 IoC는 두 가지 형태로 지원됩니다. Dependency Lookup 컨테이너가 객체를 생성하고 클라이언트가 객체를 요청하여 사용하는 방식을 말합니다. Dependency Injection 객체 사이의 의존관계를 설정 파일에 입력된 정보에 따라 컨테이너가 자동으로 관리해주는 방식을 말합니다. 따라서 의존성 설정을 바꾸고 싶을 때 프로그램 코드를 수정하지 않고 Spring 설정 파일 수정만으로 변경사항을 적용할 수 있어서 유지보수가 향상됩니다. Constructor Injection ( 생성자 인젝션 ) 컨테이너가 등록된 클래스를 찾아..

<bean> 엘리먼트 속성

init-method 스프링 컨테이너는 등록되어 있는 bean 의 객체를 생성할 때 디폴트 생성자를 호출한다. 따라서 객체를 생성한 후에 멤버변수 초기화 작업이 필요하다면 사용하는 속성이다. 1 *id : bean 객체를 구분하는 식별자이다. java 파일에서 id 값을 통해 해당 객체를 요청한다. *class : 해당 class의 경로를 나타내는 요소이며 id 속성과 다르게 필수요소이다. 이처럼 을 등록 할 때, init-method 를 지정해두면, 객체의 생성을 위해 해당 class 로 이동하고 "initMethod" 를 찾아서 초기화를 진행하게 된다. destroy-method 스프링 컨테이너가 객체를 삭제하기 직전에 호출될 메소드를 지정하는 속성이다. 1 위와 같이 사용되며, 객체가 삭제되기 직전..

Spring 프레임워크 기본구조

학교에서 공부할 때와는 다르게 개발자가 되니 프레임워크를 사용하게 되었습니다. 요 근래 사용해본 프레임워크는 eGov(Spring) , 코드이그나이터 였습니다. 그중에 Spring 프레임워크에 대한 숙련도를 높이고자 책에서 배운 것을 이곳에 정리하며 배우려고 합니다. FrameWork '아키텍처(≒하드웨어)에 해당하는 골격 코드' 라고 이해하고 있습니다. 개발자들에게 기본적인 골격을 제공하고 개발자들은 기본골격에 살을 붙이는 식으로 개발을 하여, 개발자들의 해당 애플리케이션에 대한 분석, 설계, 구현에 대한 이해도가 '상향평준화' 시키는데 그 목적이 있다고 생각합니다. (간단하게는 누구나 유지보수하기 쉽게 최대한 통일하자 라고 생각합니다) Spring FrameWork JAVA 플랫폼 경량화 프레임워크의..

jQuery 를 이용한 SelectBox Selected 하는법

저번부터 이어서 작업하는 내용에 버튼이 전부 셀렉트 박스로 바뀌어버려서 기능을 전환시키는게 좀 힘들군요 ... 버튼을 누루면 눌린 버튼을 유지해지는 기능이 달려있는 상태인데 그걸 셀렉트박스에 selected 옵션으로 구현해야 하는경우가 굉장히 많이 있었습니다 생각보다 자주 사용하는데 바빠서 정리를 못했습니다 보통은 컨트롤로에서 플래그를 주고 selected 를 제어했는데 이번엔 좀 특이한 케이스여서 jQuery 로 제어하게 되었내요 1 2 3 선택 예시로 이러한 SelectBox 가 존재할 경우에 value 값이 '1' 인 옵션을 selected 시켜주고 싶으면 1 $("#flag").val("1").prop("selected", true); 이런식으로 사용해주면 됩니다. 추가로 '이외의 옵션을 선택하지..