DB 컬럼에 누가, 언제 작업을 하였는지에 대한 기록을 반드시 남겨야 한다. 그렇지 않는다면 나중에 문제가 발생하였을 때 언제 문제가 발생하였는지 추적하는 게 매우 어렵게 된다. 그렇다면 엔티티를 다음과 같이 설계를 해야할 것 같다. @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Comment { private String content; // 작성 내용 private LocalDateTime createdDate; // 작성 시간 private LocalDateTime lastModifiedDate; // 수정 시간 } 댓글을 등록한 시간, 수정한 시간을 저장하는 필드가 있다. 이것은 좋은 방법이라고 할 수..
문제 발생 스프링부트에서 테이블을 생성하여 값을 저장하려고 하면 다음과 같은 오류가 발생했다. org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute statement [Table 'cicd_db.users' doesn't exist] [insert into users (age,username) values (?,?)]; SQL [insert into users (age,username) values (?,?)] 문제 원인 "Table 'cicd_db.users' doesn't exist" 이부분이 핵심인 듯하다. 나는 "Users" 테이블에 데이터를 삽입하려고 하는데 실제로는 "cicd_db.users" 테이블..
문제 발생 먼저 정의된 Entity를 먼저 보겠다. Member Entity Team과 N:1 연관관계에 있다. :age and m.username = :username" ) public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "member_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "team_id") private Team team; private String username; private int age; /** * 연관관계 편의 메서드 */ public void changeTeam(Team t..
엔티티 A와 B가 영속관계에 있을 때 A를 영속화시켰을 때 자동으로 B까지 영속화시키려면 CASCADE를 사용해야 합니다. 사용방법에 대해서 알아보겠습니다. CASCADE란? CASCADE란 영속성 전이라고 합니다. 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때 사용합니다. JPA는 CASCADE 옵션을 제공하여 em.persist()를 사용하지 않아도 엔티티를 영속화시킬 수 있습니다. CASCADE의 옵션은 다음과 같습니다. ALL, 아래에 있는 모든 옵션 적용 PERSIST, 특정 엔티티 영속화 MERGE, 병합 REMOVE, 삭제 REFRESH DETACH 연관관계에 있는 Entity 영속화, Cascade.PERSIST A엔티티를 영속화시킬 때 연관관계에 있..
문제 발생 @ManyToOne 그리고 @OneToMany로 양방향 연관관계를 맺으면 NullPointerException이 발생하였다. Board(게시물)와 View(조회수, 좋아요) Entity 간의 연관관계를 맺었다. Board Entity @Entity @Getter @Builder @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Board { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "board_id") private Long id; private String title; // 제목 private String conte..