Java compiler level does not match the version of the installed Java project facet properties > Project Facets > Java 본인이 사용하고 있는 JAVA 버전으로 맞추기 JAVA/TROUBLE SHOOTING 2019. 12. 1. 18:20
JPA orphanRemoval 용도 @OneToMany(cascade = {CascadeType.ALL}, fetch = FetchType.EAGER, orphanRemoval = true) 보통 1:N 관계 테이블 설정할때 저렇게 옵션을 추가해준다. 자식 엔티티의 변경이 있다면 JPA 에서 자식엔티티의 수정은 insert update update delete 순으로 이어지는데 변경된 자식을 먼저 insert 하고 기존의 자식을 NULL로 update 한다. 그리고 orphanRemoval 옵션을 true 로 하면 기존 NULL처리된 자식을 DELETE 한다. PK(JoinColumn)값이 NULL로 변한 자식은 고아객체라고 하여 연결된 점이 없는 객체이다. orphanRemoval옵션은 바로 이 고아객체를 삭제해주는 역활을 한다. JAVA/JPA 2019. 11. 26. 16:27
A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance oneToMany save() 호출할때 위와 같은 에러 발생. one 관계 - Entity 에서 Many 관계 테이블 정의를 아래와 같이 했을텐데 @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER) @JoinColumn(name="userSeq") private Collection authorities = new ArrayList(); saveAll() 호출하기 전 아래와 같이 추가 해주면 된다. oneIntance.getAut.. JAVA/TROUBLE SHOOTING 2019. 11. 25. 16:19
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role JPA ontToMany 속성일 경우에 발생했던 에러 @OneToMany(fetch = FetchType.EAGER) fetch 추가로 해결. JAVA/TROUBLE SHOOTING 2019. 11. 25. 11:24
JPA oneToMany 단방향 관계 pk is not null 에러 처리 1. one 관계 테이블 생성 - PK값을 Mysql auto_increment로 지정 2. many 관계 테이블 생성 - FK값(one 관계 테이블 PK)이 존재한다. 3. 단방향 이므로 one 관계 Entity 생성 할때 아래와 같이 추가한다. @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) @JoinColumn(name="pk") private Collection manyTableEntity; 4. many 관계 Entity 는 FK값을 넣지 않는다. PK 칼럼을 선언하지 않는다. 5. 값을 전부 넣고 Repository 작성후 Save() 를 호출 하면 many 관계 테이블 insert 시에 not null 에러 발생 java.sql.SQ.. JAVA/TROUBLE SHOOTING 2019. 11. 22. 14:17
Spring Boot JPA 로그 설정 application.properties 설정 #jpa 로그 보기 spring.jpa.show-sql=true #jpa 로그 보기 좋게 보기 spring.jpa.properties.hibernate.format_sql=true #jpa ? 부분 보이기 logging.level.org.hibernate.type.descriptor.sql=TRACE JAVA/JPA 2019. 11. 21. 17:24
JPA No identifier specified for entity 해당 에러는 Entity 객체에 @id 가 하나도 없어서 발생하는 에러. PK에 해당하는 객체에 어노테이션을 하나 추가해준다. JAVA/JPA 2019. 11. 21. 15:39
JPA @IdClass 란? JPA 어노테이션 @IdClass 는 복합키 사용을 위해 쓴다. 칼럼을 여러개 묶어서 사용하는 복합키는 사용하기 전에 클래스를 별도로 하나 만들고 (=VO 클래스 하나 생성) 사용하는 테이블 상단에 해당 어노테이션을 적어놓고 사용. JAVA/JPA 2019. 11. 21. 15:35
JPA Entity CURRENT_TIMESTAMP 생성법 @Column(name = "timestamp", nullable = false, updatable = false, insertable = false, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP") public Timestamp timestamp; 위와 같이 만들면 CURRENT_TIMESTAMP 형식으로 만들어진다. JAVA/JPA 2019. 11. 20. 18:10
JPA Date 타입 포맷 변경 JPA @Entity 선언한 객체에서 Date 타입 포맷을 변경하고 싶을때, @DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss") 이렇게 어노테이션 했으나 동작이 안해서 아래와 같이 변경 @JsonFormat(shape= JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss", timezone="Asia/Seoul") 이렇게 하니 잘 동작한다. JAVA/JPA 2019. 11. 18. 14:31
Spring Security Authority 와 Role 사용법 스프링 시큐리티 적용하고 있는 입장에서 Authority 와 Role 의 관계와 Role 은 항상 어디서 적용되는 건지 헷갈렸다. 기본 설정을 적용하면 Authority테이블만 생성하는데 Role 관련된 설정이 없다. 찾아보니 Authority 테이블에 authority 칼럼값에 "ROLE_" + 권한 값 으로 하면 예) ROLE_ADMIN hasAuthority = ROLE_ADMIN hasRole = ADMIN 이렇게 처리 된다. 더 다른 사용법도 있겠지만 일단 이렇게 정리 JAVA/TROUBLE SHOOTING 2019. 11. 13. 15:07
JPA DB 저장시 한글 깨짐 spring boot -> jpa 적용했을때 한글이 깨지는 경우 application.properties 파일 spring.datasource.url=jdbc:mysql://127.0.0.1/portal?serverTimezone=Asia/Seoul&useSSL=false&characterEncoding=utf8 characterEncoding=utf8 매개변수 추가 JAVA/TROUBLE SHOOTING 2019. 11. 13. 14:56
spring.jpa.hibernate.naming.physical-strategy 전략 변경 JPA를 적용하고 나서 Entity(=VO) 생성 시 변수 명을 그대로 매핑 안하고 카멜을(UserName = user_name) 언더바 형식으로 자동 매핑해준다. 가끔 이 부분이 불편해서 변수 명과 DB칼럼명을 그대로 매핑 하게 하려면 application.properties 에 추가해준다. spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl 변수명 그대로 매핑해준다. JAVA/JPA 2019. 11. 12. 14:45
Spring Security HttpSecurity, WebSecurity 차이? 스프링 시큐리티 설정 중에 //패턴을 이용해서 접근막음 @Override protected void configure(HttpSecurity http) throws Exception {} //위에서 적용한 패턴의 제외한 접근 - 정적리소스, HTML 파일 허용처리 @Override public void configure(WebSecurity web) throws Exception {} HttpSecurity, WebSecurity 차이가 궁금했는데 실제로 사용 하는 것은 HttpSecurity 패턴은 보안처리 WebSecurity 패턴은 보안예외처리(정적리소스, HTML) JAVA/SOURCECODE 2019. 11. 8. 13:33
윈도우 Active Directory 연동 Ldap 과 유사한 Activce Directory(이하 ad) 처음 작성한 소스는 searchFilter를 2번해서 가져온 것이였는데 그렇게까지는 필요 없어서 수정하였다. 전반적인 프로세스는 아이디와 비밀번호로 ad목록 가져올수 있는 권한을 얻고 찾는 계정에 해당하는 samAccountName 값을 가져와 개수를 출력주는 소스이다. (0 아님 1 이겠지) 해당 사용자가 없으면 "data 52e"" 메시지가 나오기 때문에 리턴값을 0으로 받게끔 수정해야한다. import javax.naming.Context; import javax.naming.NamingEnumeration; import javax.naming.NamingException; import javax.naming.directory.Attr.. JAVA/SOURCECODE 2019. 11. 1. 17:47
REST API DOCS 응용 https://dev-elop.tistory.com/29 REST API DOCS 선정이유 Spring boot 설치 했더니 자동으로 들어있었다. 별도의 maven 설정을 안해도 됐다. 간단 개요 REST API를 문서화 한다 - HTML 형태로 내려준다. 서버(WAS) 구동한후 특정 URL접속 (docs/api-docs.html) J.. dev-elop.tistory.com 기본 테스트가 끝났다면 테스트한 것을 토대로 이쁜 HTML 화면을 위해 응용을 해보자. 참고 URL : http://woowabros.github.io/experience/2018/12/28/spring-rest-docs.html Spring Rest Docs 적용 - 우아한형제들 기술 블로그 안녕하세요? 우아한형제들에서 정산시스템.. JAVA/SOURCECODE 2019. 10. 29. 16:58
REST API DOCS 선정이유 Spring boot 설치 했더니 자동으로 들어있었다. 별도의 maven 설정을 안해도 됐다. 간단 개요 REST API를 문서화 한다 - HTML 형태로 내려준다. 서버(WAS) 구동한후 특정 URL접속 (docs/api-docs.html) Junit 성공 해야 문서가 작성된다 - 모든 API를 Junit 을 만들어야한다. 문서화 된 느낌(!)이 난다. 느낌이 나는 만큼 작성해야될게 많다. 여럿을 연동하면 더 잘 만들어진다. 하지만 귀찮다. maven install 을 하면 생성되므로 소스수정과 자동으로 연동 된다. 또 문서 수정 안해도 된다. 작성 테스트 혹, maven 설정이 안된 사람은 다른 블로그 참고바람. 기본 REST 호출 부터 테스트 (아래는 기본 서비스 테스트 양식) 다른 것보다.. JAVA/SOURCECODE 2019. 10. 29. 15:56
반복문의 속도 개선 반복문의 경우 1. for 2. while 3. do-while 3가지가 있습니다. while 의 경우 자칫하면 무한 루프가 생기므로, for문의 사용을 조금 더 추천합니다. for문의 사용시 메소드 호출에 관련되어 주의점이 하나 있습니다. for(int i=0; i< v.size(); i++) 위 코딩의 경우 v.size()가 반복되므로 좋지 않은 반복문이며 별도로 다음과 같이 선언해주는 것이 좋습니다. int s = v.size(); for(int i=0; i< s; i++) for문의 경우 위 방법 외에 3가지 방법이 있습니다. 1. for(int i=0; i< v.size(); i++) 2. int s = v.size(); for(int i=0; i< s; i++) 3. for(int i: v) .. JAVA/SOURCECODE 2019. 10. 27. 00:07
PrintWrite 한글깨짐 인코딩과 콘텐츠타입을 변경해서 해결했지만, 환경에 따라 다를수도 있으니 다른 글도 참고바랍니다. response.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=UTF-8"); PrintWriter writer = response.getWriter(); writer.print(); JAVA/TROUBLE SHOOTING 2019. 10. 26. 16:48