[Spring/JPA] JPA Entity 연관 관계
·
BackEnd/Spring
1 대 1 관계 @OneToOne 애너테이션을 사용하면 1 대 1 관계를 맺어주는 역할을 합니다. 단방향 관계 - 외래 키 주인 정하기 Entity의 외래 키 주인은 일반적으로 N의 관계인 Entity이지만 1:1 관계에서는 외래 키의 주인을 직접 지정해야 합니다.외래 키 주인만이 외래 키를 등록, 수정, 삭제할 수 있습니다.주인이 아닌 쪽은 오직 외래 키를 읽기만 가능합니다. - @JoinColumn()은 외래 키의 주인이 활용하는 애너테이션입니다.컬럼명, null 여부, unique 여부 등을 지정할 수 있습니다.  양방향 관계 - 양방향 관계에서 외래 키의 주인을 지정할 때 mappedBy 옵션을 사용합니다.mappedBy의 속성값은 외래 키의 주인인 상태 Entity 필드명을 의미합니다. - 관계..
[Python] 한 번에 여러 개 입력(input) 받기
·
BackEnd/Python
Python에서 입력 받는 형식에 대해서 알아봅시다.1차원, 2차원 리스트 입력도 같이 알아봅시다.  코드 예시# 값 두개를 입력 받아서 a와 b에 저장 (띄어쓰기 구분)a, b = input().split() # 문자열a, b = map(int, input().split()) # 정수형a, b = map(float, input().split()) # 실수형# 1차원 배열 정수형 리스트로 입력 받기list = list(map(int, input().split()))# 문자열 여러줄 입력받기list = [input() for _ in range(n)] # n에 3을 넣으면 3줄 입력 받기# 문자열 받아서 한글자씩 나누어 더하기s = input()for i in range(len(s)): sum += int..
[MyBatis] Invalid bound statement (not found)
·
ETC/Error
Invalid bound statement (not found) 해결 방법 1. Mapper 인터페이스와 XML 오타 확인 ID값이나 Mapper 인터페이스의 메서드명과 다른지 확인해보는 것이 좋다.혹은 인터페이스의 이름과 XML 파일에 선언된 이름이 달라서 생기는 경우도 있다. 2. mapper-locations 쿼리가 작성되어 있는 mapper XML이 위치한 경로를 application.properties에 정의하지 않거나또는 잘못 선언된 경우 발생한다. mapper가 있는 경로로 application.properties에 정확한 경로로 변경해주면 된다. mybatis.mapper-locations:classpath:mapper/*.xml 3. 동일한 이름이나 다른 패키지 경로 Mapper의 이름은..
[thymeleaf] 타임리프 설명 및 문법 정리
·
ETC/TIP
타임리프(thymeleaf) 타임리프(thymeleaf)란 스프링부트에서 공식적으로 지원하는 View 템플릿 엔진입니다. 타임리프의 목표는 템플릿을 만들 때 유지관리가 쉽도록 하는 것입니다.이를 위해 디자인 프로토타입으로 사용되는 템플릿에 영향을 미치지 않는 방식인 Natural Templates 기반으로 합니다. Natural Templates은 기존 HTML 코드와 구조를 변경하지 않고 덧붙이는 방식입니다. 타임리프 장점 - 코드를 변경하지 않기 때문에 서버팀과 퍼블팀 간의 협업이 편해집니다.- JSP와 달리 Servlet Code로 변환되지 않기 때문에 비즈니스 로직과 분리되어 오로지 View에 집중할 수 있습니다.- 서버상에서 동작하지 않아도 되기 때문에 서버 동작 없이 화면을 확인할 수 있습니다..
[Java] DTO, VO, DAO 차이점
·
BackEnd/Java
DAO (Data Access Object) 데이터베이스와 상호작용을 담당하는 객체를 말합니다.데이터베이스에 접근하기 위한 로직을 분리하기 위해 사용합니다.직접 데이터베이스에 접근하여 데이터를 삽입, 삭제, 조회 등 조작할 수 있는 기능을 수행합니다. DAO 예시 코드 public class UserDAO { public void createUser(User user) { // 데이터베이스에 유저 정보를 저장 } public User getUserById(int userId) { // 데이터베이스에서 유저 정보 조회 } public void updateUser(User user) { // 데이터베이스에서 유저 정보 업데이트 } p..