Repository Files NoSQL DBMS Browser Presentation Layer Pure HTML JavaScript Desktop Java Application Others J2EE, Android JSP RestfulAPI Servlet Business Logic Layer Controller Service Domain Layer DAO Model DTO
씨앗 프로젝트 <modules> <module>seaat-core</module> <module>seaat-domain-jpa</module> <module>seaat-domain-mongodb</module> <module>seaat-domain-dto</module> <module>seaat-jobserver</module> <module>seaat-apiserver</module> <module>seaat-webapp</module> </modules>
WebApp Services
Domain Core
find findAll isActiveUser
public enum BinaryStringFormat { /** Base 64 Encoding */ Base64, /** Hex decimal encoding */ HexDecimal } public enum SortDirection { /** 올림차순 */ ASC, /** 내림차순 */ DESC } enum 명명 규칙은 기본적으로는 상수 명명규칙과 같다 다만 요즘은 Class 명명규칙을 사용하기도 한다
try { thread.join(); } catch (InterruptedException ignored) { log.debug("스레드 종료 대기 중에 interrupted exception 이 발생했습니다."); } 발생한 예외를 무시할 경우에는 ‘ignored’ 로 무시함을 표현해라 switch (format) { case HexDecimal: return byteArrayToHexString(bytes); case Base64: return byteArrayToBase64String(bytes); default: throw new NotSupportedException("지원하지 않는 format 입니다. format=" + format); } switch 구문에서는 꼭 default: 를 이용하여, 처리되지 않는 case 가 없도록 한다.
@Slf4j public final class StreamEx { private StreamEx() {} public static IntArrayList asIntArrayList(@NonNull IntStream intStream) { return IntArrayList.newListWith(intStream.toArray()); } static method 만 있는 static class 는 private 생성자를 정의하라
Abstract class 의 생성자는 protected 로 선언해라 상속받는 Concrete class 에서 public constructor 를 정의한다. @Getter public abstract class AbstractConfigElement { protected final Config config; protected AbstractConfigElement(@NonNull Config cfg) { this.config = cfg; } }

Java naming strategy (자바 명명 전략)