반응형 IT/Java394 이클립스 내에서 문자열 일괄 변경 개발을 하다보면 동일 프로젝트 내에서 폴더 이동은 괜찮지만 다른 프로젝트 안에 파일을 옮겨야하는 경우가 있다. 다른건 문제가 안되지만 package 부터 import 까지 경로를 싹다 바꿔줘야한다. 이럴때 사용할수 있는게 있다. 아래 참고 포스팅을 확인하면 그저 검색에 불과하지만 여기서 find 뿐 아니라 replace 까지 가능하다. 검색하는것처럼 바꿀 문자열을 찾고 아래 replace 버튼을 누르면 이렇게 나온다. 바꿀 문자열로 바꾸면 된다. 참고 포스팅 https://thenicesj.tistory.com/72 eclipse 프로젝트 내 특정 키워드 찾기 이클립스를 사용하면서 특정 단어나 메서드 등을 찾기 위해서 find, 찾기 기능을 다들 ctrl+f 로 많이 해봤을 것이다. 간단한 프로젝트라면 .. 2022. 12. 14. isNew method JPA에서 save 를 할 경우 persistence 상태에 따라서 insert 가 되거나 update 가 되게한다. save에 대한 내용은 아래 참고 포스팅 참고 바란다. 이 역할을 하는것이 isNew 메서드 이다. JPA에 기본적으로 구현되어있는 save 메서드를 보게 되면 @Transactional @Override public S save(S entity) { Assert.notNull(entity, "Entity must not be null."); if (entityInformation.isNew(entity)) { em.persist(entity); return entity; } else { return em.merge(entity); } } 상태에 따라 persis를 하거나 merge를 하.. 2022. 12. 12. Entity 에서 date관련 annotation 스프링에서 제공하는 어노테이션 중에 아래와 같은 어노테이션이 있다. import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; 만약 entity 에서 새로운 데이터를 생성할때 createdDate 와 LastModifyDate라는 컬럼이 있다고 가정해 본다면 결국 LocalDate.now() 라는 값으로 set을 해주며 builder를 하고 다양한 방법으로 modify 할때 LastModifyDate 컬럼을 현재 시간으로 s.. 2022. 12. 11. LinkedHashMap 이전에 포스팅에서 map과 set, list를 다룬적이 있는데 최근 linkedHashMap을 다루다가 해당 주제로 포스팅을 써본다. HashMap 은 hashcode 를 사용하기 때문에 순서가 일정하지 않다. LinkedHashMap 은 내부를 Double-Linked List 로 구성하여 HashMap 의 순서를 유지한다. HashMap 에서 상속받기 때문에 HashMap 의 모든 메소드를 사용할 수 있다. 순서 유지 데이터는 먼저 들어간 데이터가 무조건 앞에 위치하게 된다. forEach 문에서도 동일하다. Map map = new LinkedHashMap(); map.put("animal", "cat"); map.put("fruit", "apple"); System.out.println(map);.. 2022. 12. 9. Flush에 대해 EntityManager를 사용해 작업을 수행해도 commit을 하기 전까지는 작업의 결과들이 DB에 반영되지 않는다. 정확히는 "Flush가 호출되기 전에는 DB에 반영되지 않는다"가 맞다. Flush가 호출되면 영속성 컨텍스트 안에 보관되고있던 이전 작업들에 대한 결과가 실제 DB에 반영이 된다. (영속성 컨텍스트를 비우는 것이 아니라 영속성 컨텍스트의 변경내용을 DB에 적용시켜 주는 것이다) 영속성 컨텍스트를 Flush하는 방법 em.flush() > 직접 호출하는 것이다. transaction.commit() > 트랜잭션 커밋을 수행하면 플러시가 자동으로 호출된다. JPQL > JPQL 쿼리를 실행하면 플러시가 자동으로 호출된다. JPQL은 SQL로 번역되어 DB에 바로 접근하게 된다. 이 경우에.. 2022. 12. 8. JPA query Keyword (repository) 이전 포스팅에서 jpa 메서드 들을 간단하게 정리한 포스팅이 있다. 자세한 사항은 아래 참고 포스팅을 참고 바란다. jpa 메서드에 대해서 좀더 다뤄보려고 한다. 자료 출처는spring 공식 홈페이지 에서 docs에서 가져왔다. https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repository-query-keywords Spring Data JPA - Reference Documentation Example 119. Using @Transactional at query methods @Transactional(readOnly = true) interface UserRepository extends JpaRepository { Li.. 2022. 12. 6. JPA메서드 save 와 saveAndFlush 비교 이전 포스팅에서 jpa 에 대해서도 다뤄봤고 영속 방법중 하나인 더티체킹에 대해서도 다뤘다. 아래 참고 포스팅을 확인 바람. 이번 포스팅에서는 더티체킹이 아닌 merger 방법으로 데이터를 영속하는 메서드인 save메서드에 대해서 다뤄볼 것이다. 일단 @Transactional 어노테이션을 붙이지 않을 경우는 새로운 Entity를 만들고 save/saveAndFlush 로 저장을 한다음 set으로 entity 의 값을 변경해주고 db에서 값을 확인해보면 save를 쓰는 경우나나 saveAndFlush를 쓰는 경우나 둘다 set을 할 경우 update 가 되지 않는다. @Transactional 어노테이션을 붙이는 경우에 save와 saveAndFlush를 비교를 하면 똑같이 메서드 종료 후 update가.. 2022. 12. 5. spring annotation-driven 시 bean name 중복(충돌,conflicts) 해결 spring은 annotation-driven component scan 시 기본적으로 Bean 이름으로 id를 결정한다.(annotation으로 설정) 예를 들어 클래스명이 TestController 라면 id는 “testController” 로 결정된다. 이때 다른 패키지에서 동일한 이름을 가진 클래스(컴포넌트)가 중복으로 존재한다면 동일한 id 를 가지게 되며 아래와 같은 에러 메시지를 볼 수 있다. org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from file [.....\servlet-context.xml]; nested exception is org... 2022. 12. 4. JPA 더티체킹(Dirty Checking) 이란? JPA에 대해서는 아래 참고 포스팅을 참고하면 확인해 볼 수 있다. 이번 포스팅에서 다뤄볼 내용은 더티체킹이라는 개념이며 직역으로는 변경상태 감지라고 느낄 수 있다. JPA에서는 값을 데이터베이스와 영속시키기 위한 몇가지 방법이 있는데 지금까지 다뤄왔던 방법은 merge 방법이다. findbyid 로 값을 가져온 뒤 영속을 시켜둔 상태에서 필요시마다 save 메서드를 날리면서 id 값 기준으로 동일한 값이 있는지 체킹하고 있다면 update 없다면 insert를 날려주는 방식이다. 하지만 그렇게 되면 매번 쿼리를 날릴때마다 select insert / select update를 날리게 된다. 불필요한 데이터베이스 체킹이 한번씩 더 날아간다. 이럴 경우를 방지하려면 더티체킹이 돼야 한다. 간단하게 말하면 .. 2022. 12. 3. 이전 1 ··· 29 30 31 32 33 34 35 ··· 44 다음 반응형