본문 바로가기

Java

Spring Boot 에 JOOQ 설정하기. 새로운 스프링 프로젝트를 만들때, Spring Initalizr를 사용한다. Spring Initializr 는 인터넷이 연결된 상태에서만 설정이 가능하고, 기본적으로 https://start.spring.io 를 통해서 Service를 제공 받는다. Java Build Tool 인 Maven과 Gradle 둘 중에 하나를 선택하여서 프로젝트를 설정할 수 있다. JOOQ 는 Java Object Oriented Querying 의 준말로, 말그대로 Java 코드로 SQL을 작성할 수 있게 해주는 프로젝트다. 최근 런칭한 한 서비스에서 JPA와 JOOQ를 주 기술로 사용하였다고 한다. JOOQ는 JPA와 마찬가지로, DataBase에 상관없이 사용할 수 있다. 스프링 부트에서 JOOQ를 설정하는 것은 아주.. 더보기
마이바티스(MyBatis) 동적 쿼리 Java로 만들기. 스프링은 3.0 부터 Java Config를 지원하기 시작했고, 스프링 부트는 XML 설정 없이 동작 한다. (물론 여전히 XML 설정은 가능하다.) 마이바티스 또한, XML 설정 없이 Java 클래스만을 사용하여서, 동적 쿼리 생성이 가능하다. 스프링부트까지 사용하면 금상첨화다. 먼저, 회원 목록을 조회할 Controller를 작성하자. 화면에서, "/members" 요청이 들어오면, 회원 목록의 JSON 문자열을 반환하게 한다. Controller 의 요청을 받을 Service 클래스도 아래와 같이 작성한다. 이제부터 시작이다. Service 의 요청을 처리해 줄 Mapper 인터페이스를 만든다. (DAO로 혹은, Repository로 이름짓기도 한다.) @Mapper interface MemberM.. 더보기
마이바티스(MyBatis) Mapper XML 파일 빌드에 추가하기. 스프링 부트에서 마이바티스 XML로 설정하기. XML 파일로 매퍼를 설정했지만, 왠지 XML 매퍼도 JAVA 패키지 안에 넣고 싶다. (위의 프로젝트는, XML 파일이 resource 파일안에 있다.) 하지만, Maven 빌드를 할 경우, XML 파일은 빌드되지 않는다. 분명, MemberMapper.xml 파일이 존재하지만, 빌드 하면.. 아래와 같이 MemberMapper.xml 파일은 제외하고 빌드 된다. 이때는 Maven의 pom.xml 파일에 아래와 같이 설정을 추가하면 된다. 물론, 주의 깊게 봐야할 부분은.. includes 부분이다. 모든 폴더의 모든 xml 파일을 빌드에 추가하겠다는 설정이다. **/*.xml 설정을 추가하고, 다시 package 하면.. MemberMapper.xml 파.. 더보기
Spring Boot에 MyBatis 설정 하기. (2) 스프링 부트에 마이바티스 설정하기. 위 포스팅에서 스프링 부트에 마이바티스를 설정하는 방법을 알아봤다. 하지만 어노테이션에 쿼리를 작성해야한다는 점이 마음에 걸린다. 마이바티스로 작성하게 되는 쿼리가 한두줄로 가능한 쿼리도 아니고, 어노테이션으로 처리하기에는 부담이 크다. 물론, 아래와 같이 변수로 선언해서 사용할 수도 있다. 그리고 XML로 쿼리를 저장하는것도 당연히 가능하다. 먼저 마이바티스 매핑 XML을 저장할 폴더를 아래와 같이 추가한다. resource/mapper/MemberMapper.xml 여기서 눈여겨봐야할 것은 바로 namespace 값이다. namespace의 값은, MemberMapper.xml의 쿼리를 호출할 Mapper Class의 경로와 클래스명으로 하도록 해야한다. 이렇게 하.. 더보기
Spring Boot에 MyBatis 설정 하기. Spring Boot(http://projects.spring.io/spring-boot/)에 MyBatis(http://blog.mybatis.org/)를 설정하려면 어떻게 해야할까? 스프링(http://spring.io/)은 계속해서 발전하였고, 지루한 설정의 반복을 없애주는 스프링 부트도 이제 1.4버전이 출시되었다. 스프링 부트는 대부분의 최신 라이브러리를 모두 지원한다. 하지만, 유독 우리나라에서"만" 인기가 많은 MyBatis는 공식적으로 지원하지 않고 있다. 물론, 이제는 JPA를 사용해야한다는 목소리가 점점 커지고 있지만, 여전히 우리에게 가장 친숙한 ORM 프레임워크는 MyBatis이다. 스프링 부트의 자동 설정에 대해서 궁금하다면, 스프링 부트 코딩 공작소를 읽어보기를 추천한다. 다행히.. 더보기
SpringData 관련 오류. org.springframework.data.mapping.PropertyReferenceException ... Traversed path ... Spring Data JPA를 사용하면, QueryMethod를 사용할 수 있다. 위 오류는, 사용한 메서드명이 잘못되었을때 발생한다. 메소드명으로 올바른 쿼리를 추측할 수 있는지, 다시 한번 확인해 보자. 더보기
구글 Guava를 활용한 List 생성. 구글 구아바(Google Guava)는 구글에서 발표한, Java Library이다. Java 개발자라면 한번쯤 이런 Util이 있으면 좋을 텐데.. 라고 생각했던 Common Util Class의 집합이라고 보면 될 것 같다. 그 중에서, List를 간단하게 생성하는 방법을 소개해보려고 한다. 먼저, 아래와 같이 Maven Dependency를 추가하면, Guava를 사용할 수 있다. com.google.guava guava 19.0 "매우만족, 만족, 보통, 불만족, 매우불만족" 위와 같은 5개의 String을 가지는 List를 만들려고 한다. 그럼, Guava가 제공하는 Collet 관련 Util인 Lists를 활용하면 된다. 아래와 같이 간단하게, List를 생성할 수 있다. final List .. 더보기
Spring Security Basic 인증 비활성화 설정 스프링 시큐리티 기본 인증 비활성화 설정 프로젝트의 application.properties 파일 혹은, application.yml 파일에 아래의 설정을 추가한다. security.basic.enabled: false 더보기
Lombok - 롬복 자바를 바탕으로 한 프로젝트를 하다 보면, 수많은 Bean 클래스를 만들게 됩니다. 그리고 모든 Bean 클래스에 들어가는 똑같은 형식의 코드를 작성하게 됩니다. 예를 들자면, 대략 아래와 같은 경우입니다. public class Member { private Long memberId; private String memberName; private String memberAddress; public Member() { } public Member(Long memberId, String memberName, String memberAddress) { this.memberId = memberId; this.memberName = memberName; this.memberAddress = memberAddre.. 더보기
Aspect 어노테이션 사용을 위한 설정. 스프링에서 Aspect 어노테이션을 사용하기 위해서는 아래와 같은 XML 설정이 필요하다. 더보기