목록전체 글 (718)
쌓고 쌓다
textarea 태그에 입력된 엔터(줄바꿈)을 서버에서 저장하고 화면에 뿌려주는 방법 textarea 태그에 작성한 내용에 엔터(줄바꿈)이 포함되어 있다면 어떻게 서버에 저장하고필요할때 화면에 엔터(줄바꿈)를 포함해서 뿌려줄 수 있을까? 먼저 서버에 사용자가 textarea에 작성한 내용을 전송해보자. const content = $("#comment").val();$.ajax("url", { type: "POST", contentType: "application/json", data: JSON.stringify({ content: content })})우선 서버에 ajax로 textarea의 내용을 POST 요청으로 전송하는 코드의 일부이다. 엔터를 포함한 위의 내용으로 서버에 전송을 해보자. 엔터로 ..
먼저 아래의 테스트 코드를 보자.@SpringBootTestclass ItemRepositoryTest { @Autowired ItemRepository itemRepository; @Autowired PlatformTransactionManager transactionManager; TransactionStatus status; @BeforeEach void beforeEach() { // 트랜잭션 시작 status = transactionManager.getTransaction(new DefaultTransactionDefinition()); } @AfterEach void afterEach() { //..
브랜치를 나눠서 커밋을 나눠서한 이후에추가적인 코드 작성후 main에 바로 Push하려고하니 문제가 발생했다... 문제 상황을 보자.. 아래는 원격 저장소(Remote)의 커밋 상황이다.커밋 "feat: 버킷리스트 상태 검색" 이후 2개의 커밋이 존재한다. 아래는 로컬 저장소(Local)의 커밋 상황이다.내가 추가적인 코드 작성 후 커밋을 2개 더 한 상황이다.커밋 "feat: 버킷리스트 상태 검색" 이후에 추가적인 코드 작성한 2개의 커밋이 존재한다. 원격 저장소와 로컬 저장소에 공통 커밋의 종점인"feat: 버킷리스트 상태 검색"을 Base라고 하겠다. 즉,원격 저장소에는 Base 이후에 2개의 커밋 A, B가 존재하는 상황이고로컬 저장소에는 Base 이후에 A, B의 커밋이 없이 추가적인 커밋 ..
1일 1커밋으로 깃허브에 잔디를 빼곡히 채우고 싶어서기능 구현이나 스타일 변경등의 커밋을 한번에 하지 않고미루고 종류별로 하루에 한개씩 커밋을 했다. 그런데 A 기능을 구현하고 그 클래스 또는 파일에서 B 기능을 위한 변경 사항이 있을때커밋 기록으로 A -> B를 남기기가 어려운 부분이 있다.그래서 A를 커밋하고 B를 위한 코드를 변경하고 커밋해야하는 부분이지만B를위한 코드의 변경 내용을 기억하거나 주석으로 남겨놓아 커밋을 미루기도 어려운 부분이다! 그래서 로컬에서 브랜치별로 기능을 구현하고 커밋을 해놓는다.그 커밋 내용을 1일 1커밋을 위해 하루에 하나씩 원격 저장소에 브랜치를 올리거나 main 브랜치에 합치면 된다...! 방법을 한번 보자~ 브랜치의 생성은 현재 로컬 저장소에 poster-achiev..
테스트 코드를 실행하는데 잘 되던 테스트 코드가 갑자기 안된다...!단건 검색 쿼리에 결과가 2개가 나온다고한다. 문제가 발생한 코드 라인이다.태그의 name을 검색하여 태그를 찾는 코드인데여기서 2개의 태그가 반환된다는 것이다. @BeforeEachpublic void setup() { Tag tag = new Tag(); tag.setName("여행"); tagRepository.save(tag);}테스트 코드의 @BeforeEach문에서 태그의 name이 "여행"인 엔티티를 저장한다. 그런데 이미 로컬 환경에서 태그의 name이 "여행"이 이미 존재하는 상황이다.그래서 단건 조회의 쿼리가 여러개의 결과를 반환하는 에러가 발생한 것이다. DB 테이블 생성시 제약조건에 name의..
게시글 검색 기능에 "img" 키워드로 검색을하자성공적으로 게시글 조회가 잘 되지만. 해당 게시글의 내용이나 제목에는 "img" 키워드를 포함하지 않는다. 문제 원인은 웹 에디터의 게시글의 내용을 태그와 함께 모든 정보를 DB에 저장하는데이것을 LIKE 연산자로 키워드 검색을 했기 때문이다. DB에 저장된 해당 게시글의 내용에는 태그를 포함하고 있기 때문에 검색이 된것이다. 위와 같이 순수 텍스트 내용만 담을 pure_content 컬럼을 추가해서태그 내용은 제외하고 저장하자. 웹 에디터 내용을 어떻게 파싱해서 순수 텍스트만 저장할까싶은데라이브러리를 사용하자. 자바에서 사용하는 Jsoup 라이브러리를 이용해 html을 파싱할 수 있다.https://jsoup.org/download Download a..
최종 목표는 다음과 같은 API 응답을 만들어내는 것이다. 게시글과 태그 기능을 만들고자 한다.게시글과 태그는 N:M 관계이지만중간에 poster_tag라는 테이블을 만들어1:N과 M:1 관계로 풀어서 다음과 같은 관계를 갖는 테이블을 만들어서 관리하고자 한다. poster과 poster_tag는 1:N 관계이다.poster_tag과 tag는 M:1 관계이다. 먼저 복합키 연관관계를 매핑해보자.복합키 연관관계 매핑복합키 : 두개 이상의 컬럼을 묶어 기본 키로 사용하는 것이다. 다음과 같은 테이블을 JPA로 복합키를 설정해보자!+---------------------+ +---------------------+ +---------------------+| poster ..
테스트 코드를 작성하며 Getter를 이용해 .get 메서드를 통해 개수나 엔티티를 조회할때@OneToMany, @ManyToOne과 같은 연관 관계를 맺은 엔티티를 조회하고자할때조회가 되지 않는 경우를 자주 겪었었다. 아마 이 글을 검색해서 들어온 여러분들도...테스트 코드에서 왜 연관 관계 매핑을 제대로 했는데 원하는대로 테스트를 통과하지 못할까싶어서 들어왔을 것 같다. 간단하게 이해를 돕기위해 다음과 같은 예시 테스트 코드를 작성했다.한번 읽어보자! 상황 파악!member(회원)을 저장하고member(회원)이 poster(게시글)를 작성한 상황이다.이때 회원이 작성한 게시글의 개수를 조회하고자 한다.@Test@DisplayName("예시")void test1() { // 회원 저장 Mem..