본문 바로가기
반응형

IT/Java318

JAVA TLS 접속 에러(The server selected protocol version TLS10,TLS11 is not accepted by client preferences) spring build를 하는데 데이터베이스에 접속 관련해서 제목과 같은 에러가 나왔다. 찾아보니 TLS 1.0 TLS1.1 로 접속을 못한다는 의미인것 같다. 자바에서 dbms로 접속하기 위함인것이라고 생각하고 JAVA_HOME경로에서 셋팅 파일을 찾아봤다. 자바 홈을 각자 위치에서 설치를 했겠지만 맥에서 자바를 새롭게 설치하거나 참고사이트처럼 설치를했다면 /Library/Java/JavaVirtualMachines/jdk-11.0.13.jdk 위치에 있을것이다. 해당 디렉토리에서 Contents/Home/conf/security를 들어가보면 java.security 라는 파일이 있을것이다. 자바 홈 안에 Contents 폴더가 없다면 find 명령어를 통해서 자바홈 안에 java.security 파일.. 2022. 3. 31.
JPA (getById / findById) 차이 JPA를 오랫동안 접하질 않아서 계속해서 새로운것을 알게되고 배워가는 재미에 요즘 빠져있다. 오늘 다뤄볼 내용은 JPA에서 repository를 통해서 id기준으로(pk일 경우) 데이터를 가져오는것에 대해서 다뤄볼것이다. 결론만 먼저 말하면 findbyid는 직접적으로 데이터베이스를 다녀오고 getbyid는 데이터베이스를 갔다오지 않는다. 둘의 차이는 데이터베이스에 접근을 직접 하느냐 안하느냐의 차이이다. 그렇기에 getbyid가 성능상 좀더 유리할수 있다. 그렇지만 언제 findbyid를 사용하느냐면 특정 id 값만 사용할 일이 있다면 getbyid가 유리하다. 이 말의 반대 의미는 다른 컬럼들을 사용을 못하기에 findbyid를 사용해서 다른 컬럼들의 값을 가져와야한다. 실제로 코드를 짜게 되면 @G.. 2022. 3. 18.
Spring 에서 IOC, AOP, DI 에 대하여 이번 포스팅에서는 SPRING의 핵심요소인 IOC, AOP, DI에 대해서 다뤄볼 것이다. 다른 특징들도 많지만 이 세가지는 스프링의 장점으로 많이 알려져있다. 하나씩 다뤄보도록 해보자. IOC(Inversion of Control) 한글로 직역하면 제어의 역전이다. Spring 에서는 Container라는 개념이 있는데, 이 컨테이너는 객체를 담는 용기이다. bean의 생성부터 소멸까지 생명주기를 관리하게 된다. Container가 bean을 관리해주기에 제어의 역전이라고 한다. 쉽게 말해서 스프링컨테이너가 필요에 따라 개발자 대신에 bean을 관리해주는 행위라고 생각하면 된다. AOP(Aspect Oriented Programming) 관점 지향 프로그래밍이라는 뜻으로 객체지향(OOP)과는 또다른 의.. 2022. 3. 9.
implements, extends 란? java를 사용해본 분들이라면 상속의 개념에 대해서는 들어봤을것이다. 그리고 사용해보지 않으신분들도 상속이라는게 뭔지는 알것이다. 프로그래밍언어에서 말하는 상속이란, 부모 클래스와 자식 클래스 사이에서 자식 클래스에서 부모 클래스의 기능을 가져다 쓰는것을 상속이라고 한다. 자바의 큰 특징중 하나는 OOP라는것인데, 이것은 객체지향프로그래밍의 약자이다. 객체 지향프로그래밍에서의 상속은 가장 당연하게 중요한 요소 중 하나이다. 그럼 implements랑 extends가 어떻게 다른지를 확인해보자. 둘다 사용법은 마찬가지로 클래스를 구현하면서 이어서 붙여주는 방식이다. implements 부모의 클래스를 현재 자식의 클래스 내에서 한번 재정의 해줄 필요가 있다. 우리가 아는 상속이라면 그냥 가져다 써야하는데 .. 2022. 2. 26.
JDK , JRE , JVM 차이? 이번 포스팅에서는 java를 사용하게 된다면 무조건 만나게 되는 이 jdk, jre, jvm에 대해서 설명을 해볼것이다. 용어의 관계는 JDK가 JRE,JVM을 포함하고 있고, JRE는 JVM을 포함하고 있다. 그림으로 본다면 다음과 같다. 작은것부터 jvm , jre , jdk 순서대로 하나하나 소개를 해보도록 할 것이다. JVM Java Virtual Machine 의 약자로 자바의 최대 강점중 하나는 jvm 이라는 자바 가상환경 어디서든 자바 코드를 돌릴수 있다는 점이다. 그러면서 추가적으로 메모리를 효율적으로 관리 및 최적화를 해주는데 이 작업을 가비지컬렉션 이라고 하여 jvm이 메모리를 관리하는 프로세스를 지칭하는 말이다. JRE Java Runtime Environment 의 약자로 자바 클래.. 2022. 2. 24.
JPA N+1 이란? ORM과 JPA에 대한 개념은 아래 참고 포스팅에 추가가 되어있으니 확인 바란다. 이 개념은 JPA를 사용하면서 콘솔 창에 보면 나오는 쿼리를 통해서 확인할수 있다. 예를들어 책과 도서관이라는 각각의 Entity 가 있다. 책에는 id과 name 과 library라는 변수들이 있고 library에는 @ManyToOne 이 걸려있다. 이럴경우 책 정보를 뽑을때 bookRepository.findBy1Id(id) 를 하면 결과를 가져올때 참조되는 library정보를 가져오게 된다. 먼저 sql에서 데이터를 가져오는걸 fetch라고 하는데 fetch에는 2가지 타입이 있다. 데이터가져오는것을 포함해서 데이터베이스의 실행단계가 궁금하면 아래 포스팅을 참고하도록 한다. eager 와 lazy이다. eager는 참.. 2022. 2. 11.
SpringBoot/JPA part.10 이번 포스팅은 CRUD 에서 마지막 delete에 관한 포스팅이다. 방법은 앞에서 Read를 할때와 비슷하다. id를 받아와서 그 id에 대한 값을 삭제할것이다. 시작은 controller 이고 delete 메서드를 사용할것이다. 다음과 같이 delete 관련 메서드를 작성한다. controller 메서드 추가 @DeleteMapping("delete") public void deleteBook(@RequestParam Long bookId) { Optional bookValue = bookRepository.findById(bookId); bookValue.ifPresent(selectUser->{ bookRepository.delete(selectUser); }); } param으로 id를 받아오고 .. 2022. 2. 8.
SpringBoot/JPA part.9 이번 포스팅은 CRUD 중에서 U update 순서다. 똑같이 controller에서 시작을 할것이다. update는 put메서드를 사용하게 된다. 방법은 id를 가지고 book 객체를 가져온 후에 바꿀 값을 함께 보내주며 그 값으로 대체를 하고 다시 저장해주는 방식으로 진행할 것이다. 먼저 controller에 put메서드를 추가한다. controller에 메서드 추가 @PutMapping("update") public String updateBook(@RequestParam Long bookId,@RequestBody Book book) { Optional bookValue = bookRepository.findById(bookId); bookValue.ifPresent(selectUser->{ se.. 2022. 2. 7.
SpringBoot/JPA part.8 이번 포스팅에서는 CRUD중에 Read에 대해서 실습을 해볼것이다. 한가지의 id값을 get 메서드를 보낼 것이고 그 id의 레코드를 가져와서 콘솔에 출력하는 것 까지 진행을 해보도록 하겠다. 시작은 controller에서 부터 시작이 되므로 create처럼 똑같이 controller에서 시작을 할것이다. controller에 아래와 같이 메서드를 추가 하였다. controller 추가 @GetMapping("read") public String findBook(@RequestParam Long bookId) { Optional book = bookRepository.findById(bookId); System.out.println(book); return null; } 메서드는 Get메서드를 사용하였고.. 2022. 2. 6.
반응형