Java
-
[JPA] JPA 꿀팁 저장소Java 2022. 12. 19. 15:30
1. Entity에 @NoargsConstructor의 AccessLevel이 Protected인 이유 https://erjuer.tistory.com/106 [JPA] Entity Class의 @NoargsConstructor (access = AccessLevel.PROTECTED) 실무에서 JPA를 활용하다보면 Entity 생성시 @NoargsConstructor (access = AccessLevel.PROTECTED) 이라는 Annotation을 붙여서 개발을 하게 된다. 이에 조금 더 정확히 이해하고자 이번 블로그 글로 언급하고자 한 erjuer.tistory.com 내부적으로 Proxy 사용과 관련이 있음 Private으로 처리하면 Proxy 생성 중 오류가 발생한다. 2. N + 1 발생하..
-
[Java] 자바 기초 다지기!Java 2022. 12. 14. 23:38
최근에 프론트(Vue.js)만 하다가 다시 API를 개발하게 되었는데.. 보는 것마다 새롭고 내가 자바를 너무 모르고 있다는 것을 깨달았다. 그래서 꾸준히 자바의 정석 책을 보면서 기초를 확실하게 다지고자 한다. 자바 Primitive type memory 리터럴 리터럴은 그 자체로 값을 의미하는 것. int year = 2022; // year : 변수 // 2022 : 리터럴 final int MAX_VALUE = 100; // MAX_VALUE : 상수 // 100 : 리터럴 인코딩과 디코딩 문자 'A'를 유니코드로 인코딩하면 65 반대로 65를 유니코드로 디코딩하면 문자 'A' 문자를 코드로 변환하는 것 문자 인코딩 코드를 문자로 변환하는 것 문자 디코딩 아스키 (ASCII) American St..
-
[JPA] JpaRepository, CrudRepository에 @Repository 없어도 되는 이유Java 2022. 12. 5. 15:17
https://www.inflearn.com/questions/110045/jparepository%EB%82%98-crudrepository-%EA%B0%99%EC%9D%80-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4%EC%97%90-repository-%EC%96%B4%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98%EC%9D%B4-%EC%95%88%EB%B6%99%EB%8A%94-%EC%9D%B4%EC%9C%A0%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%EA%B6%81%EA%B8%88%ED%95%A9%EB%8B%88%EB%8B%A4₩ 어떤 레퍼런스보다 믿음이 가기에 저장.
-
[자바/Java] val & varJava 2022. 11. 21. 10:12
val Java는 JavaScript 같은 동적 타이핑 언어와 다르게 변수를 선언할 때 타입을 명시해줘야 한다. 하지만 lombok에서 제공하는 val이라는 키워드를 사용하면 마치 동적 타이핑 언어처럼 변수를 선언할 수 있다. (final 키워드도 적용됨) 예시 val ids = new ArrayList(); // 아래와 같음 final ArrayList ids = new ArrayList(); 위 처럼 간결하게 코드를 작성할 수 있다. var var는 val에서 final 키워드가 제거된 것과 같다. (변수 재할당 가능) 참조 : https://blog.naver.com/hty018/222932828887
-
[자바/Java] 자바 메모리 구조 알아보기Java 2021. 8. 8. 16:51
Javac 자바 컴파일러 .java 파일 (소스 코드)를 .class 파일 (바이트 코드)로 컴파일 한다. Class Loader .class 파일을 Runtime Data Area로 로드(적재)시킨다. Method Area JVM이 시작될 때 생성되는 공간으로 바이트 코드가 Method Area에 저장된다. 클래스, 변수, static으로 선언한 변수가 저장되고 모든 쓰레드가 데이터를 공유하는 영역이다. Heap 동적으로 생성된(new 연산) 인스턴스 변수가 저장되는 공간이다. 가비지 컬렉터의 대상이 되는 공간이다. Stack 지역변수, 메서드의 매개변수(파라미터), 임시적으로 사용되는 변수, 메서드의 정보가 저장되는 영역이다. PC Register 쓰레드가 시작될 때 생성되며, 현재 수행중인 JVM의..
-
[자바/Java] 자바 JPA 알아보기Java 2021. 7. 25. 23:37
ORM (Object-Relational Mapping / 객체 관계 매핑) 이란? 객체와 DB의 데이터와 관계를 맺어주는 것을 ORM이라고 한다. 객체를 통해 간접적으로 DB의 데이터를 다룸으로써, 보다 더 객체지향적으로 프로그램을 설계하고 DB의 데이터를 쉽게 다룰 수 있다. ORM은 결국 객체와 디비 데이터의 연결관계를 맺어주는 것이므로 최종 동작하는 것은 쿼리문이다. JPA란? 자바 ORM 기술에 대한 표준명세, 자바에서 제공하는 ORM API이다. 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이며 인터페이스이기 때문에 실제로 동작하는 것은 아니며 대중적으로 JPA를 구현한 Hibernate를 구현체로 널리 사용한다. 영속성 컨텍스트 (Persistence Conte..
-
[자바/Java] 자바 빌더 패턴(Builder Pattern) 알아보기Java 2021. 7. 18. 01:59
오늘은 빌더 패턴 (Builder Pattern)에 대하여 알아볼 것이다. Person DTO public class Person{ private String name; private int age; private String address; public Person(String name){ this.name = name; } public Person(String name, int age){ this.name = name; this.age = age; } public Person(String name, int age, String address){ this.name = name; this.age = age; this.address = address; } } 위와 같은 클래스를 DTO로 활용한다고 가정하면..
-
[자바/Java] 자바 스트림 (Stream) 알아보기Java 2021. 6. 18. 11:27
스트림(Stream)이란 : 자바 8부터 추가된 컬렉션의 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자 스트림의 특징 람다식으로 요소 처리가 가능하다. 내부 반복자를 사용하므로 병렬 처리가 쉽다. 요소의 중간 처리와 최종 처리를 할 수 있다. 사용 예 List list = Arrays.asList("hong", "gom", "bong"); list.stream() .forEach(name -> System.out.println(name) ); stream() 메서드로 스트림 객체를 얻고 forEach() 안에 매개값 람다식을 통해 요소를 하나씩 콘솔에 출력한다. 이게 가능한 이유는 forEach() 메서드는 Consumer 함수적 인터페이스 타입의 매개값을 가지기 때문이다. flatM..
-
[자바/Java] 자바 접근 제한자 알아보기 (Access Modifier)Java 2021. 6. 18. 10:43
접근 제한자 : 객체의 멤버에게 접근 제한을 거는 키워드 자바 접근 제한자의 종류 public protected default private public 부터 순서대로 접근 제한이 강화된다. 접근 제한자 정리 표 접근 제한 적용 대상 접근할 수 없는 클래스 public 클래스, 필드, 생성자, 메서드 없음 protected 필드, 생성자, 메서드 자식 클래스가 아닌 다른 패키지에 소속된 클래스 default 클래스, 필드, 생성자, 메서드 다른 패키지에 소속된 클래스 private 필드, 생성자, 메서드 모든 외부 클래스 클래스의 접근 제한 : 클래스에 적용 가능한 접근 제한자는 public, default 단 두 가지 public : 동일 패키지뿐만 아니라 외부 패키지에서도 아무런 제한 없이 접근이 가..