본문 바로가기
유데미 스프링

스프링부트 JPA 프로젝트 시작하기

by hoshi03 2024. 4. 1.

강의는 h2기준으로 진행되지만 mysql이 더 편하고 범용적인것 같아서 mysql 기준으로 설정했다

gradle 의존성 추가

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'
	developmentOnly 'org.springframework.boot:spring-boot-devtools'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	implementation 'mysql:mysql-connector-java:8.0.36'
	runtimeOnly 'com.mysql:mysql-connector-j'
	implementation 'org.projectlombok:lombok'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.projectlombok:lombok'
	testAnnotationProcessor 'org.projectlombok:lombok'
}

 

application.properties도 수정한다

DB 이름은 shop, 쿼리문 보이게 show-sql = true로 설정했다

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/shop
spring.datasource.username=root
spring.datasource.password=1111
spring.jpa.show-sql= true

spring.sql.init.mode=never

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.use_sql_comments=true
spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.properties.hibernate.default_batch_fetch_size=1000

 

 

• JPA로 데이터베이스에 데이터 추가하기

 

아래처럼 생긴 id를 pk로 가지고 id, name, author가 있는 클래스를

@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Entity
public class Course {

    @Id
    private int id;
    @Column
    private String name;
    @Column
    private String author;

    @Override
    public String toString() {
        return "Course{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", author='" + author + '\'' +
                '}';
    }
}

 

JPA를 이용해서 crud가 가능하게 해주고

@Repository
@Transactional
public class CourseJpaRepository {

    @PersistenceContext
    private EntityManager entityManager;

    public void insert(Course course){
        entityManager.merge(course);
    }

    public Course findById(Long id){
        return entityManager.find(Course.class, id);
    }

    public void deleteById(Long id){
        Course course = entityManager.find(Course.class, id);
        entityManager.remove(course);
    }
}

 

이렇게 컴포넌트 스캔을 통해 찾은 빈을 실행하게 하면 db에 데이터가 추가되었다

@Component
public class CourseCommandLineRunner implements CommandLineRunner {

    @Autowired
    private  CourseJpaRepository repository;

    @Override
    public void run(String... args) throws Exception {
        repository.insert(new Course(1, "ho", "java"));
        repository.insert(new Course(2, "hoshi", "spring"));
    }
}

'유데미 스프링' 카테고리의 다른 글

Spring Data JPA 사용하기  (0) 2024.04.03
스프링 부트 시작하기  (0) 2024.03.30
빈 관련 어노테이션  (0) 2024.03.20
PostConstruct, PreDestroy  (0) 2024.03.20
싱글톤, 프로토타입  (0) 2024.03.20