강의는 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 |