본문 바로가기

development

커스텀 접근자 Custom 접근자코틀린은 기본적으로 프로퍼티를 선언시 getter와 setter가 자동으로 생성된다. 여기서 커스텀 getter를 다음과 같이 정의 할 수 있다.class Person { var name: String var age: Int get() { println("execute getter") return age } } field식별자는 커스텀 getter에서 값을 저장해서 사용한다. 게터에서는 f..
Kotlin으로 개발 할 때 주의할 점(1) Kotlin으로 JPA를 이용해 개발할 때 주의할 점인자없는 기본생성자JPA의 Entity들은 기본적으로 인자없는 기본생성자가 필요하다. 하지만 코틀린에서 주생성자가 있다면 기본생성자가 없다. 디폴트 파라미터를 통해 기본생성자가 생성되게 할 수 있지만 프로퍼티가 많아지면 모든 Entity에 디폴트 파라미터를 넣기 힘들어진다. 다음과 같이 해결 할 수 있다.dependencies { ... // JPA entity들은 기본적으로 기본생성자가 필..
JPA 영속성 컨텍스트와 Entity 관계설정 기본 JPA 기본EntityManagerFactory & EntityManagerEntityManagerFactory: EntityManager를 만드는 공장Datasource하나당 하나의 EntityManagerFactory를 만들어 사용EntityManagerFactory를 생성하는 작업은 비용이 크기 때문에 싱글톤으로 만들어 사용Thread-safeEntityManagerFactory emf = Persistence.createEntityMa..
Optimistic Lock과 Pessimistic Lock JPA에서의 Isolation With LockJPA는 데이터베이스 트랜잭션 격리 수준을 READ COMMITTED 정도로 가정한다. 일부 로직에 더 높은 격리 수준이 필요하면 낙관적 락과 비관적 중 하나를 사용하면 된다.Optimistic Lock(낙관적 락)버전정보를 이용하여 업데이트를 처리하는 방법버전정보로 사용할 컬럼에 @Version 애너테이션을 부여해야함optimistic locking is based on detecting changes..
HikariCP 세팅시 옵션 설명 HikariCP 옵션jdbcUrl, username, password는 너무 기본적인 내용이라 생략하겠습니다.HikariCP설정의 시간 단위는 ms입니다.autoCommit: auto-commit설정 (default: true)connectionTimeout: pool에서 커넥션을 얻어오기전까지 기다리는 최대 시간, 허용가능한 wait time을 초과하면 SQLException을 던짐. 설정가능한 가장 작은 시간은 250ms (de..
Gradle 빌드시스템 기초 GradleGradle Wrapper를 사용하는 목적이미 존재하는 프로젝트를 새로운 환경에 설치할때 별도의 설치나 설정과정없이 곧 바로 빌드할 수 있게 하기 위함(Java나 Gradle도 설치할 필요가 없음. 또한 로컬에 설치된 Gradle 또는 Java의 버전도 신경쓸 필요가 없음. 따라서 항상 Wrapper를 사용할 것을 권장.)gradlew 파일유닉스용 실행 스크립트.Gradle로 컴파일이나 빌드 등을 할때, 아래와 같이 하면 로컬에 설치된 g..
Spring boot logback 설정 Spring boot logback 설정classpath(resource디렉토리 밑)에 logback-spring.xml파일이 있으면 Boot가 설정파일을 읽어감.logback-spring.xml파일이 없다면 .yml(.properties)파일의 설정을 보게됨.설정시 특징<appender name="privateLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> ..
Spring boot profile 적용하기 Spring Boot Profile 설정Spring Boot를 사용하기 전에는 maven을 이용했다면 <profile> 태그를 이용하여 profile을 설정하였다.Spring Boot를 이용하면 보다 손쉽게 profile을 설정할 수 있다.참고 docs : https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#..