draw.io를 통해 구성할 테이블을 작성해주었다.
cmd
를 열고MySQL
에 접속한다.mysql -u root -p 비밀번호 입력
아래 코드에서 DB이름과 아이디, 비밀번호만 넣어 입력하면, MySql에 빈 데이터베이스가 생성된다.
CREATE DATABASE 데이터베이스이름 default CHARACTER SET UTF8; CREATE USER '아이디'@'localhost' IDENTIFIED BY '비밀번호'; GRANT ALL PRIVILEGES ON 데이터베이스이름.* TO '아이디'@'localhost'; FLUSH PRIVILEGES;
이 작업은 데이터베이스를 생성하고, 유저를 만들어 해당 데이터베이스에 권한을 부여하는 작업이다.
MySql 데이터베이스와 스프링 프로젝트를 연결할 차례이다. 먼저 Intellij 우측 데이터베이스 탭을 클릭한 후,
Data Source -> MySql
을 선택하자
이후
+
를 눌러 앞에서 설정했던 MySql DB와 ID, PW를 세팅해 주면 된다.
이제 Springboot와 MySql의 연동이 끝났다.
우리 프로젝트의 엔티티 클래스 경로는
src/main/java/com.example.sekkison/user/User.class
이다.
클래스를 만들었다면, 안에 내용물을 채워넣을 차례이다.
아래는 우리 프로젝트의User
엔티티 예시이다.User.class
@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; }
이 코드는 Java 언어를 사용하여 객체-관계 매핑(Object-Relational Mapping, ORM)을 위한 엔티티(Entity) 클래스를 정의한 것이다.
해당 클래스는
users
라는 이름의 데이터베이스 테이블과 매핑되도록 만들었으며, 클래스 상단의 어노테이션은 왠만하면 그대로 쓰는 편이다.
다음으로 클래스 멤버 변수의의 어노테이션에 대해 정리해 보겠다
@Id
엔티티의 고유 식별자 값이다.
@GeneratedValue
strategy = GenerationType.IDENTITY
옵션을 통해 자동으로unique
하며 증가하도록 생성되게 설정한다.
@Column
Spring에서 자체적으로 @Entity 클래스 아래의@Column
변수는 데이터베이스에 저장할 수 있도록 해 준다.
name
,nullable
,unique
,length
등등을 설정할 수 있다.
@ColumnDefault
User엔티티에 사용되지는 않았지만, 초기값으로 null이 세팅되는@Column
과 다르게 디폴트값을 넣어 준다.
@Transient
데이터베이스에 저장되지 않는 변수이다. 우리 프로젝트에서는 DTO(데이터 전달 객체)로서의 역할을 수행하기 위해 만들어 놓았다.기본적으로 이정도만 알아도 대부분의 DB세팅은 할 수 있을 것이다.
최상단의 draw.io 데이터베이스대로, 9개의 엔티티를 만들었다.