#35 springboot: auto config - db config

This commit is contained in:
haerong22
2023-03-10 01:06:35 +09:00
parent 0713974837
commit db9c48eb4d
4 changed files with 125 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
package hello.config;
import com.zaxxer.hikari.HikariDataSource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.support.JdbcTransactionManager;
import org.springframework.transaction.TransactionManager;
import javax.sql.DataSource;
@Slf4j
@Configuration
public class DbConfig {
@Bean
public DataSource dataSource() {
log.info("dataSource 빈 등록");
HikariDataSource dataSource = new HikariDataSource();
dataSource.setDriverClassName("org.h2.Driver");
dataSource.setJdbcUrl("jdbc:h2:mem:test");
dataSource.setUsername("sa");
dataSource.setPassword("");
return dataSource;
}
@Bean
public TransactionManager transactionManager() {
log.info("transactionManager 빈 등록");
return new JdbcTransactionManager(dataSource());
}
@Bean
public JdbcTemplate jdbcTemplate() {
log.info("jdbcTemplate 빈 등록");
return new JdbcTemplate(dataSource());
}
}

View File

@@ -0,0 +1,14 @@
package hello.member;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Member {
private String memberId;
private String name;
}

View File

@@ -0,0 +1,43 @@
package hello.member;
import lombok.RequiredArgsConstructor;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
@RequiredArgsConstructor
public class MemberRepository {
public final JdbcTemplate template;
public void initTable() {
template.execute(
"create table member(member_id varchar primary key, name varchar)"
);
}
public void save(Member member) {
template.update(
"insert into member(member_id, name) values (?, ?)",
member.getMemberId(), member.getName()
);
}
public Member find(String memberId) {
return template.queryForObject(
"select member_id, name from member where member_id=?",
BeanPropertyRowMapper.newInstance(Member.class),
memberId
);
}
public List<Member> findAll() {
return template.query(
"select member_id, name from member",
BeanPropertyRowMapper.newInstance(Member.class)
);
}
}

View File

@@ -0,0 +1,29 @@
package hello.member;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.transaction.annotation.Transactional;
import static org.assertj.core.api.Assertions.*;
@SpringBootTest
class MemberRepositoryTest {
@Autowired
MemberRepository memberRepository;
@Transactional
@Test
void memberTest() {
Member member = new Member("idA", "memberA");
memberRepository.initTable();
memberRepository.save(member);
Member findMember = memberRepository.find(member.getMemberId());
assertThat(findMember.getMemberId()).isEqualTo(member.getMemberId());
assertThat(findMember.getName()).isEqualTo(member.getName());
}
}