개발 환경 : Intellij, Gradle, MySQL, REST API, PostMan
Java 기본 문법.
Spring boot와 MySQL연동하기.
server.address=localhost
server.port=8080
spring.jpa.generate-ddl=true
spring.jpa.database=mysql
spring.datasource.url=jdbc:mysql://localhost:3306/User?useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Seoul
spring.datasource.username=testId
spring.datasource.password=testPw
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web-services'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
compile 'mysql:mysql-connector-java'
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.11.2'
}
@AllArgsConstructor
@Getter
@NoArgsConstructor
public class UserRequest {
private String userId;
private String userPw;
}
@RequiredArgsConstructor
@RestController
public class UserController {
private final UserService userService;
@PostMapping("/register")
public String Register(@RequestBody UserRequest request){
return userService.register(request);
}
}
@Entity
@Table(name = "User")
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class User{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int userCode;
private String userId;
private String userPw;
}
@Repository
public interface UserRepository extends JpaRepository<User, Integer> {}
public interface UserService {
String register(UserRequest request);
}
@Service
@RequiredArgsConstructor
public class UserServiceImpl implements UserService {
private final UserRepository userRepository;
@Override
public String register(UserRequest request){
try{
userRepository.save(
User.builder()
.userId(request.getUserId())
.userPw(request.getUserPw())
.build()
);
return "Success";
}catch(Exception e){
throw new AlreadyExistException();
}
}
}
@RestController : 데이터를 return하는 Controller, @Controller 과 @ResponseBody를 합친것.
@Repository : DAO에 특화된 어노테이션
@Service : 내부 자바 로직 처리
DB에 대한 Insert, Update, Delete, Select를 처리함.
이 말을 쉽게 풀어서 쓰자면, DB와 직접적으로 연결되어있다는 말이다.
DAO를 찾아보면 VO, DTO가 같이 나오는 경우가 있는데, 그렇다면 VO와 DTO는 무엇일까???
DTO(Data Transfer Object)는 데이터가 포함된 객체를 한 시스템에서 다른 시스템으로 전달하는 작업을 하는 객체.
VO(Value Object)는 읽기 전용 DTO라고 생각하면 된다.
위 프로그램의 UserRequest를 VO라고 할 수 있다.