한주간의 부트캠프 간단한 미니프로젝트주가 끝나고 다음주부터는 본격적으로 Java, Spring공부에 돌입할 것 같다. 아예 경험이 없는 것은 아니지만 개발 공부를 할 때는 프론트엔드 공부를 많이 했었기 때문에 미리 스프링부트 개인 프로젝트를 작게 진행하고 있다.
(간단한 게시판..)
사용기술 : Springboot, java 17, Jpa, thymeleaf, mysql
목표 : 다음주내로 개발 완료
사실 하루 의자에 앉아서 공부하는 시간이 꽤나 길기 때문에 충분히 가능하다고 생각한다.(12)

현재의 간단한 프로젝트 구성입니다. 물론 앞으로 추가될 수도 있겠지만 우선은 위와 같이 Controller, Entity, Repository, Service, Dto로 구성이 되어있습니다.
(생각해보니 DTO가 없어서 만들면서 추가했음다😇)
Controller => client로부터 요청을 받고 해당 요청에 대해 서비스 레이어에 구현된 적절한 메소드를 호출해서 결괏값을 받습니다. client로부터 들어오는 HTTP 요청을 받아서 처리하고, 그에 따른 결과를 HTTP 응답으로 반환하는 역할입니다.
주로 @Controller 또는 @RestController Annotation을 사용해 정의하며,
각 요청은 @GetMapping, @PostMapping 등으로 메서드로 매핑합니다.
Entity => 데이터베이스의 테이블과 매핑되는 자바 클래스로, JPA에서 사용됩니다.
클래스에 @Entity 애노테이션을 붙이면 JPA가 해당 클래스를 테이블로 인식하고 자동으로 생성/관리합니다.
엔티티 클래스는 보통 필드 = 컬럼, 그리고 @Id를 통해 기본 키(primary key)를 지정합니다. JPA에서 엔티티는 데이터베이스의 테이블에 대응하는 클래스로, 데이터베이스에 쓰일 테이블과 칼럼을 생성하고 정의합니다.
Dto => DTO(Data Transfer Object) 는 계층 간(Controller ↔ Service ↔ View) 데이터를 전달할 때 사용하는 순수 데이터 객체입니다.
주로 클라이언트 요청값을 받거나, 응답값을 포장할 때 사용하며, 로직 없이 필드 + 생성자 + getter/setter만 가집니다.
Entity와 달리 DB와 직접 연결되지 않습니다.
Service => Service는 비즈니스 로직을 담당하는 계층으로, Controller와 Repository 사이에서 데이터 처리의 중심 역할을 합니다.
@Service 애노테이션을 붙여 스프링 빈으로 등록하며, 트랜잭션 처리도 함께 이뤄질 수 있습니다.
Service는 Controller에서는 하지 말아야 할 복잡한 처리, 계산, 검증 등을 담당합니다.
(또한 Repository와 같이 추상화해서 사용하는데 그 부분에 대해서는 조금 더 공부해보고 꼭 필요한지에 대한 생각을 해봐야 할 것 같다)
Repostiroy => JPA를 사용하는 계층이다. 여기서 엔티티 매니저를 사용해서 엔티티를 저장하고 조회한다. JpaRepository를 상속받으면 별도의 메소드 구현 없이도 많은 기능을 제공한다. custom이 필요하다면 커스텀 인터페이스를 만들어서 같이 상속받으면 사용이 가능하다.
현재 간단한 html과 게시물 저장 정도까지는 코드를 작성해서 git에 올려놨지만 이는 다음주부터 본격적으로 작성해보겠다.
참고 : https://www.youtube.com/watch?v=XytVcdgiVRk&list=PLZzruF3-_clsWF2aULPsUPomgolJ-idGJ&index=9