본문 바로가기

Server

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..
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#..
JPQL 빌더 클래스 QueryDsl 사용법 QueryDsl이란?JPQL의 빌더(Criteria)클래스QueryDsl 사용전 설정dependency 추가dependencies { compile("com.querydsl:querydsl-core:4.2.1") compile("com.querydsl:querydsl-apt:4.2.1") compile("com.querydsl:querydsl-jpa:4.2.1") compile("com.querydsl:querydsl-collectio..
Spring test 와 Junit4를 이용한 테스트 Junit 4 & Spring Test을 이용한 TDD 환경 세팅(다음은 Spring boot를 이용하지 않은 애플리케이션에서의 테스트 환경이다.)SpringTestSupport 클래스에 설정 후 이 클래스를 상속받아 테스트를 개발함.@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { RootContextConfig.class }, loader = ..
Spring boot starter test 와 Junit5를 이용한 테스트 Junit 5 & Spring Test을 이용한 TDD 환경 세팅기본 세팅@ExtendWith(SpringExtension.class) @SpringBootTest(classes = KkApplication.class) @ActiveProfiles("test") public abstract class SpringTestSupport { } TestContext를 사용하려면 위의 SpringTestSupport를 상속받아 테스트 코드를 개발한다..