일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Apach
- 리눅스
- Git
- Java
- 트랜잭션
- 엘라스틱서치
- Elk
- mybatis
- ElasticSearch
- slave node
- 마이바티스
- springboot
- mysql
- 시스템운영
- Gradle
- Stash
- sql
- SonarQube
- JVM
- npm
- 아파치
- orm
- nodejs
- 자바
- 스프링
- 레드마인
- Bitbucket
- spring
- heap메모리
- DB
Archives
- Today
- Total
프로그래머호이잇
ORM 소스 예제 본문
빌드 Tool : Gradle
db : h2database
Spring Boot, Lombok 이용하여 ORM 을 코딩해 보았습니다.
build.gradle 의존성
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-web-services'
implementation 'com.h2database:h2'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
H2DB 설정을 위한 properties
application.properties
# Datasource 설정
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:file:~/test
spring.datasource.username=admin
spring.datasource.password=password
# H2 설정
spring.h2.console.path=/h2console
spring.h2.console.enabled=true
# hibernate 설정
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=create
User.java
@Table(name = "USER")
@Entity
@Getter
@Setter
@RequiredArgsConstructor
@ToString
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "USER_ID", nullable = false)
private Long id;
@Column(nullable = false, length = 50)
private String userNm;
@Column(name = "EMP_NO", nullable = false)
private String empNo;
}
UserRopository.java
public interface UserRepository extends JpaRepository<User, Long>{
List<User> findByUserNm(String userNm);
}
Test Class 는 TestMothodOrder를 이용하여 Insert 구문 실행 후 Select 구문이 실행 되도록 조정하였습니다.
UserRepositoryTest.java
@SpringBootTest //모든 빈을 IoC컨테이너에 기동
@TestPropertySource(locations="classpath:application-test.properties")
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class UserRepositoryTest {
@Autowired
UserRepository userRepository;
@Test
@DisplayName("User saved Test")
@Order(1)
public void createUserTest(){
User user = new User();
user.setUserNm("우사랑");
user.setEmpNo("1054024");
userRepository.save(user);
user = new User();
user.setUserNm("현최강");
user.setEmpNo("1394064");
userRepository.save(user);
user = new User();
user.setUserNm("김진은");
user.setEmpNo("1790064");
userRepository.save(user);
}
@Test
@DisplayName("User name search Test")
@Order(2)
public void findByUserNmTest(){
long id1 = 1l;
Optional<User> userA = userRepository.findById(id1);
userA.ifPresent(System.out::println);
List<User> userList = userRepository.findByUserNm("현최강");
for(User user : userList){
System.out.println(user.toString());
}
}
@Test
@DisplayName("User All search Test")
@Order(3)
public void findAllByUser(){
List<User> userList = userRepository.findAll();
for(User user : userList){
System.out.println(user.toString());
}
}
}
소스코드 예제는 아래 깃허브 경로에 올려두었습니다.
'아키텍처패턴' 카테고리의 다른 글
5장 동시성 (0) | 2022.09.18 |
---|---|
4장 웹 프레젠테이션 (0) | 2021.12.19 |
2장 도메인논리 구성 (0) | 2021.12.06 |
3장 관계형 데이터베이스 (0) | 2021.11.29 |