목록프로그래밍 (408)
쌓고 쌓다
1. SpringDataJpa로 변경 및 edit 변경 사항 SpringDataJpaPosterRepository (interface) public interface SpringDataJpaPosterRepository extends JpaRepository, PosterRepository { } PosterService @Service @Transactional public class PosterService { private SpringDataJpaPosterRepository posterRepository; // 변경 @Autowired public PosterService(SpringDataJpaPosterRepository posterRepository) { // 변경 this.posterRep..
회원 테이블 생성 CREATE TABLE MEMBER ( ID VARCHAR(255) NOT NULL, -- 아이디(기본 키) NAME VARCHAR(255), -- 이름 AGE INTEGER NOT NULL, -- 나이 PRIMARY KEY(id) ); 회원 클래스 생성 @Entity @Table(name="MEMBER") public class Member { @Id @Column(name="id") private String id; @Column(name="name") private String username; private Integer age; } @Entity 이 클래스를 테이블과 매핑한다고 JPA에게 알린다. @Entity가 붙은 클래스를 엔티티 클래스라고 한다. @Table 엔티티 클래스..
PosterRepository (interface) public interface PosterRepository { ... void edit(Long id, Poster newPoster); } 리포지토리 인터페이스에 수정을 위한 edit 추상 메소드를 작성. 수정할 게시글의 id와 수정할 내용이 담긴 newPoster를 받는다. JpaPosterRepository (구현체) @Repository public class JpaPosterRepository implements PosterRepository{ ... @Override public void edit(Long id, Poster newPoster) { Poster oldPoster = em.find(Poster.class, id); oldPos..
1. 폼 입력 값 유지 PosterController @Controller public class PosterController { ... @GetMapping("/poster/write") public String writeForm(Model model) { model.addAttribute("poster", new Poster()); return "posters/createPosterForm"; } } 우선 게시글 작성 페이지를 위한 컨트롤러에서 게시글 객체를 생성하여 함께 게시글 작성 페이지로 넘어가게 한다. createPosterForm.html 제목 작성자 내용 제출 th:object th:object로 form 내에 사용할 객체를 지정한다. th:field th:field 속성은 th:obje..
Maven이 아닌 SpringBoot와 Grandle로 김영한 선생님의 JPA 교재 예제를 따라해보는데 아래의 에러가 발생했다. No Persistence provider for EntityManager named 아래와 같이 EntityManagerFactory를 주입시켜 매니저를 생성하여 사용하면 된다. public class JpastudyApplication { static EntityManagerFactory emf; public JpastudyApplication(EntityManagerFactory emf) { this.emf = emf; } public static void main(String[] args) { SpringApplication.run(JpastudyApplication.c..
PosterRepository public interface PosterRepository { ... void deleteById(Long id); } PosterRepository 인터페이스에 게시글의 PK인 id를 넘겨 받는 deleteById 추상 메소드를 작성한다. JpaPosterRepository @Repository public class JpaPosterRepository implements PosterRepository{ private final EntityManager em; ... @Override public void deleteById(Long id) { Poster poster = em.find(Poster.class, id); em.remove(poster); } } Poste..
posterList.html ID title writer date 게시글 전체 출력 시 게시글 제목에 링크를 이용해 상세 보기 페이지를 요청한다. "/poster/read?id=1" 형식으로 PK를 이용해 원하는 게시글을 지정하여 GET 요청을 보낸다. 게시글들 출력 시 각 게시글의 제목에 해당하는 ID를 연결하여 GET 요청을 보내게 링크를 걸어둔다. 타임리프 링크 네이버
앞서 작성한 Poster 클래스에 날짜 데이터를 위한 코드 작성을 했다. Poster 클래스 @Entity public class Poster { ... private LocalDateTime regdate; ... } 자바에서 날짜, 시간을 다루는 클래스를 제공한다. 그 중에서 LocalDateTime을 사용했다. MySQL DB에 작성일 데이터를 위해 테이블을 새로 생성했으며 작성일은 DATETIME으로 사용했다. DATE 자료형은? 이라는 생각이 들었고 아래와 같이 요약할 수 있다. DATE: 날짜는 포함하나 시간은 포함하지 않음. EX) YYYY-MM-DD DATETIME: 날짜와 시간을 포함함. EX) YYYY-MM-DD HH:MM:SS Poster 테이블 CREATE TABLE poster (..