public class PostDTO {
private Long id;
private String title;
private String content;
// Getter and Setter
}
@Entity
@Table(name = "posts")
public class Post {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String title;
@Column(nullable = false)
private String content;
// Getter and Setter
}
public interface PostRepository {
void save(Post post);
Post findById(Long id);
List<Post> findAll();
void delete(Post post);
}
@Repository
public class PostRepositoryImpl implements PostRepository {
@PersistenceContext
private EntityManager entityManager;
@Override
public void save(Post post) {
entityManager.persist(post);
}
@Override
public Post findById(Long id) {
return entityManager.find(Post.class, id);
}
@Override
public List<Post> findAll() {
return entityManager.createQuery("SELECT p FROM Post p", Post.class).getResultList();
}
@Override
public void delete(Post post) {
entityManager.remove(post);
}
}
@Service
public class PostService {
private final PostRepository postRepository;
public PostService(PostRepository postRepository) {
this.postRepository = postRepository;
}
public void createPost(PostDTO postDTO) {
Post post = new Post();
post.setTitle(postDTO.getTitle());
post.setContent(postDTO.getContent());
postRepository.save(post);
}
public PostDTO getPostById(Long id) {
Post post = postRepository.findById(id);
PostDTO postDTO = new PostDTO();
postDTO.setId(post.getId());
postDTO.setTitle(post.getTitle());
postDTO.setContent(post.getContent());
return postDTO;
}
public List<PostDTO> getAllPosts() {
List<Post> posts = postRepository.findAll();
List<PostDTO> postDTOs = new ArrayList<>();
for (Post post : posts) {
PostDTO postDTO = new PostDTO();
postDTO.setId(post.getId());
postDTO.setTitle(post.getTitle());
postDTO.setContent(post.getContent());
postDTOs.add(postDTO);
}
return postDTOs;
}
public void deletePost(Long id) {
Post post = postRepository.findById(id);
postRepository.delete(post);
}
}
@RestController
@RequestMapping("/posts")
public class PostController {
private final PostService postService;
public PostController(PostService postService) {
this.postService = postService;
}
@PostMapping
public void createPost(@RequestBody PostDTO postDTO) {
postService.createPost(postDTO);
}
@GetMapping("/{id}")
public ResponseEntity<PostDTO> getPostById(@PathVariable Long id) {
PostDTO postDTO = postService.getPostById(id);
if (postDTO != null) {
return ResponseEntity.ok(postDTO);
} else {
return ResponseEntity.notFound().build();
}
}
@GetMapping
public List<PostDTO> getAllPosts() {
return postService.getAllPosts();
}
@DeleteMapping("/{id}")
public void deletePost(@PathVariable Long id) {
postService.deletePost(id);
}
}
DTO는 데이터 전송을 위해 사용되며, Repository는 데이터베이스와의 상호작용을 담당하는 인터페이스와 해당 인터페이스를 구현한 RepositoryImpl 클래스로 구성됩니다.
Service는 비즈니스 로직을 수행하고, Controller는 클라이언트의 요청을 처리하여 데이터를 전달합니다.
Spring[스프링]_ImmutablePair_다중객체반환과 불변성유지 (0) | 2023.10.17 |
---|---|
Spring[스프링]_MAP_Collection을 효율적으로 조회하는 방법 (0) | 2023.10.16 |
자바 개발 환경 구축하기: 자바 다운로드 및 JDK 경로 지정 방법 (0) | 2023.05.28 |
Spring[스프링]_제이쿼리템플릿(jQuery Template)을 이용한 HTML구문 삽입 (0) | 2023.02.17 |
Spring[스프링]_자바스크립트_jQuery를 이용하여 HTML삽입 (0) | 2023.02.17 |
댓글 영역