
<*하단 Entity 클래스 만들기 참조>
@Entity@Id : primary key 컬럼을 알려주는 어노테이션, 필드 위@GeneratedValue : Primary key는 자동 생성되는 값// id = bigint auto_increment *sql*
// @GeneratedValue(strategy = GenerationType.IDENTITY) *springboot*
// 둘이 동일
@Column@Coulumn(nullable = false, length = 20)
private String name;
private integer age;
만약 객체와 테이블 이름이 다르다면 하단과 같은 방법 사용
@Coulumn(nullable = false, length = 20, name = "name")
private String nickname;
private integer age;
@Table@Entity
@Table(name = "users")
public class User {
}
엔티티의 생명주기 이벤트에 자동으로 반응하는 기능
@CreatedDate, @LastModifiedDate : 엔티티의 생성 시간과 수정 시간을 자동으로 관리하기 위한 어노테이션
@CreatedDate@EnableJpaAuditing, @EntityListeners 어노테이션 사용 -> 어플리케이션에 활성화 시켜야함@LastModifiedDate@EnableJpaAuditing, @EntityListeners 어노테이션 사용 -> 어플리케이션에 활성화 시켜야함
- Entity 클래스에서 @EntityListeners(AuditingEntityListener.class)를 설정해야 필드에 사용가능
- JPA 리스너를 사용하기 위해 Main 클래스에서 @EnableJpaAuditing을 사용해 JPA Auditing 기능 활성화
spring:
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
show_sql: true
format_sql: true
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'com.mysql:mysql-connector-j'
}
spring:
datasource:
url: jdbc:mysql://localhost:3306/library
username: root
password: 1234
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
show-sql: true
@Entity
@Getter
@ToString
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Member {
@Id
@GeneratedValue
private Long id;
private String name;
private STring email;
private Integer age;
@Builder
public Member(STring name, String email, Integer age){
this.age = age;
this.email = email;
this.name = name;
}
}
1. Setter 메소드 미작성 : 필요시 필드를 변경하는 메소드 직접 작성
2. 기본 생성자의 접근 제한자를 protected 변경
3. @AllArgsConstructor 미사용 : @Builder 어노테이션 사용시 에러
4. @toString(exclude = "...")어노테이션을 사용해 제외할 필드를 명시적으로 지정
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
}