legacy
-
[Spring] JdbcTemplate을 사용하여 DB에 저장할 때, 키(PK) 값 가져오기legacy/Spring 2023. 11. 1. 17:16
원인 Repository를 테스트할 때 key 값에 null이 저장되어 있어 DB 조회가 불가능한 상황이다. DB DB의 키(PK) 값은 auto_increment 전략을 사용하고 있다. Application 시점에서는 DB에 값을 저장하더라도 키 값을 알 수가 없다. 이는 테스트 코드에서 DB에 정상적으로 저장됐는지 확인하는 과정에서 문제가 발생한다. Application jdbcTemplate.update("INSERT INTO Member(login_id, name, password) VALUES(?, ?, ?)",member.getLoginId(), member.getName(), member.getPassword()); JdbcTemplate을 사용하여 DB에 Member 객체를 저장하였다. T..
-
[Spring] Dependency 모음legacy/Spring 2023. 10. 31. 16:39
Test에서 Lombok 사용 //테스트에서 lombok 사용 testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' MySQL runtimeOnly 'mysql:mysql-connector-java' Jdbc DataSource 사용하려면 필요 implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'
-
[JPA] 준영속 상태 엔티티 -> 영속 상태 엔티티로 만들기, merge() (old2)legacy/JPA 2023. 9. 24. 15:11
1. 비영속 상태의 엔티티 생성 영속성 컨텍스트(PersistContext)에 한 번도 저장된 적이 없는 Member를 생성합니다. EntityManager를 통해 persist를 하지 않았기 때문에 비영속 상태입니다. void test() { // member1 생성 Member member1 = new Member(); member1.setName("member1"); } 2. 비영속 상태 -> 영속 상태 EntityManager를 통해 Member를 persist하였습니다. 따라서 영속성 컨텍스트에 의해 관리되는 영속 상태의 엔티티가 됩니다. (DB에서 조회되지 않는다.) void test() { // member1 생성 Member member1 = new Member(); member1.setN..
-
[Kotlin] when문을 사용하여 다양하게 처리하기legacy/Kotlin 2023. 9. 21. 21:12
코틀린에서 when절은 다른 언어에서 제공하는 switch-case문과 동일합니다.(코틀린도 제공) is 키워드와 in 키워드를 통해서 when문을 사용하는 코드를 알아봅시다. 기본적인 when문 코틀린도 다른 언어와 마찬가지로 switch-case와 동일한 기능인 when문을 제공합니다. -> 기준으로 왼쪽은 a에 해당하는 값이고 오른쪽은 왼쪽 값이 true인 경우 실행할 코드입니다. fun main() { var a: Int = 10 when(a) { 10 -> println("a = 10") else -> println("a != 10") } } in과 is를 사용하는 when문 in 키워드의 경우 when문에서만 사용할 수 있는 것이 아닌 if-else문 등 다양하게 사용할 수 있습니다. is 키..
-
[Kotlin] 동등성 비교와 동일성 비교 그리고 캐시 조회legacy/Kotlin 2023. 9. 19. 09:21
코틀린에서 "=="와 "===" 연산자를 제공합니다. "=="은 동등성 비교(값 비교)를 제공하고 "==="은 동일성 비교(참조값 비교)를 제공합니다. 얼핏 보면 쉬운 내용이면서도 헷갈리는 부분이 존재합니다. "=="와 "==="의 차이점 그리고 캐시로부터 값을 가져오는 상황을 이해해봅시다. 동등성(==) 비교 ==는 동등성 비교를 제공합니다. 아래에 num1 변수가 존재합니다. 코틀린의 특성상 참조형 변수로 선언되었지만, 컴파일 시에 참조형 -> 기본형으로 변경되어 저장됩니다. 즉 주소값을 저장하는 것이 아니라 값 그 자체를 저장하게 됩니다.(힙에 저장되는 것이 아닌 스택에 저장됨) 따라서 num1과 num2의 동일성 비교에서 true를 반환합니다. fun main() { var num1: Int = ..
-
[JPA-Error] IllegalArgumentException: Cannot create TypedQuery for query with more than one return using requested result typelegacy/JPA 2023. 9. 18. 19:37
JPQL을 사용하여 Member 엔티티의 name과 age 필드를 조회하고 있었다. 코드는 다음과 같다. Query query = em.createQuery("select m.name, m.age from Member m", Member.class); List resultList = query.getResultList(); 위의 코드를 실행하면 다음과 같은 예외가 발생한다. 예외를 해석해보자면 TypeQuery를 생성할 수 없다는 듯하다. 난 분명 Query 객체를 생성했는데 왜 TypeQuery를 생성할 수 없다고 나오는 것인지 의문이었다. 역시나 컴파일러는 잘못이 없다. 내가 코드를 잘못 짜서 발생한 문제이다. Query 객체는 createQuery() 메서드에 반환타입의 정보를 넘겨줄 필요가 없다...