draw.io를 통해 테이블을 구성해주었다.
cmd을 열고 MySQL에 접속한다.CREATE DATABASE sekkison default CHARACTER SET UTF8; CREATE USER 'sekkison'@'localhost' IDENTIFIED BY '1234'; GRANT ALL PRIVILEGES ON sekkison.* TO 'sekkison'@'localhost'; FLUSH PRIVILEGES;
위 코드를 넣어주면 mySQL에 DB가 생성된다.
이후 springboot에 연결해주면 mySQL과 연동이 된다.
@Entity @Table(name = "users") @Data @Builder @NoArgsConstructor @AllArgsConstructor public class User extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "username", unique = true) private String username; @Column(name = "password", nullable = false) private String password; @Column(name = "name", unique = true) private String name; @Column(name = "phone", nullable = false, unique = true) private String phone; @Column(name = "gender", nullable = false) private Character gender; @Column(length=500, name = "content") @ColumnDefault("''") private String content; @Column(name = "pos_x") private Double posX; @Column(name = "pos_y") private Double posY; @Column private String api; @Transient private String memo; }
@Id
: Entity의 고유 식별자값
@GeneratedValue
: strategy = GenerationType.IDENTITY 옵션을 통해 자동으로 unique 설정
@Column
:@Entity
class 밑에 데이터베이스로 저장할 수 있다.
@ColumnDefault
: 초기값으로 null이 셋팅되는@Column
과 다르게 디폴트값을 넣어준다.
@Transient
: 데이터베이스에 저장되지않는 변수로 DTO로서의 역할을 수행한다.
예시로 users을 통해 설명하도록 하겠다.
이 코드는 Java 언어를 사용하여 객체-관계 매핑(Object-Relational Mapping, ORM)을 위한 엔티티(Entity) 클래스를 정의한 것이다.
해당 클래스는 "users"라는 이름의 데이터베이스 테이블과 매핑되도록 만들었으며,클래스에는 다음과 같은 멤버 변수들이 정의되어 있다.
id: 엔티티의 고유 식별자 값이다. 해당 멤버 변수는 @Id 어노테이션으로 표시되어 있으며, @GeneratedValue 어노테이션을 사용하여 자동으로 생성되도록 설정되어 있다.
username: 사용자 이름을 저장하는 문자열 변수이다. @Column 어노테이션을 사용하여 데이터베이스 테이블의 "username" 열과 매핑되도록 설정되어 있으며, unique 옵션을 통해 중복되지 않도록 설정되어 있다.
password: 사용자 비밀번호를 저장하는 문자열 변수이다. @Column 어노테이션을 사용하여 데이터베이스 테이블의 "password" 열과 매핑되도록 설정되어 있으며, nullable 옵션을 통해 null 값을 허용하지 않도록 설정했다.
name: 사용자 이름을 저장하는 문자열 변수이다. @Column 어노테이션을 사용하여 데이터베이스 테이블의 "name" 열과 매핑되도록 설정되어 있으며, unique 옵션을 통해 중복되지 않도록 설정되어 있다.
phone: 사용자 전화번호를 저장하는 문자열 변수이다. @Column 어노테이션을 사용하여 데이터베이스 테이블의 "phone" 열과 매핑되도록 설정되어 있으며, nullable 옵션을 통해 null 값을 허용하지 않도록 설정되어 있다. 또한 unique 옵션을 통해 중복되지 않도록 설정했다.
gender: 사용자 성별을 저장하는 문자 변수이다. @Column 어노테이션을 사용하여 데이터베이스 테이블의 "gender" 열과 매핑되도록 설정되어 있으며, nullable 옵션을 통해 null 값을 허용하지 않도록 설정했다.
content: 사용자의 추가 정보를 저장하는 문자열 변수이다. @Column 어노테이션을 사용하여 데이터베이스 테이블의 "content" 열과 매핑되도록 설정되어 있으며, 길이는 500으로 설정되도록 하였다. 또한, @ColumnDefault 어노테이션을 사용하여 기본값을 빈 문자열('')로 설정했다.
posX, posY: 사용자 위치 정보를 저장하는 실수형 변수이다. @Column 어노테이션을 사용하여데이터베이스 테이블의 "pos_x"와 "pos_y" 열과 매핑되도록 설정했다.
api: 사용자가 사용하는 API 정보를 저장하는 문자열 변수이다. 구글, 카카오, 네이버 API로그인시 어떤 로그인인지 구분해주는 변수를 만들어 주었다. @Column 어노테이션을 사용하여 데이터베이스 테이블의 "api" 열과 매핑되도록 설정되어 있습니다.
memo: 해당 멤버 변수는 @Transient 어노테이션으로 표시되어 있으며, 데이터베이스와는 매핑되지 않는다. 따라서, 이 변수는 데이터베이스에 저장되지 않는다.