Skip to content

Commit

Permalink
fix : Change to JPA function
Browse files Browse the repository at this point in the history
  • Loading branch information
5w31892p committed Jan 13, 2023
1 parent e0b035d commit 0f09a8b
Show file tree
Hide file tree
Showing 6 changed files with 76 additions and 15 deletions.
21 changes: 11 additions & 10 deletions build.gradle
@@ -1,27 +1,28 @@
plugins {
id 'java'
id 'org.springframework.boot' version '2.7.7'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
id 'java'
id 'org.springframework.boot' version '2.7.7'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}

group = 'hello'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '8'

repositories {
mavenCentral()
mavenCentral()
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'

implementation 'org.springframework.boot:spring-boot-starter-jdbc'
runtimeOnly 'com.h2database:h2'
// implementation 'org.springframework.boot:spring-boot-starter-jdbc'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'com.h2database:h2'

testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
useJUnitPlatform()
useJUnitPlatform()
}
11 changes: 8 additions & 3 deletions src/main/java/hello/hellospring/SpringConfig.java
@@ -1,20 +1,24 @@
package hello.hellospring;

import javax.persistence.EntityManager;
import javax.sql.DataSource;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import hello.hellospring.repository.JdbcTemplateMemberRepository;
import hello.hellospring.repository.JpaMemberRepository;
import hello.hellospring.repository.MemberReository;
import hello.hellospring.service.MemberService;

@Configuration
public class SpringConfig {

private final DataSource dataSource;
public SpringConfig(DataSource dataSource) {
private final EntityManager em;

public SpringConfig(DataSource dataSource, EntityManager em) {
this.dataSource = dataSource;
this.em = em;
}

@Bean
Expand All @@ -25,6 +29,7 @@ public MemberService memberService() {
public MemberReository memberRepository() {
// return new MemoryMemberRepository();
// return new JdbcMemberRepository(dataSource);
return new JdbcTemplateMemberRepository(dataSource);
// return new JdbcTemplateMemberRepository(dataSource);
return new JpaMemberRepository(em);
}
}
8 changes: 8 additions & 0 deletions src/main/java/hello/hellospring/domain/Member.java
@@ -1,6 +1,14 @@
package hello.hellospring.domain;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;

Expand Down
@@ -0,0 +1,42 @@
package hello.hellospring.repository;

import java.util.List;
import java.util.Optional;

import javax.persistence.EntityManager;

import hello.hellospring.domain.Member;

public class JpaMemberRepository implements MemberReository {
private final EntityManager em;

public JpaMemberRepository(EntityManager em) {
this.em = em;
}

@Override
public Member save(Member member) {
em.persist(member);
return member;
}

@Override
public Optional<Member> findById(Long id) {
Member member = em.find(Member.class, id);
return Optional.ofNullable(member);
}

@Override
public Optional<Member> findByName(String name) {
List<Member> result = em.createQuery("select m from Member m where m.name = :name", Member.class)
.setParameter("name", name)
.getResultList();
return result.stream().findAny();
}

@Override
public List<Member> findAll() {
return em.createQuery("select m from Member m", Member.class) // 객체 대상으로 날리는 쿼리
.getResultList();
}
}
4 changes: 3 additions & 1 deletion src/main/java/hello/hellospring/service/MemberService.java
Expand Up @@ -3,10 +3,12 @@
import java.util.List;
import java.util.Optional;

import org.springframework.transaction.annotation.Transactional;

import hello.hellospring.domain.Member;
import hello.hellospring.repository.MemberReository;


@Transactional
public class MemberService {

// private final MemberReository memberReository = new MemoryMemberRepository();
Expand Down
5 changes: 4 additions & 1 deletion src/main/resources/application.properties
Expand Up @@ -2,4 +2,7 @@ spring.output.ansi.enabled=always
spring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.password=

spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=none

0 comments on commit 0f09a8b

Please sign in to comment.