분류 전체보기 21

JPA - 동작원리 및 영속성 컨텍스트

지난번 포스팅에 이어서 JPA 동작 원리에 대하여 정리해볼까 합니다 주관적인 견해가 있을 수 있으므로 너무 신뢰하지 않으셨으면 합니다 JPA의 기본 동작 요약 설정 파일을 통해서 JPA를 설정한다 EntityManagerFactory를 생성한다 EntityManager를 생성하여 Entity를 영속성 컨텍스트(Persistence Context)를 통해 관리한다 EntityManagerFactory EntityManager를 생성하는 객체입니다 하나의 EntityManagerFactory는 애플리케이션 전체에서 공유됩니다 - 싱글톤 EntityManager Entity를 관리하는 객체입니다 동시성의 문제가 발생할 수 있으니 쓰레드 간에 공유하면 안 됩니다(요청:객체 = 1:1) 모든 데이터 변경은 트랜잭..

카테고리 없음 2020.11.12

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 ..

문법

저번 포스팅에 이어서 코틀린의 기본문법을 이해하기 쉽게 자바와 비교하며 정리해보겠습니다 1. 변수와 상수 Java Kotlin 1 2 3 4 5 // type name int i; double d; String s; final String constant; 1 2 3 // valType name : dataType value var variable: Int val constant: Int Java - "형타입 변수명;" 으로 변수를 선언하며 사용하려는 변수를 명시해 주어야 합니다 Kotlin - "var 로 변수임을 명시하고 이름을 정해준다음 : (콜론) 으로 형타입"을 선언해주면 됩니다 (형타입은 생략 가능합니다) val 로 상수임을 명시해주는 것 말고는 변수선언과 동일합니다. Java의 final 에..

코틀린(Kotlin)

오랫만에 포스팅 합니다 프로젝트가 밀려서 자주 못들어왔습니다 이번 포스팅내용은 안드로이드OS 언어인 코틀린(Kotlin) 입니다 요근래에 원치 않게 안드로이드 소스코드(Java)를 접하게 되었습니다 Java 초보이며 안드로이드 어플리케이션 개발은 5~6년전 대학교 강의 한학기 수강이 전부인 저는 멘붕에 빠졌고 어플리케이션 쪽도 공부를 해야겠다고 생각하여 기왕 하는거 최신버전인 코틀린으로 배워보자라고 생각해서 코틀린관련 포스팅을 해보려 합니다 Kotlin 코틀린이란, JetBrains 사에서 2011년에 공개한 프로그래밍 언어입니다 오라클과의 Java API 저작권 분쟁으로 탄생한 것으로 알고 있습니다 (정확히 아시는분 알려주시면 감사하겠습니다) JVM 기반 언어여서 Java 와 100% 호환됩니다 ; (..

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 ( 생성자 인젝션 ) 컨테이너가 등록된 클래스를 찾아..