본문 바로가기

Programming/Java & JSP & Spring

(76)
[JPA] 특정 칼럼을 제외하고 INSERT, UPDATE하는 방법 보통 JPA는 SAVE시에 모든 칼럼을 INSERT한다.그럴 경우, NOT NULL로 설정된 칼럼은 기본값으로 삽입되는것이 아닌 NULL로 삽입을 시도한다.이로 인해 에러가 발생하는데, 이럴 경우에 아예 쿼리에서 빼버려서 실행이 안되게 만들 수 있다.쿼리에서 제외된 칼럼은 DB에 지정된 default값으로 삽입이 된다. 특정 칼럼을 제외하고 save하는 방법은 다음과 같다.@Column(insertable=false, updatable=false)private String defaultField;
[SpringBoot] JPA 언더바 자동변경 방지 JPA와 MySQL을 연동해서 사용할 경우, 테이블이름이나 칼럼명을 언더바(_)가 아닌 대문자 형식(ex: MyTable)으로작성하는 경우가 있다. 이 경우에 Entity의 테이블 이름을 MyTable로 작성하면, Spring JPA에서 자동으로 my_table로 변경해버려서에러가 발생한다. 이때는 프로퍼티 설정에서 Naming Strategy를 아래와 같이 작성하여 언더바 자동 변경을 방지해주어야 한다.# 언더바 자동변경 방지 spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl spring.jpa.hibernate.naming.physical-strat..
[SpringBoot]프로퍼티 DB 설정 옵션 initialSize : 풀의 초기 커넥션 갯수maxActive : 최대 커넥션 갯수maxWait : 커넥션이 존재하지 않을 때, 커넥션을 얻기까지 대기하는 최대 대기시간maxIdle : Idle상태에 풀이 소유한 최대 커넥션 갯수testOnBorrow : 풀에서 커넥션을 가져올시 커넥션의 유효성 검사testOnReturn : 풀에 커넥션을 리턴할 때 커넥션의 유효성 검사validationQuery : validate QuerytestWhileIdle : Idle상태에 커넥션의 유효성 검사timeBetweenEvictionRunsMillis : 설정된 주기를 통해 Evict(유효하지 않는 커넥션/정의된 시간이 만료된 커넥션을 풀에서 제거) 쓰레드를 수행minEvictableIdleTimeMiilis : ..
POJO 란? POJO 란? Plain Old Java Object의 약자로 직역을 하자면 평범한 구식 자바 오브젝트이다.무거운 EJB와는 반대로 경량의 자바 객체를 강조하는 의미로 사용했다. 이렇게 정의만 봐서는 무슨 말인지 이해하기가 힘들다.먼저 EJB를 대체해서 나왔다고하니 EJB가 무엇인지 알아보자. EJB?EJB란 Enterprise JavaBean의 약자로 자바의 기술 중 하나다. IT시스템이 점점 증대되고 그에 따라 점점 복잡한 기술이 요구되었으며 자바의 기초적인 JDK만으로는그것을 충족시킬 수 없었다. 서버 기반의 자바 기술인 J2EE가 등장했지만 Servlet, JSP 레벨의 최소한의서버 프로그래밍 인터페이스만 가지고는 복잡한 애플리케이션을 제작하는 것은 쉽지 않았다. 이런 것을 보안하기 위해 나온 것..
JPA 사용법 (JpaRepository) JPA에 대한 개념은 이해가 갔지만 처음 코드를 접했을 땐 이해 안가는 부분이 많았다.그래서 잘 정리된 블로그를 참고해 다시 한번 사용법을 알기 쉽게 정리해보고자 한다. Entity먼저 데이터베이스에 저장하기 위해 유저가 정의한 클래스가 필요한데 그런 클래스를Entity라고 한다. Domain이라고 생각하면 된다. 일반적으로 RDBMS에서 Table을 객체화 시킨 것으로 보면 된다.그래서 Table의 이름이나 컬럼들에 대한 정보를 가진다./** * Created by Itner on 2017. 7. 20.. */ @Entity public class Member { @Id @GeneratedValue(strategy= GenerationType.AUTO) private long id; @Column pr..
톰캣(Tomcat)과 아파치(Apache) 차이 보통 우리는 컴퓨터를 사용할 때 웹 페이지를 띄워서 정보를 검색하고 다양한 콘텐츠를 즐긴다.예를 들어 내가 유투브에서 동영상이 보고 싶다면, 웹 브라우저(크롬, 파이어폭스, IE)에서 유투브의URL(www.youtube.com)을 쳐서 해당 페이지에 접속을 한다. 그러면 해당 페이지에서는 사용자가 원하는 화면을 보여주고 정보를 제공한다. 바로 이것이 클라이언트(사용자)와 서버(유투브 서버)의 상호 작용이다. 클라이언트와 서버를 통신을 가능하게 하는 것이 브라우저이며, 브라우저는 클라이언트는 원하는 것을요청(request)하고 서버에서는 사용자가 원하는 것에 응답(response) 한다. 아파치 (Apache)- 아파치 : 아파치 소프트웨어 재단 - 아파치 서버 : 'open source' 라이선스에 따라..
JPA(Java Persistence API)란? JPA(Java Persistence API)란? JPA는 여러 ORM 전문가가 참여한 EJB 3.0 스펙 작업에서 기존 EJB ORM이던 Entity Bean을JPA라고 바꾸고 Java SE, Java EE를 위한 영속성(Persistence) 관리와 ORM을 위한 표준 기술이다. 그렇다면 ORM은 무엇일까?ORM(Object Relational Mapping)이란 RDB 테이블을 객체지향적으로 사용하기 위한 기술이다.RDB테이블은 객체지향적 특징(상속, 다형성, 레퍼런스, 오브젝트 등)이 없고 자바와 같은 언어로 접근하기쉽지 않다. 때문에 ORM을 사용해 오브젝트와 RDB사이에 존재하는 개념과 접근을 객체 지향적으로다루기 위한 기술이다. JPA를 쓰는 이유?먼저 JPA를 제외하고 자바를 통해 DB에 ..
[SpringBoot] 스프링 부트 시작하기 전에 스프링부트를 시작하기 전에 많은 낯선 용어로 어려움을 겪었다. 먼저 스프링부트란 무엇인가?스프링 프레임워크를 사용한 프로젝트를 아주 간편하게 SETUP 할 수 있는 스프링프레임워크의 서브프로젝트이다. WAR파일을 배포할 필요없이 내장된 Tomcat, Jetty, Unertow 를 이용해 실행만 시키면 내장 서버에 배포되어 바로 실행된다.많이 사용하는 라이브러리를 모아놓은 (Starter)POM 파일로 관리가 쉽다.자동설정으로 인해 더 이상 XML 설정이 필요하지 않다. 그렇다면 스프링부트를 왜 사용할까?위에서도 장점을 설명했지만, 기존의 스프링 프레임워크를 이용한 개발 구축은 많은 XML 설정 파일등의 작성량을 요구했다.그래서 잘 만들어놓은 설정파일을 복사해서 사용하거나 검색을 통해 얻은 정보를 그대로 ..