스프링(23)
-
JPA - NativeQuery ( SQL ) 네이티브 SQL 사용하기!
JPA - NativeQuery ( SQL ) 네이티브 SQL 사용하기!JPA는 SQL이 지원하는 대부분의 문법과 SQL 함수들을 지원하지만 특정 데이터베이스에 종속적인 기능은 잘 지원하지 않는다. 하지만 때론 특정 데이터베이스에 종속적인 기능이 필요할 수도 있다. 다양한 이유로 JPQL을 사용할 수 없을 때, JPA는 SQL을 직접 사용할 수 있는 기능을 제공하는데 이것을 네이티브 SQL(네이티브쿼리)라고 한다. 즉, 사용자가 직접 데이터베이스에 날리는 쿼리를 작성하는 것이다. 그렇다면 JPA가 지원하는 네이티브 SQL과 JDBC API를 직접 사용하는 것에는 어떤 차이가 있냐? 그것은 바로 네이트브 쿼리는 엔티티를 조회할 수 있고 JPA가 지원하는 영속성 컨텍스트의 기능을 그대로 사용할 수 있다는 것..
2019.02.11 -
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 -
Springframework(스프링) p & c schema 사용하기
스프링프레임워크 p & c schemaservlet context & servlet xml 설정파일에서 , 로 속성을 정의하지 않고 간결한 표현을 제공하는 것이 p와 c schema이다.말로 설명하는 것보다는 간단한 예제를 통해서 보는 것이 이해가 빠르다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081package sample.spring.chapter03.beans; import java.util.Currency;import java.util.Date; public class ..
2018.07.10 -
Spring(스프링) Transaction(트랜잭션) 범위설정
Spring Transaction(트랜잭션) 범위 설정하기 1.예외 상황(트랜잭션 범위설정이전)123456789101112131415161718192021public void insertUserTest() { UserDTO user1=new UserDTO(); UserDTO user2=new UserDTO(); UserDTO user3=new UserDTO(); user1.setId("test@test.com"); user1.setPw("1111"); user1.setNickName("tester"); user2.setId("test1@test.com"); user2.setPw("1111"); user2.setNickName("tester1"); user3.setId("test@test.com"); us..
2018.03.07