분류 전체보기
![[JPA] @OneToMany 연관관계 매핑 시 Collection을 초기화 했지만 NullPointerException이 발생하는 이슈](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxXEK6%2FbtrAePjQBZq%2FgBwUnyjVTpAp4JiEP6O9g0%2Fimg.png)
[JPA] @OneToMany 연관관계 매핑 시 Collection을 초기화 했지만 NullPointerException이 발생하는 이슈
🤔 상황 @OneToMany 애노테이션을 통해 연관 관계 매핑 시 NPE를 피하기 위해 관례에 따라 Collection을 초기화 해주었지만 지속적으로 매핑 필드에서 NullPointerException이 발생하는 이슈가 있었다. 🧑💻 문제 파악 초기화를 해줌에도 필드의 초기화가 되지 않는 것은 @Builder 애노테이션을 통해 객체를 생성하고 있었기 때문에 안되는건 아닐까 고민해보았다. @Builder 애노테이션이 붙은 클래스는 생성 시 동일한 필드를 가진 내부 Builder 클래스를 통해 설정된 속성을 변경하는 메소드를 구현한다. 이 때, 내부 클래스의 필드는 한 번 값이 지정된 이후에도 메소드를 통해 값이 변경될 수 있기 때문에 Non-Final 형태로 필드가 지정된다. 따라서, 내부 Builder..
![[백준, Java] 16637번 : 괄호 추가하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvF8Rq%2FbtrAG64HeGI%2FSeL81fODp7pF6K9KPSpWQk%2Fimg.gif)
[백준, Java] 16637번 : 괄호 추가하기
🔗 문제 링크 https://www.acmicpc.net/problem/16637 😮 문제 해결 방법 문제에서 주의깊게 봐야하는 조건이 몇가지 있다. 모든 연산자의 우선순위는 동일하기 때문에 수식 계산은 왼쪽 부터 차례로 계산한다. 괄호 안에는 연산자가 한 개만 들어간다. 1번 조건을 충족하기 위해서 재귀함수 호출 시 마다 현재까지의 결과 값(ouput 파라미터)과 괄호 추가한 경우 결과값 혹은 다음 차례의 피연산자와 계산을 한 결과값을 다음 재귀 호출시 넣어주어야 한다. 2번 조건을 충족하기 위해서 **현재 차례로 부터 다음 차례와 다다음 차례 (index + 1, index + 2)**의 피연산자를 먼저 계산해준다. 그 후 현재까지의 결과 값과 다시 한번 계산 하면 괄호를 반영한 결과값을 구할 수 있..

기본키 매핑, @Id, @GeneratedValue
필드를 테이블의 컬럼과 매핑하는 애노테이션도 있지만 해당 필드를 기본키로 매핑하는 애노테이션은 @Id, @GeneratedValue이다. @Id 애노테이션은 기본키를 직접 만들어서 지정해주는 경우에 사용한다. 하지만, MySQL의 Auto Increment나 Oracle의 Sequence 같이 기본키 값을 자동으로 생성되도록 하기 위해서는 @Id 뿐만 아니라 @GeneratedValue를 함께 지정해줘야한다. @GeneratedValue @GeneratedValue는 JPA가 테이블의 기본키 값을 자동으로 생성해주는 애노테이션이다. DB에 따라 자동으로 생성해주는 방식이 다른 것과 유사하게 자동생성 전략을 지정해주어야한다. public enum GenerationType { TABLE, // 키 생성용 ..
필드와 컬럼 매핑, @Column
엔티티 클래스 내 필드는 테이블의 컬럼과 매핑된다 . 컬럼과 필드를 상세하게 매핑하도록 도와주는 애노테이션들을 정리해보자. @Column 말 그대로 필드와 컬럼을 매핑해주는 속성을 가진 애노테이션이다. // @Column public @interface Column { String name() default ""; // 필드와 매핑될 실제 DB 테이블 컬럼 이름 boolean unique() default false; // 한 개의 컬럼에 유니크 제약조건을 거는 속성이다. @Column의 unique 프로퍼티는 랜덤 값으로 제약조건 이름을 갖기 때문에 @Table 애노테이션의 uniqueConstraint 프로퍼티를 일반적으로 사용한다. boolean nullable() default true; // n..

객체와 테이블 매핑, @Entity, @Table
@Entity JPA는 객체와 실제 DB 테이블 매핑을 @Entity 애노테이션을 이용해 매핑한다. @Entity 애노테이션은 JPA가 관리하는 엔티티이며 테이블과 매핑된다. @Entity가 붙은 엔티티 클래스는 public, protected 접근 제어자가 붙은 기본 생성자가 필수로 필요하다. public class Member { public Member() {...} protected Member() {...} } 또한, final 클래스, interface, enum, inner 클래스에는 사용이 불가능하며, DB와 매핑되는 컬럼들은 final 키워드를 사용하면 안된다. @Entity 아래의 경우 붙일 수 없음 1. public final class Member {...} 2. public int..