Spring(55)
-
JPA - JPQL 조인(객체지향쿼리),Java Persistence Query Language
JPA - JPQL 조인(객체지향쿼리),Java Persistence Query Language JPQL 조인은 SQL 조인과 기능은 거의 같고 문법만 약간 다르다. 내부 조인(inner join) 12345678910111213141516171819202122232425/* * 내부조인 */public void innerJoin() { String jpql = "select m,t " + "from MemberJPQL m inner join m.team t " + "where t.name = '티스토리1' " ; Query query = em.createQuery(jpql); List members = query.getResultList(); System.out.println("=============..
2019.02.09 -
JPA - JPQL(객체지향쿼리),Java Persistence Query Language
JPA - JPQL(객체지향쿼리)(예제소스파일/ jpql package참조) JPQL은 가장 중요한 객체지향 쿼리 언어이다. Criteria나 QueryDSL은 결국 JPQL을 편리하게 사용하도록 도와주는 기술이므로 JPA로 데이터베이스 엑세스를 다룬다면 JPQL은 꼭 필수라고 생각이 든다. SQL과 꼭 닮은 쿼리 언어이며 SQL은 데이터 중심의 쿼리라고 하면 JPQL은 엔티티를 대상으로 하는 쿼리 언어라고 할 수 있다. 결국 JPA에서 해당 JPQL을 분석한 다음 적절한 SQL로 변환해주어서 데이터베이스에서 데이터를 가져오는 것이다.JPQL 특징1. 엔티티 객체를 조회하는 객체지향 쿼리이다.(테이블 대상이 아니다.)2. JPQL은 SQL을 추상화해서 특정 데이터베이스에 의존하지 않는다.(데이터베이스 방..
2019.02.09 -
Springframework QueryParameter 숨기며 뷰 리턴하는 방법
사실 아예 숨기는 것이라고는 말할 수 없지만 보통 사용자들이 보이지 않는다고 생각할 수 있는 쿼리파라미터를 생략한 뷰리턴 방법입니다. 사실상 보안에 강하다라는 그런 방법은 아닙니다. 단지 보이지 않을 뿐입니다. 123456789101112131415161718192021222324252627282930313233package com.kt.chatbot.ui.controller; import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springfr..
2018.10.23 -
Springframework @RequestBody 주의사항(?)
저와 같은 바보같은 분은 없을 것이라고 생각이 들지만 제가 겪었던 하나의 문제였기 때문에 작성해봅니다.... 만약 @Controller 클래스에서 요청바디에 넘어온 데이터를 받기위하여 @RequestBody라는 어노테이션을 다들 많이 쓰실 겁니다. 다른 분들은 절대 저와 같은 바보같은 짓을 하시지는 않으셨겠지만, 저는 요청 바디로 넘어온 데이터를 적절히 2개의 객체로 나누기 위해서 메소드 파라미터에 2개의 @RequestBody를 사용하였습니다. 근데 이게 뭐람 에러 뚜뚱... 에러가 발생하였습니다. 무슨 에러인가 막 찾아보고 고민하던 중에 중요한 사실을 알게되었습니다. 요청 바디로 넘어온 데이터를 받기위해 @RequestBody를 사용하는데 이 어노테이션은 스트림을 이용하여 요청바디의 데이터를 불러 온..
2018.09.30 -
JSR 250 / 330 어노테이션들의 사용법
@Inject / @Named 어노테이션JSR 330(자바 의존성 주입)은 자바 플랫폼을 위한 의존성 주입 어노테이션을 표준화해서 스프링의 @Autowired 및 @Qualifier 어노테이션과 비슷한 @Inject 및 @Named 어노테이션을 정의하고 있다. @Service("abc")public class A{@Autowired @Qualifier("bb")private B b;} 이러한 클래스와 대비해서 @Inject & @Named 어노테이션을 적용해보면 @Named("abc")public class A{@Inject@Named("bb")private B b;} 이와 같이 동일하게 적용할 수 있다. 즉, @Named 같은 경우 클래스 레벨에 적용되면 @Component,@Service 등등과 같은..
2018.08.12 -
Springframework <bean> depends-on 속성
의 depends-on 속성 applicationContext.xml에 빈정의에 대한 설정을 모두 마치고 실행하게 되면 빈의 생성은 선언한 순서대로 생성이 된다.(만약 의존하는 빈이 다른 위치에 있다면 그 빈을 먼저 생성하고 다시 순서대로 내려온다.) 하지만 명시적으로 의존성이 들어나지 않고 암시적으로 빈이 어떠한 다른 빈을 의존하고 있는 경우가 있을 수 있다. 만약 명시적으로 의존이 들어나 있다면 스프링컨테이너는 알아서 순서에 맞춰 빈을 생성해 주지만 암시적으로 겉으로 들어나지 않은 의존성 같은 경우는 컨테이너도 어쩔수가 없다. 예를 들면, 1234567891011121314 Colored by Color Scriptercs eventSenderSelectorService라는 빈이 생성될때, appCo..
2018.07.28