Back-end

개발을 하다보면 Entity에서 필드를 만들 때 원시타입인 long 대신 래퍼클래스인 Long을 사용하는 걸 많이 봤을 것이다. 왜 long를 안쓰고 Long를 쓸까? 이 둘의 차이점은 무엇일까? 궁금해졌다. 바로 알아보자. ▶원시타입(Primitive type)과 래퍼클래스(Wrapper Class)란? 일단 원시타입은 뭐고 래퍼클래스는 뭘까? 이 사진을 보면 이해가 될 것이다. 기본자료형이 원시타입이고, 래퍼클래스는 원시타입을 객체화 한 것이다. 원시타입(기본자료형)은 언제나 값이 존재한다. 필드에서 초기화하면 디폴트 값으로 0에 준하는 값이 들어가며, 메소드나 클래스 내에서는 초기화 및 선언을 같이 해줘야 실행이 된다. (초기화만하면 에러 발생) 래퍼클래스는 값이 존재하지 않는 "NULL" 상태일 ..
Spring Data JPA에서 Entity에 기본 생성자가 필요한 이유가 무엇일까? @NoArgsConstructor(accsee = AccseeLevel.PROTECTED)를 왜 붙이는거지? 궁금해졌다. 궁금하면 공부해야지~ ▶Reflection이란? 그 전에 알아야하는것이 있다. Reflection은 Java에서 제공하는 API이다. Reflection은 구체적인 클래스 타입을 알지 못해도! 클래스의 메서드나, 타입, 변수들에 접근할 수 있도록 해주는 API이다. 아니? 이게 어떻게 가능하죠? 클래스나 메소드가 프라이빗하면요?? 그걸 알아보기 전에! Reflection이 무슨 의미인지 아는가? 반사라는 의미이다. 즉 클래스 자체를 조작하는것이 아니라, 반사된 클래스를 조작해서 클래스에 영향을 주는것..
Entity객체를 생성할 때 lombok의 @Builder를 많이 적용한다. @Builder를 사용할경우, 일반적으로 기본 생성자에 대한 접근 제어를 위해 @NoArgsConstructor(access = AccessLevel.PROTECTED) 를 사용한다. 이유: 무분별하게 생성되는 객체들을 한번 더 체크하면서 의도하지 않은 Entity 객체를 만드는 행위 방지! 근데 @Builder와 @NoArgsConstructor을 동시에 사용하면 컴파일 에러가 난다. ▶왜 컴파일 에러가 발생함?? @Builder를 통해 필요한 파라미터만 받아서 객체 생성 가능, 전체 파라미터를 받아서 객체 생성 가능 -> 전체 생성자가 없으면 당연히 에러가 발생함. ▷@NoArgsConstructor없이 @Builder만 사..
▶빌더패턴이 뭐지? 빌더패턴은 생성자로만 객체를 생성했을 때 문제를 해결하기 위한 패턴이다. ▶생성자로 객체 생성 생성자로만 객체 생성을 하면 코드가 복잡해지고 가독성이 떨어진다. public class Person { private String name; private int age; private String gender; private String address; public Person(String name, int age, String gender, String address) { this.name = name; this.age = age; this.gender = gender; this.address = address; } } 객체생성 Person person = new Person("John..
개발하다보면 여기저기 Lombok코드들이 많이 쓰인다. 어느순간부터 코드에 들어와있던 녀석들...을 알고써보면 좋을 것 같아서 글을 쓴다. 역시 개발은 공부하고 내가 아는걸 코드로 작성해야지 더 재미있는 것 같다. ▶시작하기 전, 생성자는 뭐지?? 생성자는 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메소드 이다. 인스턴스 변수의 초기화 작업에 사용되며, 인스턴스 생성시에 실행되어야 할 작업을 위해서도 사용된다. 생성자는 클래스 내에 선언되며, 메소드와 달리 리턴값이 없다. 또한 생성자의 이름은 클래스의 이름과 같아야한다. 생성자에는 기본생성자와 파라미터가 있는 생성자 두개가 존재한다. public class MemberDTO { private Long id; private String memberEm..
▶의존성주입(DI)이란? 사용자가 new키워드를 통해 객체를 생성하고 소멸시키는 과정 필요 없이 의존성주입을 해서 Spring Container가 Bean들의 생명 주기를 관리해주는 기능을 IoC , 제어의 역전이라고 한다. 이 기능을 사용하기 위해서는 우선 객체를 빈으로 등록해야한다. Bean 등록은 XML 설정 파일을 통해서도 할 수 있고, Annotation을 이용한 자바 코드를 통해서 등록할 수도 있다. https://learning-study.tistory.com/entry/Spring-Boot-ApplicationContext%EB%9E%80-ApplicationContext-Interface%EB%A5%BC-%EA%B5%AC%ED%98%84%ED%95%98%EA%B3%A0-%EC%9E%88%..
LearningStudy
'Back-end' 카테고리의 글 목록