만쥬의 개발일기
article thumbnail

프로젝트 생성 및 의존성 추가

Mysql과 연동하여 JPA를 사용할 것이므로 위와 같은 dependencties를 추가한다.

 

기존 프로젝트에서 MySql과 JPA를 추가하여 사용하고 싶다면 build.gradle에 다음 두 줄을 추가한다.

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'mysql:mysql-connector-java:8.0.32'

 

application.properties를 다음과 같이 작성한다.

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/shop?serverTimezone=Asia/Seoul
spring.datasource.username=root
spring.datasource.password=0000

#만들어진 sql 보여줌
spring.jpa.properties.hibernate.show_sql=true
#sql 가독성 좋게 보여줌
spring.jpa.properties.hibernate.format_sql=true

#테이블이 없다면 생성하고, 있으면 업데이트한다.
spring.jpa.hibernate.ddl-auto=update

spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect

username과 password는 내 데이터베이스의 id pw를 적으면 된다.

 

정보 은닉

만약 해당 내용이 git에 고스란히 올라가는 것이 꺼림직하다면, 해당 정보를 은닉해야하는데

나는 다음과 같은 방법을 선택했다.

spring.profiles.include = mysql

우선 기존 데이터 베이스 정보들을 삭제하고 위 한줄을 추가한다.

그다음 application-mysql.properties 파일을 생성하고, 데이터 베이스 정보들을 옮긴 뒤

git ignore에 다음 내용을 추가한다.

application-*

이렇게 하면 properties 내에서 데이터베이스 정보만 git에올리지 않고 로컬에 은닉할 수 있다.

 

엔티티 생성

이제 데이터베이스에 접근하기 위한 엔티티를 만들어주자. 엔티티란?

@Entity
@Table(name="User") // 미 사용시 클래스이름 == 테이블이름
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class User {
    @Id
    @Column(length=128)
    private String userId;

    @Column(length=128)
    private String user_name;

    @Column(length=128)
    private String country;

    @Column(length=32)
    private String tel;

    @Column
    private LocalDate birth;



}

 

예시로 UserEntity를 만들어보았다. 

pk는 @id 어노테이셔이 붙은 키가 되고,

    @GeneratedValue(strategy = GenerationType.IDENTITY)

pk에 다음과 같이 어노테이션을 붙이면 JPA가 pk의 값을 자동으로 생성해준다.

 

그리고 repository를 생성해주자.

@Repository
public interface UserRepository extends JpaRepository<User, String>{

    User findByUserId(String userId);
}

위와 같이 repository 클래스를 만들고, 객체를 만들어 데이터베이스에 쿼리를 날릴 수 있다.

find, findall, save 등등 다양한 간단한 쿼리문들을 JPA가 대신 처리해준다.

굉장히 편리함..!

profile

만쥬의 개발일기

@KangManJoo

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!